From a000ce04ad4186830e196599f551bfa6f7f89525 Mon Sep 17 00:00:00 2001 From: Julius Remigio <14811322+juls858@users.noreply.github.com> Date: Tue, 23 Jan 2024 13:09:56 -0800 Subject: [PATCH] LiveQuery udf_api support for arrays in data arg (#83) --- macros/core/_live.yaml.sql | 2 +- macros/core/live.yaml.sql | 8 ++++---- macros/tests/udfs.sql | 2 +- models/deploy/core/live.yml | 27 +++++++++++++++++++++++++++ models/live__allow_list.sql | 2 +- 5 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 models/deploy/core/live.yml diff --git a/macros/core/_live.yaml.sql b/macros/core/_live.yaml.sql index e1fa6d5..5a698a8 100644 --- a/macros/core/_live.yaml.sql +++ b/macros/core/_live.yaml.sql @@ -5,7 +5,7 @@ - [method, STRING] - [url, STRING] - [headers, OBJECT] - - [DATA, OBJECT] + - [DATA, VARIANT] - [user_id, STRING] - [SECRET, STRING] return_type: VARIANT diff --git a/macros/core/live.yaml.sql b/macros/core/live.yaml.sql index 32b5346..e5988f0 100644 --- a/macros/core/live.yaml.sql +++ b/macros/core/live.yaml.sql @@ -5,7 +5,7 @@ - [method, STRING] - [url, STRING] - [headers, OBJECT] - - [data, OBJECT] + - [data, VARIANT] - [secret_name, STRING] return_type: VARIANT options: | @@ -27,7 +27,7 @@ - [method, STRING] - [url, STRING] - [headers, OBJECT] - - [data, OBJECT] + - [data, VARIANT] return_type: VARIANT options: | NOT NULL @@ -46,7 +46,7 @@ - name: {{ schema }}.udf_api signature: - [url, STRING] - - [data, OBJECT] + - [data, VARIANT] return_type: VARIANT options: | NOT NULL @@ -65,7 +65,7 @@ - name: {{ schema }}.udf_api signature: - [url, STRING] - - [data, OBJECT] + - [data, VARIANT] - [secret_name, STRING] return_type: VARIANT options: | diff --git a/macros/tests/udfs.sql b/macros/tests/udfs.sql index a18d0b4..63d6774 100644 --- a/macros/tests/udfs.sql +++ b/macros/tests/udfs.sql @@ -28,7 +28,7 @@ test AS $${{ context ~ "\n" }}SELECT {{ call ~ "\n" }};$$ AS sql FROM test WHERE NOT {{ assertion }} - {%- if not loop.last -%} + {%- if not loop.last %} UNION ALL {%- endif -%} {%- endfor -%} diff --git a/models/deploy/core/live.yml b/models/deploy/core/live.yml new file mode 100644 index 0000000..cb4bbf1 --- /dev/null +++ b/models/deploy/core/live.yml @@ -0,0 +1,27 @@ +version: 2 +models: + - name: live + columns: + - name: udf_api + tests: + - test_udf: + name: test__live_udf_api_post_data_object + args: | + 'https://httpbin.org/post', {'foo': 'bar'} + assertions: + - result:data.json is not null + - result:data.json = OBJECT_CONSTRUCT('foo', 'bar') + - test_udf: + name: test__live_udf_api_post_data_array + args: | + 'https://httpbin.org/post', ['foo', 'bar'] + assertions: + - result:data.json is not null + - result:data.json = ARRAY_CONSTRUCT('foo', 'bar') + - test_udf: + name: test__live_udf_api_post_data_string + args: | + 'https://httpbin.org/post', 'foo'::VARIANT + assertions: + - result:data.json is not null + - result:data.json = 'foo' \ No newline at end of file diff --git a/models/live__allow_list.sql b/models/live__allow_list.sql index 1ebd266..611fda3 100644 --- a/models/live__allow_list.sql +++ b/models/live__allow_list.sql @@ -1,8 +1,8 @@ +-- depends_on: {{ ref('live') }} {{ config( materialized = 'view', grants = {'+select': fromyaml(var('ROLES'))} ) }} - SELECT '*.' || t.value AS allowed_domains FROM table(flatten(input => {{ this.database }}.live.udf_allow_list())) AS t ORDER BY