diff --git a/.docker/.env b/.docker/.env new file mode 100644 index 0000000000000000000000000000000000000000..6e598a8d0adf7f76559845e3d88b1bc80f314aff --- /dev/null +++ b/.docker/.env @@ -0,0 +1,12 @@ +# UNCOMMENT THE LINES BELOW TO OVERRIDE +#BASE_URL=http://example.com +#ADMIN_EMAIL=noreply@example.com +#LOG_LEVEL=debug +#IDENTITY_SERVICE_ADMIN_PASSWORD=admin +#AUTH_SERVICE_ADMIN_PASSWORD=admin +#METADATA_DB_PASSWORD=dbrepo +#DATA_DB_PASSWORD=dbrepo +#AUTH_DB_PASSWORD=dbrepo +#S3_ACCESS_KEY_ID=seaweedfsadmin +#S3_SECRET_ACCESS_KEY=seaweedfsadmin +#SYSTEM_PASSWORD=admin diff --git a/.docker/config/1_setup-schema.sql b/.docker/config/1_setup-schema.sql new file mode 100644 index 0000000000000000000000000000000000000000..47ee3a95e2b88a62d4a2405f9c0f4d088167d748 --- /dev/null +++ b/.docker/config/1_setup-schema.sql @@ -0,0 +1,564 @@ +BEGIN; + +CREATE TABLE IF NOT EXISTS `mdb_users` +( + id character varying(36) NOT NULL, + username character varying(255) NOT NULL, + firstname character varying(255), + lastname character varying(255), + email character varying(255) NOT NULL, + orcid character varying(255), + affiliation character varying(255), + mariadb_password character varying(255) NOT NULL, + theme character varying(255) NOT NULL default ('light'), + language character varying(3) NOT NULL default ('en'), + PRIMARY KEY (id), + UNIQUE (username), + UNIQUE (email) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_images` +( + id bigint NOT NULL AUTO_INCREMENT, + registry character varying(255) NOT NULL DEFAULT 'docker.io', + name character varying(255) NOT NULL, + version character varying(255) NOT NULL, + default_port integer NOT NULL, + dialect character varying(255) NOT NULL, + driver_class character varying(255) NOT NULL, + jdbc_method character varying(255) NOT NULL, + is_default BOOLEAN NOT NULL DEFAULT FALSE, + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + PRIMARY KEY (id), + UNIQUE (name, version), + UNIQUE (is_default) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_images_date` +( + id bigint NOT NULL AUTO_INCREMENT, + iid bigint NOT NULL, + database_format character varying(255) NOT NULL, + unix_format character varying(255) NOT NULL, + example character varying(255) NOT NULL, + has_time boolean NOT NULL, + created_at timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (id), + FOREIGN KEY (iid) REFERENCES mdb_images (id), + UNIQUE (database_format, unix_format, example) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_containers` +( + id bigint NOT NULL AUTO_INCREMENT, + internal_name character varying(255) NOT NULL, + name character varying(255) NOT NULL, + host character varying(255) NOT NULL, + port integer NOT NULL default 3306, + ui_host character varying(255) NOT NULL default host, + ui_port integer NOT NULL default port, + ui_additional_flags text, + sidecar_host character varying(255), + sidecar_port integer, + image_id bigint NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + privileged_username character varying(255) NOT NULL, + privileged_password character varying(255) NOT NULL, + quota integer NOT NULL DEFAULT 50, + PRIMARY KEY (id), + FOREIGN KEY (image_id) REFERENCES mdb_images (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_data` +( + ID bigint NOT NULL AUTO_INCREMENT, + PROVENANCE text, + FileEncoding text, + FileType character varying(100), + Version text, + Seperator text, + PRIMARY KEY (ID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_licenses` +( + identifier character varying(255) NOT NULL, + uri text NOT NULL, + description text NOT NULL, + PRIMARY KEY (identifier), + UNIQUE (uri(200)) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_databases` +( + id bigint NOT NULL AUTO_INCREMENT, + cid bigint NOT NULL, + name character varying(255) NOT NULL, + internal_name character varying(255) NOT NULL, + exchange_name character varying(255) NOT NULL, + description text, + engine character varying(20), + is_public boolean NOT NULL DEFAULT TRUE, + image longblob, + created_by character varying(36), + owned_by character varying(36), + contact_person character varying(36), + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + PRIMARY KEY (id), + FOREIGN KEY (cid) REFERENCES mdb_containers (id) /* currently we only support one-to-one */, + FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id), + FOREIGN KEY (contact_person) REFERENCES mdb_users (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_databases_subjects` +( + dbid BIGINT NOT NULL, + subjects character varying(255) NOT NULL, + PRIMARY KEY (dbid, subjects) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_tables` +( + ID bigint NOT NULL AUTO_INCREMENT, + tDBID bigint NOT NULL, + tName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + queue_name VARCHAR(255) NOT NULL, + routing_key VARCHAR(255), + tDescription VARCHAR(2048), + num_rows BIGINT, + data_length BIGINT, + max_data_length BIGINT, + avg_row_length BIGINT, + `separator` CHAR(1), + quote CHAR(1), + element_null VARCHAR(50), + skip_lines BIGINT, + element_true VARCHAR(50), + element_false VARCHAR(50), + Version TEXT, + created timestamp NOT NULL DEFAULT NOW(), + versioned boolean not null default true, + created_by character varying(36) NOT NULL, + owned_by character varying(36) NOT NULL, + last_modified timestamp, + PRIMARY KEY (ID), + UNIQUE (tDBID, internal_name), + FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns` +( + ID BIGINT NOT NULL AUTO_INCREMENT, + tID BIGINT NOT NULL, + dfID BIGINT, + cName VARCHAR(64), + internal_name VARCHAR(64) NOT NULL, + Datatype ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), + length BIGINT NULL, + ordinal_position INTEGER NOT NULL, + index_length BIGINT NULL, + description VARCHAR(2048), + size BIGINT, + d BIGINT, + auto_generated BOOLEAN DEFAULT false, + is_null_allowed BOOLEAN NOT NULL DEFAULT true, + val_min NUMERIC NULL, + val_max NUMERIC NULL, + mean NUMERIC NULL, + median NUMERIC NULL, + std_dev Numeric NULL, + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE, + PRIMARY KEY (ID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_enums` +( + id bigint NOT NULL AUTO_INCREMENT, + column_id bigint NOT NULL, + value CHARACTER VARYING(255) NOT NULL, + FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, + PRIMARY KEY (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_sets` +( + id bigint NOT NULL AUTO_INCREMENT, + column_id bigint NOT NULL, + value CHARACTER VARYING(255) NOT NULL, + FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, + PRIMARY KEY (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_nom` +( + tID bigint, + cID bigint, + maxlength INTEGER, + last_modified timestamp, + created timestamp NOT NULL DEFAULT NOW(), + FOREIGN KEY (tID, cID) REFERENCES mdb_columns (tID, ID), + PRIMARY KEY (tID, cID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_cat` +( + tID bigint, + cID bigint, + num_cat INTEGER, + -- cat_array TEXT[], + last_modified timestamp, + created timestamp NOT NULL DEFAULT NOW(), + FOREIGN KEY (tID, cID) REFERENCES mdb_columns (tID, ID), + PRIMARY KEY (tID, cID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key` +( + fkid BIGINT NOT NULL AUTO_INCREMENT, + tid BIGINT NOT NULL, + rtid BIGINT NOT NULL, + name VARCHAR(255) NOT NULL, + on_update VARCHAR(50) NULL, + on_delete VARCHAR(50) NULL, + position INT NULL, + PRIMARY KEY (fkid), + FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE, + FOREIGN KEY (rtid) REFERENCES mdb_tables (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key` +( + pkid BIGINT NOT NULL AUTO_INCREMENT, + tID BIGINT NOT NULL, + cid BIGINT NOT NULL, + PRIMARY KEY (pkid), + FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE, + FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference` +( + id BIGINT NOT NULL AUTO_INCREMENT, + fkid BIGINT NOT NULL, + cid BIGINT NOT NULL, + rcid BIGINT NOT NULL, + PRIMARY KEY (id), + UNIQUE (fkid, cid, rcid), + FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE, + FOREIGN KEY (cid) REFERENCES mdb_columns (id), + FOREIGN KEY (rcid) REFERENCES mdb_columns (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_constraints_unique` +( + uid BIGINT NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + tid BIGINT NOT NULL, + position INT NULL, + PRIMARY KEY (uid), + FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns` +( + id BIGINT NOT NULL AUTO_INCREMENT, + uid BIGINT NOT NULL, + cid BIGINT NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid), + FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_constraints_checks` +( + id BIGINT NOT NULL AUTO_INCREMENT, + tid BIGINT NOT NULL, + checks VARCHAR(255) NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE +) WITH SYSTEM VERSIONING; + + +CREATE TABLE IF NOT EXISTS `mdb_concepts` +( + id bigint NOT NULL AUTO_INCREMENT, + uri text not null, + name VARCHAR(255) null, + description TEXT null, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (id), + UNIQUE (uri(200)) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_units` +( + id bigint NOT NULL AUTO_INCREMENT, + uri text not null, + name VARCHAR(255) null, + description TEXT null, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (id), + UNIQUE (uri(200)) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_concepts` +( + id bigint NOT NULL, + cID bigint NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (id, cid), + FOREIGN KEY (cID) REFERENCES mdb_columns (ID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_columns_units` +( + id bigint NOT NULL, + cID bigint NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (id, cID), + FOREIGN KEY (cID) REFERENCES mdb_columns (ID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_view` +( + id bigint NOT NULL AUTO_INCREMENT, + vdbid bigint NOT NULL, + vName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + Query TEXT NOT NULL, + query_hash VARCHAR(255) NOT NULL, + Public BOOLEAN NOT NULL, + InitialView BOOLEAN NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + created_by character varying(36) NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_banner_messages` +( + id bigint NOT NULL AUTO_INCREMENT, + type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL default 'INFO', + message TEXT NOT NULL, + link TEXT NULL, + link_text VARCHAR(255) NULL, + display_start timestamp NULL, + display_end timestamp NULL, + PRIMARY KEY (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_ontologies` +( + id bigint NOT NULL AUTO_INCREMENT, + prefix VARCHAR(8) NOT NULL, + uri TEXT NOT NULL, + uri_pattern TEXT, + sparql_endpoint TEXT NULL, + rdf_path TEXT NULL, + last_modified timestamp, + created timestamp NOT NULL DEFAULT NOW(), + UNIQUE (prefix), + UNIQUE (uri(200)), + PRIMARY KEY (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_view_columns` +( + id BIGINT NOT NULL AUTO_INCREMENT, + view_id BIGINT NOT NULL, + dfID BIGINT, + name VARCHAR(64), + internal_name VARCHAR(64) NOT NULL, + column_type ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), + ordinal_position INTEGER NOT NULL, + size BIGINT, + d BIGINT, + auto_generated BOOLEAN DEFAULT false, + is_null_allowed BOOLEAN NOT NULL DEFAULT true, + PRIMARY KEY (id), + FOREIGN KEY (view_id) REFERENCES mdb_view (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifiers` +( + id BIGINT NOT NULL AUTO_INCREMENT, + dbid BIGINT NOT NULL, + qid BIGINT, + vid BIGINT, + tid BIGINT, + publisher VARCHAR(255) NOT NULL, + language VARCHAR(2), + publication_year INTEGER NOT NULL, + publication_month INTEGER, + publication_day INTEGER, + identifier_type ENUM ('DATABASE', 'SUBSET', 'VIEW', 'TABLE') NOT NULL, + status ENUM ('DRAFT', 'PUBLISHED') NOT NULL DEFAULT ('PUBLISHED'), + query TEXT, + query_normalized TEXT, + query_hash VARCHAR(255), + execution TIMESTAMP, + result_hash VARCHAR(255), + result_number BIGINT, + doi VARCHAR(255), + created TIMESTAMP NOT NULL DEFAULT NOW(), + created_by VARCHAR(36) NOT NULL, + last_modified TIMESTAMP, + PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (dbid) REFERENCES mdb_databases (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses` +( + pid bigint NOT NULL, + license_id VARCHAR(255) NOT NULL, + PRIMARY KEY (pid, license_id), + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), + FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifier_titles` +( + id bigint NOT NULL AUTO_INCREMENT, + pid bigint NOT NULL, + title text NOT NULL, + title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'), + language VARCHAR(2), + PRIMARY KEY (id), + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifier_funders` +( + id bigint NOT NULL AUTO_INCREMENT, + pid bigint NOT NULL, + funder_name VARCHAR(255) NOT NULL, + funder_identifier TEXT, + funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'), + scheme_uri text, + award_number VARCHAR(255), + award_title text, + language VARCHAR(255), + PRIMARY KEY (id), + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions` +( + id bigint NOT NULL AUTO_INCREMENT, + pid bigint NOT NULL, + description text NOT NULL, + description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'), + language VARCHAR(2), + PRIMARY KEY (id), + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_related_identifiers` +( + id bigint NOT NULL AUTO_INCREMENT, + pid bigint NOT NULL, + value varchar(255) NOT NULL, + type varchar(255) NOT NULL, + relation varchar(255) NOT NULL, + PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), + UNIQUE (pid, value) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_identifier_creators` +( + id bigint NOT NULL AUTO_INCREMENT, + pid bigint NOT NULL, + given_names text, + family_name text, + creator_name VARCHAR(255) NOT NULL, + name_type ENUM ('PERSONAL', 'ORGANIZATIONAL') default 'PERSONAL', + name_identifier text, + name_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI', 'ORCID'), + name_identifier_scheme_uri text, + affiliation VARCHAR(255), + affiliation_identifier text, + affiliation_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI'), + affiliation_identifier_scheme_uri text, + PRIMARY KEY (id), + FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_update` +( + uUserID character varying(255) NOT NULL, + uDBID bigint NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (uUserID, uDBID), + FOREIGN KEY (uDBID) REFERENCES mdb_databases (id) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_access` +( + aUserID character varying(255) NOT NULL, + aDBID bigint REFERENCES mdb_databases (id), + attime TIMESTAMP, + download BOOLEAN, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (aUserID, aDBID) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_have_access` +( + user_id character varying(36) NOT NULL, + database_id bigint REFERENCES mdb_databases (id), + access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + PRIMARY KEY (user_id, database_id), + FOREIGN KEY (user_id) REFERENCES mdb_users (id) +) WITH SYSTEM VERSIONING; + +COMMIT; +BEGIN; + +INSERT INTO `mdb_licenses` (identifier, uri, description) +VALUES ('CC0-1.0', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode', + 'CC0 waives copyright interest in a work you''ve created and dedicates it to the world-wide public domain. Use CC0 to opt out of copyright entirely and ensure your work has the widest reach.'), + ('CC-BY-4.0', 'https://creativecommons.org/licenses/by/4.0/legalcode', + 'The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.'); + +INSERT INTO `mdb_images` (name, registry, version, default_port, dialect, driver_class, jdbc_method) +VALUES ('mariadb', 'docker.io', '11.1.3', 3306, 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', + 'mariadb'); + +INSERT INTO `mdb_images_date` (iid, database_format, unix_format, example, has_time) +VALUES (1, '%Y-%c-%d %H:%i:%S.%f', 'yyyy-MM-dd HH:mm:ss.SSSSSS', '2022-01-30 13:44:25.499', true), + (1, '%Y-%c-%d %H:%i:%S', 'yyyy-MM-dd HH:mm:ss', '2022-01-30 13:44:25', true), + (1, '%Y-%c-%d', 'yyyy-MM-dd', '2022-01-30', false), + (1, '%H:%i:%S', 'HH:mm:ss', '13:44:25', true), + (1, '%d.%c.%Y', 'dd.MM.yyyy', '30.01.2022', false); + +INSERT INTO `mdb_ontologies` (prefix, uri, uri_pattern, sparql_endpoint, rdf_path) +VALUES ('om', 'http://www.ontology-of-units-of-measure.org/resource/om-2/', + 'http://www.ontology-of-units-of-measure.org/resource/om-2/.*', null, 'rdf/om-2.0.rdf'), + ('wd', 'http://www.wikidata.org/', 'http://www.wikidata.org/entity/.*', 'https://query.wikidata.org/sparql', + null), + ('mo', 'http://purl.org/ontology/mo/', 'http://purl.org/ontology/mo/.*', null, null), + ('dc', 'http://purl.org/dc/elements/1.1/', null, null, null), + ('xsd', 'http://www.w3.org/2001/XMLSchema#', null, null, null), + ('tl', 'http://purl.org/NET/c4dm/timeline.owl#', null, null, null), + ('foaf', 'http://xmlns.com/foaf/0.1/', null, null, null), + ('schema', 'http://schema.org/', null, null, null), + ('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', null, null, null), + ('rdfs', 'http://www.w3.org/2000/01/rdf-schema#', null, null, null), + ('owl', 'http://www.w3.org/2002/07/owl#', null, null, null), + ('prov', 'http://www.w3.org/ns/prov#', null, null, null), + ('db', 'http://dbpedia.org', 'http://dbpedia.org/ontology/.*', 'http://dbpedia.org/sparql', null); +COMMIT; diff --git a/.docker/config/2_setup-data.sql b/.docker/config/2_setup-data.sql new file mode 100644 index 0000000000000000000000000000000000000000..e806e1e181dbdcc3f0e4e29f837bffac7123317c --- /dev/null +++ b/.docker/config/2_setup-data.sql @@ -0,0 +1,8 @@ +BEGIN; + +INSERT INTO `mdb_containers` (name, internal_name, image_id, host, port, ui_host, ui_port, sidecar_host, sidecar_port, + privileged_username, privileged_password) +VALUES ('mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', 1, 'data-db', 3306, 'localhost', 3306, 'data-db-sidecar', 8080, + 'root', 'dbrepo'); + +COMMIT; diff --git a/.docker/config/advanced.config b/.docker/config/advanced.config new file mode 100644 index 0000000000000000000000000000000000000000..4445ea601954e5c93c32edeba1638135c5af5e59 --- /dev/null +++ b/.docker/config/advanced.config @@ -0,0 +1,17 @@ +[ + { + rabbitmq_auth_backend_ldap, + [ + { + tag_queries, [ + { + administrator, {in_group_nested, "cn=system,ou=users,dc=dbrepo,dc=at", "member"} + }, + { + management, {constant, true} + } + ] + } + ] + } +]. \ No newline at end of file diff --git a/.docker/config/dbrepo.conf b/.docker/config/dbrepo.conf new file mode 100644 index 0000000000000000000000000000000000000000..8ac239d464398ec381b98d71c91192ea6ba061ab --- /dev/null +++ b/.docker/config/dbrepo.conf @@ -0,0 +1,167 @@ +client_max_body_size 20G; + +resolver 127.0.0.11 valid=30s; # docker dns + +upstream auth { + server auth-service:8080; +} + +upstream broker { + server broker-service:15672; +} + +upstream analyse { + server analyse-service:8080; +} + +upstream data { + server data-service:8080; +} + +upstream metadata { + server metadata-service:8080; +} + +upstream search { + server search-service:8080; +} + +upstream ui { + server ui:3000; +} + +upstream upload { + server upload-service:8080; +} + +server { + listen 80 default_server; + server_name _; + + location /admin/broker { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://broker; + proxy_read_timeout 90; + } + + location /api/search { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://search; + proxy_read_timeout 90; + } + + location /api/broker { + rewrite /api/broker/(.*) /admin/broker/api/$1 break; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://broker; + proxy_read_timeout 90; + } + + location /api/upload { +# allow 128.130.0.0/16; +# deny all; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + proxy_pass http://upload; + proxy_read_timeout 90; + # Disable request and response buffering + proxy_request_buffering off; + proxy_buffering off; + proxy_http_version 1.1; + } + + location /api/analyse { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://analyse; + proxy_read_timeout 90; + } + + location /api/auth { + rewrite /api/auth/(.*) /$1 break; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://auth; + proxy_read_timeout 90; + } + + location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export|statistic) { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://data; + proxy_read_timeout 90; + } + + location ~ /api/database/([0-9]+)/view/([0-9]+)/data { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://data; + proxy_read_timeout 90; + } + + location ~ /api/database/([0-9]+)/view { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://metadata; + proxy_read_timeout 90; + } + + location ~ /api/database/([0-9]+)/subset { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://data; + proxy_read_timeout 600; + } + + location ~ /api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user) { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://metadata; + proxy_read_timeout 90; + } + + location ~ /pid/([0-9]+) { + rewrite /pid/(.*) /api/identifier/$1 break; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://metadata; + proxy_read_timeout 90; + } + + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://ui; + proxy_read_timeout 90; + } +} diff --git a/.docker/config/definitions.json b/.docker/config/definitions.json new file mode 100644 index 0000000000000000000000000000000000000000..a3b70c989de5cb287e37588860e664afb6b7d6ec --- /dev/null +++ b/.docker/config/definitions.json @@ -0,0 +1,52 @@ +{ + "bindings": [ + { + "arguments": {}, + "destination": "dbrepo", + "destination_type": "queue", + "routing_key": "dbrepo.#", + "source": "dbrepo", + "vhost": "dbrepo" + } + ], + "exchanges": [ + { + "arguments": {}, + "auto_delete": false, + "durable": true, + "name": "dbrepo", + "type": "topic", + "vhost": "dbrepo" + } + ], + "global_parameters": [], + "parameters": [], + "permissions": [], + "policies": [], + "queues": [ + { + "arguments": { + "x-queue-type": "quorum" + }, + "auto_delete": false, + "durable": true, + "name": "dbrepo", + "type": "quorum", + "vhost": "dbrepo" + } + ], + "rabbit_version": "3.10.25", + "rabbitmq_version": "3.10.25", + "topic_permissions": [], + "users": [], + "vhosts": [ + { + "limits": [], + "metadata": { + "description": "Default virtual host", + "tags": [] + }, + "name": "dbrepo" + } + ] +} \ No newline at end of file diff --git a/.docker/config/enabled_plugins b/.docker/config/enabled_plugins new file mode 100644 index 0000000000000000000000000000000000000000..95f1c0014dd4ee232580adea29176756a25274ed --- /dev/null +++ b/.docker/config/enabled_plugins @@ -0,0 +1 @@ +[rabbitmq_prometheus,rabbitmq_auth_backend_ldap,rabbitmq_auth_mechanism_ssl,rabbitmq_management]. \ No newline at end of file diff --git a/.docker/config/rabbitmq.conf b/.docker/config/rabbitmq.conf new file mode 100644 index 0000000000000000000000000000000000000000..ff592bb3ecd4b003d180dbb44d8bd9acc5a70394 --- /dev/null +++ b/.docker/config/rabbitmq.conf @@ -0,0 +1,30 @@ +# user +default_vhost = dbrepo +default_user_tags.administrator = false + +# enable http outside localhost +listeners.tcp.1 = 0.0.0.0:5672 + +# management prefix (https://www.rabbitmq.com/management.html#path-prefix) +management.path_prefix = /admin/broker +management.load_definitions = /app/definitions.json + +# logging +log.console = true +log.console.level = warning +auth_ldap.log = true + +# Obviously your authentication server cannot vouch for itself, so you'll need another backend with at least one user in +# it. You should probably use the internal database +auth_backends.1.authn = ldap +auth_backends.1.authz = ldap +auth_backends.2 = internal + +# LDAP +auth_ldap.servers.1 = identity-service +auth_ldap.port = 1389 +auth_ldap.user_dn_pattern = ${username} +auth_ldap.dn_lookup_base = dc=dbrepo,dc=at +auth_ldap.dn_lookup_attribute = uid +auth_ldap.dn_lookup_bind.user_dn = cn=admin,dc=dbrepo,dc=at +auth_ldap.dn_lookup_bind.password = admin diff --git a/.docker/config/s3_config.json b/.docker/config/s3_config.json new file mode 100644 index 0000000000000000000000000000000000000000..f270753cdc96278a039e483966ea864a16781cfe --- /dev/null +++ b/.docker/config/s3_config.json @@ -0,0 +1,20 @@ +{ + "identities": [ + { + "name": "admin", + "credentials": [ + { + "accessKey": "seaweedfsadmin", + "secretKey": "seaweedfsadmin" + } + ], + "actions": [ + "Read", + "Write", + "List", + "Tagging", + "Admin" + ] + } + ] +} \ No newline at end of file diff --git a/.docker/dist.tar.gz b/.docker/dist.tar.gz index 411c92f64cd600841b98f1375c32b920895df2e0..f6c45cbd78ee20a3280a4b2bd6ec8b4cc37050e1 100644 Binary files a/.docker/dist.tar.gz and b/.docker/dist.tar.gz differ diff --git a/.env.unix.example b/.env.unix.example deleted file mode 100644 index cc42c2445172e19016c48e55a5a599df5961de38..0000000000000000000000000000000000000000 --- a/.env.unix.example +++ /dev/null @@ -1 +0,0 @@ -LOG_LEVEL=trace # error, warning, info, debug, trace \ No newline at end of file diff --git a/.gitignore b/.gitignore index e552ece0ec2f4b90e55a0973c942ce3fdc850473..4d7b82f6e6aac7adad8b9865fc2482f7c065e8f2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,6 @@ build/ tmp.yaml .docs/.swagger/api-* .scannerwork/ -.docker/config/* # docs .docs/.swagger/dist/