diff --git a/dbt_project.yml b/dbt_project.yml index 563cd47..ab42637 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -72,8 +72,8 @@ vars: config: # The keys correspond to dbt profiles and are case sensitive dev: - API_INTEGRATION: AWS_LIVE_QUERY_STG - EXTERNAL_FUNCTION_URI: yn4219e0o6.execute-api.us-east-1.amazonaws.com/stg/ + API_INTEGRATION: AWS_LIVEQUERY_API_STG_V2 + EXTERNAL_FUNCTION_URI: xi7ila2p66.execute-api.us-east-1.amazonaws.com/stg/ ROLES: - INTERNAL_DEV MAX_BATCH_ROWS: 10 @@ -91,4 +91,4 @@ vars: EXTERNAL_FUNCTION_URI: dlcb3tpiz8.execute-api.us-east-1.amazonaws.com/hosted/ ROLES: - DATA_READER - MAX_BATCH_ROWS: 10 \ No newline at end of file + MAX_BATCH_ROWS: 10 diff --git a/macros/core/_live.yaml.sql b/macros/core/_live.yaml.sql index ccd4854..49ceba4 100644 --- a/macros/core/_live.yaml.sql +++ b/macros/core/_live.yaml.sql @@ -31,6 +31,24 @@ NOT NULL sql: udf_api +- name: {{ schema }}.udf_api_sync + signature: + - [method, STRING] + - [url, STRING] + - [headers, OBJECT] + - [DATA, VARIANT] + - [user_id, STRING] + - [SECRET, STRING] + return_type: VARIANT + func_type: EXTERNAL + api_integration: '{{ var("API_INTEGRATION") }}' + max_batch_rows: '1' + headers: + - 'fsc-quantum-execution-mode': 'sync' + options: | + NOT NULL + sql: 'v2/udf_api' + - name: {{ schema }}.udf_api_async signature: - [method, STRING] @@ -43,8 +61,10 @@ func_type: EXTERNAL api_integration: '{{ var("API_INTEGRATION") }}' max_batch_rows: '1' + headers: + - 'fsc-quantum-execution-mode': 'async' options: | NOT NULL - sql: 'v2/udf_api_async' + sql: 'v2/udf_api' {% endmacro %} diff --git a/macros/core/live.yaml.sql b/macros/core/live.yaml.sql index 69b9d0f..de265c2 100644 --- a/macros/core/live.yaml.sql +++ b/macros/core/live.yaml.sql @@ -21,36 +21,6 @@ secret_name ) -- name: {{ schema }}.udf_api - signature: - - [method, STRING] - - [url, STRING] - - [headers, OBJECT] - - [data, VARIANT] - - [user_id, STRING] - - [secret_name, STRING] - - [is_async, BOOLEAN] - return_type: VARIANT - options: | - VOLATILE - sql: | - SELECT - CASE COALESCE(IS_ASYNC, FALSE) - WHEN TRUE - THEN - -- Async execution: run async function then test_requests - utils.udf_redirect_s3_presigned_url( - _live.udf_api_async( - METHOD, URL, HEADERS, DATA, USER_ID, SECRET_NAME - ):s3_presigned_url :: STRING - ):data[0][1] - ELSE - -- Default execution: run regular function - _live.udf_api( - METHOD, URL, HEADERS, DATA, USER_ID, SECRET_NAME - ) - END AS results - - name: {{ schema }}.udf_api signature: - [method, STRING] @@ -160,6 +130,42 @@ secret_name ) +- name: {{ schema }}.udf_api_v2 + signature: + - [method, STRING] + - [url, STRING] + - [headers, OBJECT] + - [data, VARIANT] + - [secret_name, STRING] + return_type: VARIANT + options: | + VOLATILE + COMMENT = $$Executes an LiveQuery Sync or Async Externall Function.$$ + sql: | + SELECT result + FROM ( + SELECT + utils.udf_redirect_s3_presigned_url( + _live.udf_api_async(method, url, headers, data, _utils.UDF_WHOAMI(), secret_name) + :s3_presigned_url::STRING + ):data[0][1] as result + WHERE LOWER(COALESCE( + headers:"fsc-quantum-execution-mode"::STRING, + headers:"Fsc-Quantum-Execution-Mode"::STRING, + headers:"FSC-QUANTUM-EXECUTION-MODE"::STRING + )) = 'async' + + UNION ALL + + SELECT + _live.udf_api_sync(method, url, headers, data, _utils.UDF_WHOAMI(), secret_name) as result + WHERE LOWER(COALESCE( + headers:"fsc-quantum-execution-mode"::STRING, + headers:"Fsc-Quantum-Execution-Mode"::STRING, + headers:"FSC-QUANTUM-EXECUTION-MODE"::STRING + )) != 'async' + ) + - name: {{ schema }}.udf_rpc signature: - [blockchain, STRING]