Skip to content

Commit 63e9b76

Browse files
authored
Merge branch 'main' into seqset-citations
2 parents a1b9f03 + e539e8a commit 63e9b76

212 files changed

Lines changed: 6772 additions & 3466 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ updates:
44
directory: /
55
schedule:
66
interval: weekly
7+
ignore:
8+
- dependency-name: "dtolnay/rust-toolchain"
9+
# See https://github.com/loculus-project/loculus/pull/6516#issuecomment-4564199837
710
- package-ecosystem: npm
811
directory: website/
912
schedule:
@@ -15,8 +18,6 @@ updates:
1518
versions: [ ">=5.0.0" ]
1619
- dependency-name: "@mui/material"
1720
- dependency-name: "change-case"
18-
# see https://github.com/loculus-project/loculus/issues/4020
19-
- dependency-name: "flowbite-react"
2021
- dependency-name: "@types/node"
2122
versions: [">=23"] # Increase when we update node version in .nvmrc
2223
groups:

backend/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ dependencies {
5757
implementation "org.hibernate.validator:hibernate-validator"
5858
implementation "org.keycloak:keycloak-admin-client:26.0.9"
5959
implementation("io.minio:minio:9.0.1")
60-
implementation("software.amazon.awssdk:s3:2.44.13")
60+
implementation("software.amazon.awssdk:s3:2.45.1")
6161

6262
implementation "org.springframework.boot:spring-boot-starter-oauth2-resource-server"
6363
implementation "org.springframework.boot:spring-boot-starter-security"

backend/docs/db/schema.sql

Lines changed: 170 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,96 @@ CREATE FUNCTION public.jsonb_concat(a jsonb, b jsonb) RETURNS jsonb
5050

5151
ALTER FUNCTION public.jsonb_concat(a jsonb, b jsonb) OWNER TO postgres;
5252

53+
--
54+
-- Name: update_data_use_terms_table_tracker(); Type: FUNCTION; Schema: public; Owner: postgres
55+
--
56+
57+
CREATE FUNCTION public.update_data_use_terms_table_tracker() RETURNS trigger
58+
LANGUAGE plpgsql
59+
AS $$
60+
BEGIN
61+
INSERT INTO table_update_tracker (table_name, organism, pipeline_version, last_time_updated)
62+
SELECT TG_TABLE_NAME, se.organism, NULL, timezone('UTC', CURRENT_TIMESTAMP)
63+
FROM changed_rows cr
64+
JOIN sequence_entries se
65+
ON se.accession = cr.accession
66+
GROUP BY se.organism
67+
ON CONFLICT (table_name, organism, pipeline_version)
68+
DO UPDATE SET last_time_updated = timezone('UTC', CURRENT_TIMESTAMP);
69+
RETURN NULL;
70+
END;
71+
$$;
72+
73+
74+
ALTER FUNCTION public.update_data_use_terms_table_tracker() OWNER TO postgres;
75+
76+
--
77+
-- Name: update_external_metadata_tracker(); Type: FUNCTION; Schema: public; Owner: postgres
78+
--
79+
80+
CREATE FUNCTION public.update_external_metadata_tracker() RETURNS trigger
81+
LANGUAGE plpgsql
82+
AS $$
83+
BEGIN
84+
INSERT INTO table_update_tracker (table_name, organism, pipeline_version, last_time_updated)
85+
SELECT TG_TABLE_NAME, se.organism, NULL, timezone('UTC', CURRENT_TIMESTAMP)
86+
FROM changed_rows cr
87+
JOIN sequence_entries se
88+
ON se.accession = cr.accession AND se.version = cr.version
89+
GROUP BY se.organism
90+
ON CONFLICT (table_name, organism, pipeline_version)
91+
DO UPDATE SET last_time_updated = timezone('UTC', CURRENT_TIMESTAMP);
92+
RETURN NULL;
93+
END;
94+
$$;
95+
96+
97+
ALTER FUNCTION public.update_external_metadata_tracker() OWNER TO postgres;
98+
99+
--
100+
-- Name: update_preprocessed_data_tracker(); Type: FUNCTION; Schema: public; Owner: postgres
101+
--
102+
103+
CREATE FUNCTION public.update_preprocessed_data_tracker() RETURNS trigger
104+
LANGUAGE plpgsql
105+
AS $$
106+
BEGIN
107+
INSERT INTO table_update_tracker (table_name, organism, pipeline_version, last_time_updated)
108+
SELECT TG_TABLE_NAME, se.organism, cr.pipeline_version, timezone('UTC', CURRENT_TIMESTAMP)
109+
FROM changed_rows cr
110+
JOIN sequence_entries se
111+
ON se.accession = cr.accession AND se.version = cr.version
112+
GROUP BY se.organism, cr.pipeline_version
113+
ON CONFLICT (table_name, organism, pipeline_version)
114+
DO UPDATE SET last_time_updated = timezone('UTC', CURRENT_TIMESTAMP);
115+
RETURN NULL;
116+
END;
117+
$$;
118+
119+
120+
ALTER FUNCTION public.update_preprocessed_data_tracker() OWNER TO postgres;
121+
122+
--
123+
-- Name: update_sequence_entries_tracker(); Type: FUNCTION; Schema: public; Owner: postgres
124+
--
125+
126+
CREATE FUNCTION public.update_sequence_entries_tracker() RETURNS trigger
127+
LANGUAGE plpgsql
128+
AS $$
129+
BEGIN
130+
INSERT INTO table_update_tracker (table_name, organism, pipeline_version, last_time_updated)
131+
SELECT TG_TABLE_NAME, cr.organism, NULL, timezone('UTC', CURRENT_TIMESTAMP)
132+
FROM changed_rows cr
133+
GROUP BY cr.organism
134+
ON CONFLICT (table_name, organism, pipeline_version)
135+
DO UPDATE SET last_time_updated = timezone('UTC', CURRENT_TIMESTAMP);
136+
RETURN NULL;
137+
END;
138+
$$;
139+
140+
141+
ALTER FUNCTION public.update_sequence_entries_tracker() OWNER TO postgres;
142+
53143
--
54144
-- Name: update_table_tracker(); Type: FUNCTION; Schema: public; Owner: postgres
55145
--
@@ -59,9 +149,9 @@ CREATE FUNCTION public.update_table_tracker() RETURNS trigger
59149
AS $$
60150
BEGIN
61151
IF TG_TABLE_NAME != 'table_update_tracker' THEN
62-
INSERT INTO table_update_tracker (table_name, last_time_updated)
63-
VALUES (TG_TABLE_NAME, timezone('UTC', CURRENT_TIMESTAMP))
64-
ON CONFLICT (table_name)
152+
INSERT INTO table_update_tracker (table_name, organism, pipeline_version, last_time_updated)
153+
VALUES (TG_TABLE_NAME, NULL, NULL, timezone('UTC', CURRENT_TIMESTAMP))
154+
ON CONFLICT (table_name, organism, pipeline_version)
65155
DO UPDATE SET last_time_updated = timezone('UTC', CURRENT_TIMESTAMP);
66156
END IF;
67157
RETURN NULL;
@@ -577,7 +667,9 @@ ALTER TABLE public.sequence_upload_aux_table OWNER TO postgres;
577667

578668
CREATE TABLE public.table_update_tracker (
579669
table_name text NOT NULL,
580-
last_time_updated timestamp without time zone DEFAULT timezone('UTC'::text, CURRENT_TIMESTAMP)
670+
last_time_updated timestamp without time zone DEFAULT timezone('UTC'::text, CURRENT_TIMESTAMP),
671+
organism text,
672+
pipeline_version bigint
581673
);
582674

583675

@@ -813,11 +905,11 @@ ALTER TABLE ONLY public.sequence_upload_aux_table
813905

814906

815907
--
816-
-- Name: table_update_tracker table_update_tracker_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
908+
-- Name: table_update_tracker table_update_tracker_unique; Type: CONSTRAINT; Schema: public; Owner: postgres
817909
--
818910

819911
ALTER TABLE ONLY public.table_update_tracker
820-
ADD CONSTRAINT table_update_tracker_pkey PRIMARY KEY (table_name);
912+
ADD CONSTRAINT table_update_tracker_unique UNIQUE NULLS NOT DISTINCT (table_name, organism, pipeline_version);
821913

822914

823915
--
@@ -900,59 +992,115 @@ CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCA
900992

901993

902994
--
903-
-- Name: data_use_terms_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
995+
-- Name: groups_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
996+
--
997+
998+
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.groups_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
999+
1000+
1001+
--
1002+
-- Name: metadata_upload_aux_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
9041003
--
9051004

906-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.data_use_terms_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1005+
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.metadata_upload_aux_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
9071006

9081007

9091008
--
910-
-- Name: external_metadata update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1009+
-- Name: sequence_upload_aux_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
9111010
--
9121011

913-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.external_metadata FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1012+
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.sequence_upload_aux_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
9141013

9151014

9161015
--
917-
-- Name: groups_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1016+
-- Name: user_groups_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
9181017
--
9191018

920-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.groups_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1019+
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.user_groups_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
9211020

9221021

9231022
--
924-
-- Name: metadata_upload_aux_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1023+
-- Name: data_use_terms_table update_tracker_trigger_del; Type: TRIGGER; Schema: public; Owner: postgres
9251024
--
9261025

927-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.metadata_upload_aux_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1026+
CREATE TRIGGER update_tracker_trigger_del AFTER DELETE ON public.data_use_terms_table REFERENCING OLD TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_data_use_terms_table_tracker();
9281027

9291028

9301029
--
931-
-- Name: sequence_entries update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1030+
-- Name: external_metadata update_tracker_trigger_del; Type: TRIGGER; Schema: public; Owner: postgres
9321031
--
9331032

934-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.sequence_entries FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1033+
CREATE TRIGGER update_tracker_trigger_del AFTER DELETE ON public.external_metadata REFERENCING OLD TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_external_metadata_tracker();
9351034

9361035

9371036
--
938-
-- Name: sequence_entries_preprocessed_data update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1037+
-- Name: sequence_entries update_tracker_trigger_del; Type: TRIGGER; Schema: public; Owner: postgres
9391038
--
9401039

941-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.sequence_entries_preprocessed_data FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1040+
CREATE TRIGGER update_tracker_trigger_del AFTER DELETE ON public.sequence_entries REFERENCING OLD TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_sequence_entries_tracker();
9421041

9431042

9441043
--
945-
-- Name: sequence_upload_aux_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1044+
-- Name: sequence_entries_preprocessed_data update_tracker_trigger_del; Type: TRIGGER; Schema: public; Owner: postgres
9461045
--
9471046

948-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.sequence_upload_aux_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1047+
CREATE TRIGGER update_tracker_trigger_del AFTER DELETE ON public.sequence_entries_preprocessed_data REFERENCING OLD TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_preprocessed_data_tracker();
9491048

9501049

9511050
--
952-
-- Name: user_groups_table update_tracker_trigger; Type: TRIGGER; Schema: public; Owner: postgres
1051+
-- Name: data_use_terms_table update_tracker_trigger_ins; Type: TRIGGER; Schema: public; Owner: postgres
9531052
--
9541053

955-
CREATE TRIGGER update_tracker_trigger AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON public.user_groups_table FOR EACH STATEMENT EXECUTE FUNCTION public.update_table_tracker();
1054+
CREATE TRIGGER update_tracker_trigger_ins AFTER INSERT ON public.data_use_terms_table REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_data_use_terms_table_tracker();
1055+
1056+
1057+
--
1058+
-- Name: external_metadata update_tracker_trigger_ins; Type: TRIGGER; Schema: public; Owner: postgres
1059+
--
1060+
1061+
CREATE TRIGGER update_tracker_trigger_ins AFTER INSERT ON public.external_metadata REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_external_metadata_tracker();
1062+
1063+
1064+
--
1065+
-- Name: sequence_entries update_tracker_trigger_ins; Type: TRIGGER; Schema: public; Owner: postgres
1066+
--
1067+
1068+
CREATE TRIGGER update_tracker_trigger_ins AFTER INSERT ON public.sequence_entries REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_sequence_entries_tracker();
1069+
1070+
1071+
--
1072+
-- Name: sequence_entries_preprocessed_data update_tracker_trigger_ins; Type: TRIGGER; Schema: public; Owner: postgres
1073+
--
1074+
1075+
CREATE TRIGGER update_tracker_trigger_ins AFTER INSERT ON public.sequence_entries_preprocessed_data REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_preprocessed_data_tracker();
1076+
1077+
1078+
--
1079+
-- Name: data_use_terms_table update_tracker_trigger_upd; Type: TRIGGER; Schema: public; Owner: postgres
1080+
--
1081+
1082+
CREATE TRIGGER update_tracker_trigger_upd AFTER UPDATE ON public.data_use_terms_table REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_data_use_terms_table_tracker();
1083+
1084+
1085+
--
1086+
-- Name: external_metadata update_tracker_trigger_upd; Type: TRIGGER; Schema: public; Owner: postgres
1087+
--
1088+
1089+
CREATE TRIGGER update_tracker_trigger_upd AFTER UPDATE ON public.external_metadata REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_external_metadata_tracker();
1090+
1091+
1092+
--
1093+
-- Name: sequence_entries update_tracker_trigger_upd; Type: TRIGGER; Schema: public; Owner: postgres
1094+
--
1095+
1096+
CREATE TRIGGER update_tracker_trigger_upd AFTER UPDATE ON public.sequence_entries REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_sequence_entries_tracker();
1097+
1098+
1099+
--
1100+
-- Name: sequence_entries_preprocessed_data update_tracker_trigger_upd; Type: TRIGGER; Schema: public; Owner: postgres
1101+
--
1102+
1103+
CREATE TRIGGER update_tracker_trigger_upd AFTER UPDATE ON public.sequence_entries_preprocessed_data REFERENCING NEW TABLE AS changed_rows FOR EACH STATEMENT EXECUTE FUNCTION public.update_preprocessed_data_tracker();
9561104

9571105

9581106
--

0 commit comments

Comments
 (0)