From f8e935dde0ee91ceff71d6e4a23961fad625252e Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:12:49 +0200 Subject: [PATCH 1/7] introduce serial pk on default values solves #341 --- datamodel/changelogs/0001/14_default_values.sql | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/datamodel/changelogs/0001/14_default_values.sql b/datamodel/changelogs/0001/14_default_values.sql index 1c51bce3a..3137cd337 100644 --- a/datamodel/changelogs/0001/14_default_values.sql +++ b/datamodel/changelogs/0001/14_default_values.sql @@ -1,10 +1,13 @@ CREATE TABLE tww_od.default_values ( - fieldname text NOT NULL, + id serial, + fieldname text NOT NULL, value_obj_id varchar(16), - CONSTRAINT pkey_tww_sys_default_values_fieldname PRIMARY KEY (fieldname) + CONSTRAINT pkey_tww_sys_default_values_id PRIMARY KEY (id) ); + CREATE UNIQUE INDEX in_od_default_values_fieldname ON tww_od.default_values USING btree (fieldname ASC NULLS LAST); + -- function for retrieving default obj_id CREATE OR REPLACE FUNCTION tww_sys.get_default_values(field_name text) RETURNS varchar(16) AS @@ -39,7 +42,7 @@ BEGIN LEFT JOIN information_schema.tables t ON c.table_name = t.table_name and c.table_schema = t.table_schema - WHERE c.column_name IN ('fk_provider','fk_dataowner') + WHERE c.column_name IN ('fk_provider','fk_dataowner','fk_owner','fk_dataprovider ') and c.table_schema ='tww_od' and t.table_type = 'BASE TABLE' LOOP From be7647f9398989f55500eb7982c142669adf410a Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:16:50 +0200 Subject: [PATCH 2/7] alter for app too --- datamodel/app/view/set_default_value_for_views.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datamodel/app/view/set_default_value_for_views.sql b/datamodel/app/view/set_default_value_for_views.sql index 0cd5c5a29..e21cdf921 100644 --- a/datamodel/app/view/set_default_value_for_views.sql +++ b/datamodel/app/view/set_default_value_for_views.sql @@ -12,7 +12,7 @@ BEGIN LEFT JOIN information_schema.tables t ON c.table_name = t.table_name AND c.table_schema = t.table_schema - WHERE c.column_name IN ('fk_provider','fk_dataowner') + WHERE c.column_name IN (SELECT fieldname FROM tww_od.default_values) AND c.table_schema ='tww_app' AND t.table_type = 'VIEW' LOOP From 5ff4b738dfedc868e56d0c2ab6141cf408115b0e Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 26 Jul 2024 15:28:33 +0200 Subject: [PATCH 3/7] remove not null --- datamodel/changelogs/0001/14_default_values.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datamodel/changelogs/0001/14_default_values.sql b/datamodel/changelogs/0001/14_default_values.sql index 3137cd337..2a21c3edf 100644 --- a/datamodel/changelogs/0001/14_default_values.sql +++ b/datamodel/changelogs/0001/14_default_values.sql @@ -1,7 +1,7 @@ CREATE TABLE tww_od.default_values ( id serial, - fieldname text NOT NULL, + fieldname text, value_obj_id varchar(16), CONSTRAINT pkey_tww_sys_default_values_id PRIMARY KEY (id) ); From 2497ee2f75757e4428caa91866842094c2cc2f36 Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 26 Jul 2024 15:41:06 +0200 Subject: [PATCH 4/7] treat fetchall as tuples --- plugin/teksi_wastewater/utils/database_utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/teksi_wastewater/utils/database_utils.py b/plugin/teksi_wastewater/utils/database_utils.py index 97dca18f8..704251923 100644 --- a/plugin/teksi_wastewater/utils/database_utils.py +++ b/plugin/teksi_wastewater/utils/database_utils.py @@ -196,11 +196,11 @@ def check_fk_defaults() -> List[str]: defaults = [] vals = [] - for item in DatabaseUtils.fetchall( + for row in DatabaseUtils.fetchall( "SELECT fieldname,value_obj_id from tww_od.default_values;" ): - defaults.append(item["fieldname"]) - vals.append(item["value_obj_id"]) + defaults.append(item[0]) + vals.append(item[1]) msg_list = [] if None in vals: From f0e7464690a61d3227be9ee78f8de999ef9131f3 Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 2 Aug 2024 21:32:10 +0200 Subject: [PATCH 5/7] rename iterator --- plugin/teksi_wastewater/utils/database_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/teksi_wastewater/utils/database_utils.py b/plugin/teksi_wastewater/utils/database_utils.py index 704251923..e97619570 100644 --- a/plugin/teksi_wastewater/utils/database_utils.py +++ b/plugin/teksi_wastewater/utils/database_utils.py @@ -196,7 +196,7 @@ def check_fk_defaults() -> List[str]: defaults = [] vals = [] - for row in DatabaseUtils.fetchall( + for igem in DatabaseUtils.fetchall( "SELECT fieldname,value_obj_id from tww_od.default_values;" ): defaults.append(item[0]) From 85cb5b5158c809d1a35542bff28e9f241d94cef8 Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Fri, 2 Aug 2024 21:32:37 +0200 Subject: [PATCH 6/7] typo --- plugin/teksi_wastewater/utils/database_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/teksi_wastewater/utils/database_utils.py b/plugin/teksi_wastewater/utils/database_utils.py index e97619570..6e8d71c70 100644 --- a/plugin/teksi_wastewater/utils/database_utils.py +++ b/plugin/teksi_wastewater/utils/database_utils.py @@ -196,7 +196,7 @@ def check_fk_defaults() -> List[str]: defaults = [] vals = [] - for igem in DatabaseUtils.fetchall( + for item in DatabaseUtils.fetchall( "SELECT fieldname,value_obj_id from tww_od.default_values;" ): defaults.append(item[0]) From fa1646b968803686e55772a3deb96a5e5becfb6c Mon Sep 17 00:00:00 2001 From: cymed <102035587+cymed@users.noreply.github.com> Date: Mon, 5 Aug 2024 15:56:00 +0200 Subject: [PATCH 7/7] do not check for fk_dataprovider field does not exist in od --- datamodel/changelogs/0001/14_default_values.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datamodel/changelogs/0001/14_default_values.sql b/datamodel/changelogs/0001/14_default_values.sql index 2a21c3edf..d5579523e 100644 --- a/datamodel/changelogs/0001/14_default_values.sql +++ b/datamodel/changelogs/0001/14_default_values.sql @@ -28,7 +28,7 @@ $BODY$ LANGUAGE plpgsql STABLE SECURITY DEFINER COST 100; --- Set defaults on all fk_provider,fk_dataowner +-- Set defaults on all fk_provider,fk_dataowner,fk_owner DO $do$ DECLARE tbl text; @@ -42,7 +42,7 @@ BEGIN LEFT JOIN information_schema.tables t ON c.table_name = t.table_name and c.table_schema = t.table_schema - WHERE c.column_name IN ('fk_provider','fk_dataowner','fk_owner','fk_dataprovider ') + WHERE c.column_name IN ('fk_provider','fk_dataowner','fk_owner') and c.table_schema ='tww_od' and t.table_type = 'BASE TABLE' LOOP