From 296f8cb5f175850060e81233242ed17a72e9a27c Mon Sep 17 00:00:00 2001 From: adlerhurst <27845747+adlerhurst@users.noreply.github.com> Date: Mon, 6 Jan 2025 10:46:36 +0100 Subject: [PATCH] try using events as param --- cmd/setup/44/01_table_definition.sql | 1 + .../03_01_create_reduce_added_function.sql | 21 +++---- ...e_reduce_default_language_set_function.sql | 18 +++--- ..._03_create_reduce_project_set_function.sql | 18 +++--- ..._04_create_reduce_console_set_function.sql | 21 +++---- ...create_reduce_default_org_set_function.sql | 18 +++--- .../03_06_create_reduce_updated_function.sql | 18 +++--- .../03_07_create_reduce_removed_function.sql | 6 +- .../cockroach/04_create_trigger_function.sql | 59 ++++--------------- 9 files changed, 61 insertions(+), 119 deletions(-) diff --git a/cmd/setup/44/01_table_definition.sql b/cmd/setup/44/01_table_definition.sql index c146eaa3533..4c3e60fd96c 100644 --- a/cmd/setup/44/01_table_definition.sql +++ b/cmd/setup/44/01_table_definition.sql @@ -4,6 +4,7 @@ CREATE TABLE IF NOT EXISTS instances ( , change_date TIMESTAMPTZ NOT NULL , creation_date TIMESTAMPTZ NOT NULL , latest_position NUMERIC NOT NULL + , latest_in_position_order INT2 NOT NULL , default_org_id TEXT , iam_project_id TEXT , console_client_id TEXT diff --git a/cmd/setup/44/cockroach/03_01_create_reduce_added_function.sql b/cmd/setup/44/cockroach/03_01_create_reduce_added_function.sql index fc3c53a4e53..8794870c35a 100644 --- a/cmd/setup/44/cockroach/03_01_create_reduce_added_function.sql +++ b/cmd/setup/44/cockroach/03_01_create_reduce_added_function.sql @@ -1,11 +1,6 @@ -CREATE OR REPLACE FUNCTION reduce_instance_added( - id TEXT - , "name" TEXT - , creation_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_added("event" RECORD) RETURNS VOID -LANGUAGE PLpgSQL +LANGUAGE SQL AS $$ BEGIN INSERT INTO instances ( @@ -14,12 +9,14 @@ BEGIN , creation_date , change_date , latest_position + , latest_in_position_order ) VALUES ( - id - , "name" - , creation_date - , creation_date - , "position" + (event).aggregate_id + , (event).payload->>'name' + , (event).created_at + , (event).created_at + , (event).position + , (event).in_tx_order::INT2 ) ON CONFLICT (id) DO NOTHING; END; diff --git a/cmd/setup/44/cockroach/03_02_create_reduce_default_language_set_function.sql b/cmd/setup/44/cockroach/03_02_create_reduce_default_language_set_function.sql index d2e42e5cae3..92cf2e52e5a 100644 --- a/cmd/setup/44/cockroach/03_02_create_reduce_default_language_set_function.sql +++ b/cmd/setup/44/cockroach/03_02_create_reduce_default_language_set_function.sql @@ -1,19 +1,15 @@ -CREATE OR REPLACE FUNCTION reduce_instance_default_language_set( - instance_id TEXT - , "language" TEXT - , change_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_default_language_set("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ BEGIN UPDATE instances SET - default_language = "language" - , change_date = change_date - , latest_position = "position" + default_language = (event).payload->>'language' + , change_date = (event).created_at + , latest_position = (event).position + , latest_in_position_order = (event).in_tx_order::INT2 WHERE - id = instance_id - AND latest_position <= "position"; + id = (event).aggregate_id + AND (latest_position, latest_in_position_order) < ((event).position, (event).in_tx_order::INT2); END; $$; diff --git a/cmd/setup/44/cockroach/03_03_create_reduce_project_set_function.sql b/cmd/setup/44/cockroach/03_03_create_reduce_project_set_function.sql index 62a543709bc..0d34b6f3970 100644 --- a/cmd/setup/44/cockroach/03_03_create_reduce_project_set_function.sql +++ b/cmd/setup/44/cockroach/03_03_create_reduce_project_set_function.sql @@ -1,19 +1,15 @@ -CREATE OR REPLACE FUNCTION reduce_instance_project_set( - instance_id TEXT - , project_id TEXT - , change_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_project_set("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ BEGIN UPDATE instances SET - iam_project_id = project_id - , change_date = change_date - , latest_position = "position" + iam_project_id = (event).payload->>'iamProjectId' + , change_date = (event).created_at + , latest_position = (event).position + , latest_in_position_order = (event).in_tx_order::INT2 WHERE - id = instance_id - AND latest_position <= "position"; + id = (event).aggregate_id + AND (latest_position, latest_in_position_order) < ((event).position, (event).in_tx_order::INT2); END; $$; diff --git a/cmd/setup/44/cockroach/03_04_create_reduce_console_set_function.sql b/cmd/setup/44/cockroach/03_04_create_reduce_console_set_function.sql index 100b8006a92..b988dcaa490 100644 --- a/cmd/setup/44/cockroach/03_04_create_reduce_console_set_function.sql +++ b/cmd/setup/44/cockroach/03_04_create_reduce_console_set_function.sql @@ -1,21 +1,16 @@ -CREATE OR REPLACE FUNCTION reduce_instance_console_set( - instance_id TEXT - , app_id TEXT - , client_id TEXT - , change_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_console_set("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ BEGIN UPDATE instances SET - console_app_id = app_id - , console_client_id = client_id - , change_date = change_date - , latest_position = "position" + console_app_id = (event).payload->>'appId' + , console_client_id = (event).payload->>'clientId' + , change_date = (event).created_at + , latest_position = (event).position + , latest_in_position_order = (event).in_tx_order::INT2 WHERE - id = instance_id - AND latest_position <= "position"; + id = (event).aggregate_id + AND (latest_position, latest_in_position_order) < ((event).position, (event).in_tx_order::INT2); END; $$; diff --git a/cmd/setup/44/cockroach/03_05_create_reduce_default_org_set_function.sql b/cmd/setup/44/cockroach/03_05_create_reduce_default_org_set_function.sql index fc725674e3b..340b644d45b 100644 --- a/cmd/setup/44/cockroach/03_05_create_reduce_default_org_set_function.sql +++ b/cmd/setup/44/cockroach/03_05_create_reduce_default_org_set_function.sql @@ -1,19 +1,15 @@ -CREATE OR REPLACE FUNCTION reduce_instance_default_org_set( - instance_id TEXT - , org_id TEXT - , change_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_default_org_set("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ BEGIN UPDATE instances SET - default_org_id = org_id - , change_date = change_date - , latest_position = "position" + default_org_id = (event).payload->>'orgId' + , change_date = (event).created_at + , latest_position = (event).position + , latest_in_position_order = (event).in_tx_order::INT2 WHERE - id = instance_id - AND latest_position <= "position"; + id = (event).aggregate_id + AND (latest_position, latest_in_position_order) < ((event).position, (event).in_tx_order::INT2); END; $$; diff --git a/cmd/setup/44/cockroach/03_06_create_reduce_updated_function.sql b/cmd/setup/44/cockroach/03_06_create_reduce_updated_function.sql index 1c72d9ff424..4f0c46e9440 100644 --- a/cmd/setup/44/cockroach/03_06_create_reduce_updated_function.sql +++ b/cmd/setup/44/cockroach/03_06_create_reduce_updated_function.sql @@ -1,19 +1,15 @@ -CREATE OR REPLACE FUNCTION reduce_instance_changed( - instance_id TEXT - , "name" TEXT - , change_date TIMESTAMPTZ - , "position" NUMERIC -) +CREATE OR REPLACE FUNCTION reduce_instance_changed("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ BEGIN UPDATE instances SET - "name" = $2 - , change_date = change_date - , latest_position = "position" + "name" = (event).payload->>'name' + , change_date = (event).created_at + , latest_position = (event).position + , latest_in_position_order = (event).in_tx_order::INT2 WHERE - id = instance_id - AND latest_position <= "position"; + id = (event).aggregate_id + AND (latest_position, latest_in_position_order) < ((event).position, (event).in_tx_order::INT2); END; $$; diff --git a/cmd/setup/44/cockroach/03_07_create_reduce_removed_function.sql b/cmd/setup/44/cockroach/03_07_create_reduce_removed_function.sql index a6f3a2f8ec9..be2680f21a3 100644 --- a/cmd/setup/44/cockroach/03_07_create_reduce_removed_function.sql +++ b/cmd/setup/44/cockroach/03_07_create_reduce_removed_function.sql @@ -1,6 +1,4 @@ -CREATE OR REPLACE FUNCTION reduce_instance_removed( - instance_id TEXT -) +CREATE OR REPLACE FUNCTION reduce_instance_removed("event" eventstore.events2) RETURNS VOID LANGUAGE PLpgSQL AS $$ @@ -8,6 +6,6 @@ BEGIN DELETE FROM instances WHERE - id = instance_id; + id = (event).aggregate_id; END; $$; diff --git a/cmd/setup/44/cockroach/04_create_trigger_function.sql b/cmd/setup/44/cockroach/04_create_trigger_function.sql index 92a2e3d9516..111467d9381 100644 --- a/cmd/setup/44/cockroach/04_create_trigger_function.sql +++ b/cmd/setup/44/cockroach/04_create_trigger_function.sql @@ -4,52 +4,19 @@ LANGUAGE PLpgSQL AS $$ BEGIN IF (NEW).event_type = 'instance.added' THEN - SELECT reduce_instance_added( - (NEW).aggregate_id - , (NEW).payload->>'name'::TEXT - , (NEW).created_at - , (NEW).position - ); - ELSIF (NEW).event_type = 'instance.changed' THEN - SELECT reduce_instance_changed( - (NEW).aggregate_id - , (NEW).payload->>'name'::TEXT - , (NEW).created_at - , (NEW).position - ); - ELSIF (NEW).event_type = 'instance.removed' THEN - SELECT reduce_instance_removed( - (NEW).aggregate_id - ); - ELSIF (NEW).event_type = 'instance.default.language.set' THEN - SELECT reduce_instance_default_language_set( - (NEW).aggregate_id - , (NEW).payload->>'language'::TEXT - , (NEW).created_at - , (NEW).position - ); - ELSIF (NEW).event_type = 'instance.default.org.set' THEN - SELECT reduce_instance_default_org_set( - (NEW).aggregate_id - , (NEW).payload->>'orgId'::TEXT - , (NEW).created_at - , (NEW).position - ); - ELSIF (NEW).event_type = 'instance.iam.project.set' THEN - SELECT reduce_instance_project_set( - (NEW).aggregate_id - , (NEW).payload->>'iamProjectId'::TEXT - , (NEW).created_at - , (NEW).position - ); - ELSIF (NEW).event_type = 'instance.iam.console.set' THEN - SELECT reduce_instance_console_set( - (NEW).aggregate_id - , (NEW).payload->>'appId'::TEXT - , (NEW).payload->>'clientId'::TEXT - , (NEW).created_at - , (NEW).position - ); + SELECT reduce_instance_added(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.changed' THEN + -- SELECT reduce_instance_changed(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.removed' THEN + -- SELECT reduce_instance_removed(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.default.language.set' THEN + -- SELECT reduce_instance_default_language_set(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.default.org.set' THEN + -- SELECT reduce_instance_default_org_set(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.iam.project.set' THEN + -- SELECT reduce_instance_project_set(NEW::eventstore.events2); + -- ELSIF (NEW).event_type = 'instance.iam.console.set' THEN + -- SELECT reduce_instance_console_set(NEW::eventstore.events2); END IF; RETURN NULL; END