diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index 4bf3b9382f8b919d7150ce68dfcd70b42042256b..422b57a19db31b248eb17c9cc4586df30558a85b 100644 Binary files a/dbrepo-auth-service/listeners/target/create-event-listener.jar and b/dbrepo-auth-service/listeners/target/create-event-listener.jar differ diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java index 65cf82bfcb10004cdb677577b09461f5b6e10923..df65225a3f63e2e9446ab9793ab9a8ce05af0b0f 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java @@ -5,10 +5,7 @@ import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.*; -import at.tuwien.api.database.table.columns.ColumnBriefDto; -import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.columns.ColumnStatisticDto; -import at.tuwien.api.database.table.columns.ColumnTypeDto; +import at.tuwien.api.database.table.columns.*; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyBriefDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; @@ -140,14 +137,18 @@ public interface DataMapper { column.setEnums(Arrays.stream(dataType.substring(0, resultSet.getString(8).length() - 1) .replace("enum(", "") .split(",")) - .map(value -> value.replace("'", "")) + .map(value -> EnumDto.builder() + .value(value.replace("'", "")) + .build()) .toList()); } if (column.getColumnType().equals(ColumnTypeDto.SET)) { column.setSets(Arrays.stream(dataType.substring(0, dataType.length() - 1) .replace("set(", "") .split(",")) - .map(value -> value.replace("'", "")) + .map(value -> SetDto.builder() + .value(value.replace("'", "")) + .build()) .toList()); } /* fix boolean and set size for others */ diff --git a/dbrepo-metadata-db/migration/16/data.py b/dbrepo-metadata-db/migration/16/data.py new file mode 100644 index 0000000000000000000000000000000000000000..fe627c2befe1ddb99ee176778e8b41cdcde6cd1f --- /dev/null +++ b/dbrepo-metadata-db/migration/16/data.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 +import os +import uuid + +from dbrepo.RestClient import RestClient + +endpoint = os.getenv('METADATA_SERVICE_ENDPOINT', 'https://dbrepo1.ec.tuwien.ac.at') +username = os.getenv('SYSTEM_USERNAME', 'admin') +password = os.getenv('SYSTEM_PASSWORD', 'f24870437f82adf567c0b03179f15e21') +client = RestClient(endpoint=endpoint, username=username, password=password) + +plan: [str] = [] + + +def update_concepts() -> None: + plan.append("-- concepts") + plan.append("BEGIN;") + for concept in client.get_concepts(): + old_id: int = concept.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_columns_concepts SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append(f"UPDATE mdb_concepts SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append("COMMIT;") + + +def update_ontologies() -> None: + plan.append("-- ontologies") + plan.append("BEGIN;") + for ontology in client.get_ontologies(): + old_id = ontology.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_ontologies SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append("COMMIT;") + + +def update_units() -> None: + plan.append("-- units") + plan.append("BEGIN;") + for unit in client.get_units(): + old_id: int = unit.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_columns_units SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append(f"UPDATE mdb_units SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append("COMMIT;") + + +def update_images() -> None: + plan.append("-- images") + plan.append("BEGIN;") + for _image in client.get_images(): + old_id: int = _image.id + image = client.get_image(old_id) + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_images SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append(f"UPDATE mdb_image_operators SET image_id = '{new_id}' WHERE image_id = '{old_id}';") + plan.append(f"UPDATE mdb_image_types SET image_id = '{new_id}' WHERE image_id = '{old_id}';") + plan.append(f"UPDATE mdb_containers SET image_id = '{new_id}' WHERE image_id = '{old_id}';") + for operator in image.operators: + o_old_id: int = operator.id + o_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_image_operators SET id = '{o_new_id}' WHERE id = '{o_old_id}';") + for data_type in image.data_types: + d_old_id: int = data_type.id + d_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_image_types SET id = '{d_new_id}' WHERE id = '{d_old_id}';") + plan.append("COMMIT;") + + +def update_containers() -> None: + plan.append("-- containers") + plan.append("BEGIN;") + for containers in client.get_containers(): + old_id: int = containers.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_containers SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append(f"UPDATE mdb_databases SET cid = '{new_id}' WHERE cid = '{old_id}';") + plan.append("COMMIT;") + + +def update_databases() -> None: + plan.append("-- databases") + plan.append("BEGIN;") + for _database in client.get_databases(): + database = client.get_database(database_id=_database.id) + old_id: int = database.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_tables SET tDBID = '{new_id}' WHERE tDBID = '{old_id}';") + plan.append(f"UPDATE mdb_have_access SET database_id = '{new_id}' WHERE database_id = '{old_id}';") + plan.append(f"UPDATE mdb_view SET vdbid = '{new_id}' WHERE vdbid = '{old_id}';") + plan.append(f"UPDATE mdb_identifiers SET dbid = '{new_id}' WHERE dbid = '{old_id}';") + plan.append(f"UPDATE mdb_access SET aDBID = '{new_id}' WHERE aDBID = '{old_id}';") + for view in database.views: + v_old_id: int = view.id + v_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifiers SET vid = '{v_new_id}' WHERE vid = '{v_old_id}';") + plan.append(f"UPDATE mdb_view_columns SET id = UUID(), view_id = '{v_new_id}' WHERE id = '{v_old_id}';") + for table in database.tables: + tbl_old_id: int = table.id + tbl_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifiers SET tid = '{tbl_new_id}' WHERE tid = '{tbl_old_id}';") + plan.append(f"UPDATE mdb_columns SET tID = '{tbl_new_id}' WHERE tID = '{tbl_old_id}';") + plan.append(f"UPDATE mdb_constraints_primary_key SET pkid = UUID(), tID = '{tbl_new_id}' WHERE tID = '{tbl_old_id}';") + plan.append(f"UPDATE mdb_constraints_unique SET tid = '{tbl_new_id}' WHERE tid = '{tbl_old_id}';") + plan.append( + f"UPDATE mdb_constraints_checks SET id = UUID(), tid = '{tbl_new_id}' WHERE tid = '{tbl_old_id}';") + for fk in table.constraints.foreign_keys: + fk_old_id: int = fk.id + fk_new_id: uuid = uuid.uuid4() + plan.append( + f"UPDATE mdb_constraints_foreign_key SET fkid = '{fk_new_id}', tid = '{tbl_new_id}' WHERE fkid = '{fk_old_id}';") + for fkref in fk.references: + fkref_old_id = fkref.id + plan.append( + f"UPDATE mdb_constraints_foreign_key_reference SET id = UUID(), fkid = '{fk_new_id}' WHERE fkid = '{fkref_old_id}';") + for pk in table.constraints.primary_key: + pk_old_id: int = pk.id + plan.append( + f"UPDATE mdb_constraints_primary_key SET pkid = UUID(), tID = '{tbl_new_id}' WHERE tID = {pk_old_id};") + for uk in table.constraints.uniques: + uk_old_id: int = uk.id + uk_new_id: uuid = uuid.uuid4() + plan.append( + f"UPDATE mdb_constraints_unique SET uid = '{uk_new_id}', tid = '{tbl_new_id}' WHERE uid = '{uk_old_id}';") + plan.append( + f"UPDATE mdb_constraints_unique_columns SET id = UUID(), uid = '{uk_new_id}' WHERE uid = '{uk_old_id}';") + for column in table.columns: + col_old_id: int = column.id + col_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_columns SET ID = '{col_new_id}' WHERE ID = '{col_old_id}';") + plan.append(f"UPDATE mdb_constraints_unique_columns SET cid = '{col_new_id}' WHERE cid = '{col_old_id}';") + plan.append(f"UPDATE mdb_constraints_primary_key SET cid = '{col_new_id}' WHERE cid = '{col_old_id}';") + plan.append( + f"UPDATE mdb_constraints_foreign_key_reference SET cid = '{col_new_id}' WHERE cid = '{col_old_id}';") + plan.append( + f"UPDATE mdb_constraints_foreign_key_reference SET rcid = '{col_new_id}' WHERE rcid = '{col_old_id}';") + plan.append(f"UPDATE mdb_columns_concepts SET cID = '{col_new_id}' WHERE cID = '{col_old_id}';") + plan.append(f"UPDATE mdb_columns_units SET cID = '{col_new_id}' WHERE cID = '{col_old_id}';") + plan.append(f"UPDATE mdb_columns_sets SET column_id = '{col_new_id}' WHERE column_id = '{col_old_id}';") + plan.append(f"UPDATE mdb_columns_enums SET column_id = '{col_new_id}' WHERE column_id = '{col_old_id}';") + for set in column.sets: + s_old_id: int = set.id + s_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_columns_sets SET id = '{s_new_id}' WHERE id = '{s_old_id}';") + for enum in column.enums: + e_old_id: int = enum.id + e_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_columns_enums SET id = '{e_new_id}' WHERE id = '{e_old_id}';") + plan.append(f"UPDATE mdb_tables SET ID = '{tbl_new_id}' WHERE ID = '{tbl_old_id}';") + plan.append(f"UPDATE mdb_databases SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append("COMMIT;") + + +def update_messages() -> None: + plan.append("-- messages") + plan.append("BEGIN;") + for message in client.get_messages(): + old_id = message.id + new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_messages SET id = '{new_id}' WHERE id = '{old_id}';") + plan.append("COMMIT;") + + +def update_identifiers() -> None: + plan.append("-- identifiers") + plan.append("BEGIN;") + for _identifier in client.get_identifiers(): + identifier = client.get_identifier(identifier_id=_identifier.id) + i_old_id: int = identifier.id + i_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifiers SET ID = '{i_new_id}' WHERE id = '{i_old_id}';") + plan.append(f"UPDATE mdb_identifier_titles SET pid = '{i_new_id}' WHERE pid = '{i_old_id}';") + plan.append(f"UPDATE mdb_identifier_descriptions SET pid = '{i_new_id}' WHERE pid = '{i_old_id}';") + plan.append(f"UPDATE mdb_identifier_creators SET pid = '{i_new_id}' WHERE pid = '{i_old_id}';") + plan.append(f"UPDATE mdb_identifier_funders SET pid = '{i_new_id}' WHERE pid = '{i_old_id}';") + plan.append(f"UPDATE mdb_identifier_licenses SET pid = '{i_new_id}' WHERE pid = '{i_old_id}';") + for title in identifier.titles: + t_old_id = title.id + t_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifier_titles SET id = '{t_new_id}' WHERE id = '{t_old_id}';") + for description in identifier.descriptions: + d_old_id = description.id + d_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifier_descriptions SET id = '{d_new_id}' WHERE id = '{d_old_id}';") + for creator in identifier.creators: + c_old_id = creator.id + c_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifier_creators SET id = '{c_new_id}' WHERE id = '{c_old_id}';") + for funder in identifier.funders: + f_old_id = funder.id + f_new_id: uuid = uuid.uuid4() + plan.append(f"UPDATE mdb_identifier_funders SET id = '{f_new_id}' WHERE id = '{f_old_id}';") + plan.append("COMMIT;") + + +if __name__ == '__main__': + plan.append("SET FOREIGN_KEY_CHECKS=0;") + plan.append("BEGIN;") + plan.append(f"INSERT INTO mdb_have_access SELECT uu.id as user_id, d.id as database_id, 'WRITE_ALL' as access_type, NOW() as created FROM mdb_databases d, mdb_users uu WHERE NOT EXISTS(SELECT 1 FROM mdb_have_access a JOIN mdb_users u ON a.user_id = u.id AND u.is_internal = TRUE) AND uu.is_internal = TRUE;") + plan.append("COMMIT;") + update_concepts() + update_units() + update_messages() + update_ontologies() + update_images() + update_containers() + update_databases() + update_identifiers() + update_messages() + plan.append("SET FOREIGN_KEY_CHECKS=1;") + print("\n".join(plan)) diff --git a/dbrepo-metadata-db/migration/16/requirements.txt b/dbrepo-metadata-db/migration/16/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..f7e737b2ce17efb23b11a5b0b562651f59ddeada --- /dev/null +++ b/dbrepo-metadata-db/migration/16/requirements.txt @@ -0,0 +1 @@ +dbrepo==1.6.5rc15 \ No newline at end of file diff --git a/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql b/dbrepo-metadata-db/migration/16/schema.sql similarity index 78% rename from dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql rename to dbrepo-metadata-db/migration/16/schema.sql index 272b491e0a244f01815695ffb4fa37d0b3f291b8..68a87f1a67ab770fbb24df68584beeba53d47859 100644 --- a/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql +++ b/dbrepo-metadata-db/migration/16/schema.sql @@ -3,27 +3,28 @@ DROP TABLE IF EXISTS `mdb_columns_nom`; DROP TABLE IF EXISTS `mdb_columns_cat`; DROP TABLE IF EXISTS `mdb_update`; DROP TABLE IF EXISTS `mdb_databases_subjects`; +DROP TABLE IF EXISTS `mdb_images_date`; -- mdb_ontologies ALTER TABLE `mdb_ontologies` DROP SYSTEM VERSIONING; ALTER TABLE mdb_ontologies CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); ALTER TABLE `mdb_ontologies` - ADD SYSTEM VERSIONING; + DROP PRIMARY KEY; +-- mdb_concepts +ALTER TABLE mdb_concepts + DROP SYSTEM VERSIONING; +ALTER TABLE mdb_concepts + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_concepts` + DROP PRIMARY KEY; -- mdb_units ALTER TABLE `mdb_units` DROP SYSTEM VERSIONING; ALTER TABLE mdb_units CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); ALTER TABLE `mdb_units` - ADD SYSTEM VERSIONING; --- mdb_units -ALTER TABLE `mdb_concepts` - DROP SYSTEM VERSIONING; -ALTER TABLE mdb_concepts - CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); -ALTER TABLE `mdb_concepts` - ADD SYSTEM VERSIONING; + DROP PRIMARY KEY; -- mdb_messages ALTER TABLE `mdb_banner_messages` DROP SYSTEM VERSIONING; @@ -31,7 +32,7 @@ ALTER TABLE `mdb_banner_messages` RENAME `mdb_messages`; ALTER TABLE mdb_messages CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); ALTER TABLE `mdb_messages` - ADD SYSTEM VERSIONING; + DROP PRIMARY KEY; -- mdb_image_operators ALTER TABLE mdb_image_operators DROP SYSTEM VERSIONING; @@ -39,6 +40,8 @@ ALTER TABLE mdb_image_operators DROP FOREIGN KEY mdb_image_operators_ibfk_1; ALTER TABLE mdb_image_operators CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_image_operators` + DROP PRIMARY KEY; ALTER TABLE mdb_image_operators CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL; -- mdb_image_types @@ -48,41 +51,40 @@ ALTER TABLE mdb_image_types DROP FOREIGN KEY mdb_image_types_ibfk_1; ALTER TABLE mdb_image_types CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_image_types` + DROP PRIMARY KEY; ALTER TABLE mdb_image_types CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL; --- mdb_images -ALTER TABLE mdb_images - DROP SYSTEM VERSIONING; -ALTER TABLE mdb_images - CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); -- mdb_access ALTER TABLE mdb_access DROP SYSTEM VERSIONING; ALTER TABLE mdb_access DROP FOREIGN KEY mdb_access_ibfk_1; -ALTER TABLE mdb_access - ADD FOREIGN KEY (aUserID) REFERENCES mdb_users (id); ALTER TABLE mdb_access CHANGE COLUMN aDBID aDBID VARCHAR(36) NOT NULL; --- mdb_users -ALTER TABLE mdb_users - DROP SYSTEM VERSIONING; -ALTER TABLE mdb_users - CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_access` + DROP PRIMARY KEY; -- mdb_have_access ALTER TABLE mdb_have_access DROP SYSTEM VERSIONING; ALTER TABLE mdb_have_access DROP FOREIGN KEY mdb_have_access_ibfk_1; +ALTER TABLE mdb_have_access + DROP FOREIGN KEY mdb_have_access_ibfk_2; ALTER TABLE mdb_have_access CHANGE COLUMN user_id user_id VARCHAR(36) NOT NULL; ALTER TABLE mdb_have_access CHANGE COLUMN database_id database_id VARCHAR(36) NOT NULL; --- mdb_identifier_creators +ALTER TABLE `mdb_have_access` + DROP PRIMARY KEY;-- mdb_identifier_creators ALTER TABLE mdb_identifier_creators DROP SYSTEM VERSIONING; ALTER TABLE mdb_identifier_creators DROP FOREIGN KEY mdb_identifier_creators_ibfk_1; +ALTER TABLE mdb_identifier_creators + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifier_creators` + DROP PRIMARY KEY; ALTER TABLE mdb_identifier_creators CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; -- mdb_identifier_descriptions @@ -90,6 +92,10 @@ ALTER TABLE mdb_identifier_descriptions DROP SYSTEM VERSIONING; ALTER TABLE mdb_identifier_descriptions DROP FOREIGN KEY mdb_identifier_descriptions_ibfk_1; +ALTER TABLE mdb_identifier_descriptions + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifier_descriptions` + DROP PRIMARY KEY; ALTER TABLE mdb_identifier_descriptions CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; -- mdb_identifier_funders @@ -97,6 +103,10 @@ ALTER TABLE mdb_identifier_funders DROP SYSTEM VERSIONING; ALTER TABLE mdb_identifier_funders DROP FOREIGN KEY mdb_identifier_funders_ibfk_1; +ALTER TABLE mdb_identifier_funders + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifier_funders` + DROP PRIMARY KEY; ALTER TABLE mdb_identifier_funders CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; -- mdb_identifier_licenses @@ -106,6 +116,8 @@ ALTER TABLE mdb_identifier_licenses DROP FOREIGN KEY mdb_identifier_licenses_ibfk_1; ALTER TABLE mdb_identifier_licenses CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; +ALTER TABLE `mdb_identifier_licenses` + DROP PRIMARY KEY; -- mdb_identifier_titles ALTER TABLE mdb_identifier_titles DROP SYSTEM VERSIONING; @@ -113,6 +125,8 @@ ALTER TABLE mdb_identifier_titles DROP FOREIGN KEY mdb_identifier_titles_ibfk_1; ALTER TABLE mdb_identifier_titles CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifier_titles` + DROP PRIMARY KEY; ALTER TABLE mdb_identifier_titles CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; -- mdb_identifier_licenses @@ -123,6 +137,8 @@ ALTER TABLE mdb_related_identifiers ALTER TABLE mdb_related_identifiers RENAME mdb_identifier_related; ALTER TABLE mdb_identifier_related CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifier_related` + DROP PRIMARY KEY; ALTER TABLE mdb_identifier_related CHANGE COLUMN pid pid VARCHAR(36) NOT NULL; -- mdb_identifiers @@ -132,17 +148,21 @@ ALTER TABLE mdb_identifiers DROP FOREIGN KEY mdb_identifiers_ibfk_1; ALTER TABLE mdb_identifiers CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_identifiers` + DROP PRIMARY KEY; ALTER TABLE mdb_identifiers CHANGE COLUMN dbid dbid VARCHAR(36) NOT NULL; ALTER TABLE mdb_identifiers - CHANGE COLUMN qid qid VARCHAR(36) NOT NULL; + CHANGE COLUMN qid qid VARCHAR(36); ALTER TABLE mdb_identifiers - CHANGE COLUMN tid tid VARCHAR(36) NOT NULL; + CHANGE COLUMN tid tid VARCHAR(36); ALTER TABLE mdb_identifiers - CHANGE COLUMN vid vid VARCHAR(36) NOT NULL; + CHANGE COLUMN vid vid VARCHAR(36); -- mdb_columns_concepts ALTER TABLE mdb_columns_concepts DROP SYSTEM VERSIONING; +ALTER TABLE `mdb_columns_concepts` + DROP PRIMARY KEY; ALTER TABLE mdb_columns_concepts DROP FOREIGN KEY mdb_columns_concepts_ibfk_1; ALTER TABLE mdb_columns_concepts @@ -156,6 +176,8 @@ ALTER TABLE mdb_columns_enums DROP FOREIGN KEY mdb_columns_enums_ibfk_1; ALTER TABLE mdb_columns_enums CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_columns_enums` + DROP PRIMARY KEY; ALTER TABLE mdb_columns_enums CHANGE COLUMN column_id column_id VARCHAR(36) NOT NULL; -- mdb_columns_sets @@ -165,6 +187,8 @@ ALTER TABLE mdb_columns_sets DROP FOREIGN KEY mdb_columns_sets_ibfk_1; ALTER TABLE mdb_columns_sets CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_columns_sets` + DROP PRIMARY KEY; ALTER TABLE mdb_columns_sets CHANGE COLUMN column_id column_id VARCHAR(36) NOT NULL; -- mdb_columns_units @@ -174,6 +198,8 @@ ALTER TABLE mdb_columns_units DROP FOREIGN KEY mdb_columns_units_ibfk_1; ALTER TABLE mdb_columns_units CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_columns_units` + DROP PRIMARY KEY; ALTER TABLE mdb_columns_units CHANGE COLUMN cID cID VARCHAR(36) NOT NULL; -- mdb_constraints_checks @@ -183,6 +209,8 @@ ALTER TABLE mdb_constraints_checks DROP FOREIGN KEY mdb_constraints_checks_ibfk_1; ALTER TABLE mdb_constraints_checks CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_checks` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_checks CHANGE COLUMN tid tid VARCHAR(36) NOT NULL; -- mdb_constraints_foreign_key_reference @@ -196,6 +224,8 @@ ALTER TABLE mdb_constraints_foreign_key_reference DROP FOREIGN KEY mdb_constraints_foreign_key_reference_ibfk_3; ALTER TABLE mdb_constraints_foreign_key_reference CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_foreign_key_reference` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_foreign_key_reference CHANGE COLUMN fkid fkid VARCHAR(36) NOT NULL; ALTER TABLE mdb_constraints_foreign_key_reference @@ -211,6 +241,8 @@ ALTER TABLE mdb_constraints_foreign_key DROP FOREIGN KEY mdb_constraints_foreign_key_ibfk_2; ALTER TABLE mdb_constraints_foreign_key CHANGE COLUMN fkid fkid VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_foreign_key` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_foreign_key CHANGE COLUMN tid tid VARCHAR(36) NOT NULL; ALTER TABLE mdb_constraints_foreign_key @@ -224,11 +256,12 @@ ALTER TABLE mdb_constraints_primary_key DROP FOREIGN KEY mdb_constraints_primary_key_ibfk_2; ALTER TABLE mdb_constraints_primary_key CHANGE COLUMN pkid pkid VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_primary_key` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_primary_key CHANGE COLUMN tID tID VARCHAR(36) NOT NULL; --- mdb_constraints_unique -ALTER TABLE mdb_constraints_unique - DROP FOREIGN KEY mdb_constraints_unique_ibfk_1; +ALTER TABLE mdb_constraints_primary_key + CHANGE COLUMN cid cid VARCHAR(36) NOT NULL; -- mdb_constraints_unique_columns ALTER TABLE mdb_constraints_unique_columns DROP SYSTEM VERSIONING; @@ -238,13 +271,19 @@ ALTER TABLE mdb_constraints_unique_columns DROP FOREIGN KEY mdb_constraints_unique_columns_ibfk_2; ALTER TABLE mdb_constraints_unique_columns CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_unique_columns` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_unique_columns CHANGE COLUMN uid uid VARCHAR(36) NOT NULL; ALTER TABLE mdb_constraints_unique_columns CHANGE COLUMN cid cid VARCHAR(36) NOT NULL; -- mdb_constraints_unique +ALTER TABLE mdb_constraints_unique + DROP FOREIGN KEY mdb_constraints_unique_ibfk_1; ALTER TABLE mdb_constraints_unique CHANGE COLUMN uid uid VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_constraints_unique` + DROP PRIMARY KEY; ALTER TABLE mdb_constraints_unique CHANGE COLUMN tid tid VARCHAR(36) NOT NULL; -- mdb_columns @@ -254,6 +293,8 @@ ALTER TABLE mdb_columns DROP FOREIGN KEY mdb_columns_ibfk_1; ALTER TABLE mdb_columns CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_columns` + DROP PRIMARY KEY; ALTER TABLE mdb_columns CHANGE COLUMN tID tID VARCHAR(36) NOT NULL; -- mdb_tables @@ -275,6 +316,8 @@ ALTER TABLE mdb_tables DROP FOREIGN KEY mdb_tables_ibfk_1; ALTER TABLE mdb_tables CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_tables` + DROP PRIMARY KEY; ALTER TABLE mdb_tables CHANGE COLUMN tDBID tDBID VARCHAR(36) NOT NULL; -- mdb_view_columns @@ -284,6 +327,8 @@ ALTER TABLE mdb_view_columns DROP FOREIGN KEY mdb_view_columns_ibfk_1; ALTER TABLE mdb_view_columns CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_view_columns` + DROP PRIMARY KEY; ALTER TABLE mdb_view_columns CHANGE COLUMN view_id view_id VARCHAR(36) NOT NULL; -- mdb_view @@ -293,6 +338,8 @@ ALTER TABLE mdb_view DROP FOREIGN KEY mdb_view_ibfk_1; ALTER TABLE mdb_view CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_view` + DROP PRIMARY KEY; ALTER TABLE mdb_view CHANGE COLUMN vdbid vdbid VARCHAR(36) NOT NULL; -- mdb_databases @@ -302,6 +349,8 @@ ALTER TABLE mdb_databases DROP FOREIGN KEY mdb_databases_ibfk_1; ALTER TABLE mdb_databases CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_databases` + DROP PRIMARY KEY; ALTER TABLE mdb_databases CHANGE COLUMN cid cid VARCHAR(36) NOT NULL; -- mdb_containers @@ -309,164 +358,259 @@ ALTER TABLE mdb_containers DROP SYSTEM VERSIONING; ALTER TABLE mdb_containers CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_containers` + DROP PRIMARY KEY; +ALTER TABLE mdb_containers + DROP FOREIGN KEY mdb_containers_ibfk_1; ALTER TABLE mdb_containers CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL; -- mdb_images ALTER TABLE mdb_images - ADD SYSTEM VERSIONING; --- mdb_identifiers -ALTER TABLE mdb_identifiers - ADD FOREIGN KEY (dbid) REFERENCES mdb_databases (id); -ALTER TABLE mdb_identifiers - ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id); -ALTER TABLE mdb_identifiers - ADD FOREIGN KEY (vid) REFERENCES mdb_view (id); -ALTER TABLE mdb_identifiers - ADD SYSTEM VERSIONING; --- mdb_identifier_licenses -ALTER TABLE mdb_identifier_licenses - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_licenses - ADD SYSTEM VERSIONING; --- mdb_identifier_titles -ALTER TABLE mdb_identifier_titles - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_titles - ADD SYSTEM VERSIONING; --- mdb_identifier_funders -ALTER TABLE mdb_identifier_funders - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_funders - ADD SYSTEM VERSIONING; --- mdb_identifier_descriptions -ALTER TABLE mdb_identifier_descriptions - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_descriptions - ADD SYSTEM VERSIONING; --- mdb_identifier_creators -ALTER TABLE mdb_identifier_creators - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_creators - ADD SYSTEM VERSIONING; --- mdb_identifier_related -ALTER TABLE mdb_identifier_related - ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); -ALTER TABLE mdb_identifier_related + DROP SYSTEM VERSIONING; +ALTER TABLE mdb_images + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +ALTER TABLE `mdb_images` + DROP PRIMARY KEY; +-- mdb_users +ALTER TABLE mdb_users + DROP SYSTEM VERSIONING; +ALTER TABLE mdb_users + CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID(); +-- mdb_images +ALTER TABLE mdb_images + ADD PRIMARY KEY (id); +ALTER TABLE mdb_images ADD SYSTEM VERSIONING; -- mdb_containers +ALTER TABLE mdb_containers + ADD PRIMARY KEY (id); ALTER TABLE mdb_containers ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id); ALTER TABLE mdb_containers ADD SYSTEM VERSIONING; --- mdb_access -ALTER TABLE mdb_access - ADD FOREIGN KEY (aDBID) REFERENCES mdb_databases (id); -ALTER TABLE mdb_access - ADD SYSTEM VERSIONING; --- mdb_columns_concepts -ALTER TABLE mdb_columns_concepts - ADD FOREIGN KEY (id) REFERENCES mdb_concepts (id); -ALTER TABLE mdb_columns_concepts - ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id); -ALTER TABLE mdb_columns_concepts - ADD SYSTEM VERSIONING; --- mdb_columns_enums -ALTER TABLE mdb_columns_enums - ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id); -ALTER TABLE mdb_columns_enums +-- mdb_concepts +ALTER TABLE mdb_concepts + ADD PRIMARY KEY (id); +ALTER TABLE mdb_concepts ADD SYSTEM VERSIONING; --- mdb_columns_sets -ALTER TABLE mdb_columns_sets - ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id); -ALTER TABLE mdb_columns_sets +-- mdb_databases +ALTER TABLE mdb_databases + ADD FOREIGN KEY (cid) REFERENCES mdb_containers (id); +ALTER TABLE mdb_databases + ADD PRIMARY KEY (id); +ALTER TABLE mdb_databases ADD SYSTEM VERSIONING; --- mdb_columns_units -ALTER TABLE mdb_columns_units - ADD FOREIGN KEY (id) REFERENCES mdb_units (id); -ALTER TABLE mdb_columns_units - ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id); -ALTER TABLE mdb_columns_units +-- mdb_tables +ALTER TABLE mdb_tables + ADD FOREIGN KEY (tDBID) REFERENCES mdb_databases (id); +ALTER TABLE mdb_tables + ADD PRIMARY KEY (ID); +ALTER TABLE mdb_tables ADD SYSTEM VERSIONING; -- mdb_constraints_checks ALTER TABLE mdb_constraints_checks ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id); +ALTER TABLE mdb_constraints_checks + ADD PRIMARY KEY (id); ALTER TABLE mdb_constraints_checks ADD SYSTEM VERSIONING; -- mdb_constraints_foreign_key ALTER TABLE mdb_constraints_foreign_key ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id); ALTER TABLE mdb_constraints_foreign_key - ADD FOREIGN KEY (rtid) REFERENCES mdb_constraints_foreign_key_reference (id); -ALTER TABLE mdb_constraints_foreign_key + ADD PRIMARY KEY (fkid); +-- mdb_columns +ALTER TABLE mdb_columns + ADD FOREIGN KEY (tID) REFERENCES mdb_tables (id); +ALTER TABLE mdb_columns + ADD PRIMARY KEY (ID); +ALTER TABLE mdb_columns ADD SYSTEM VERSIONING; -- mdb_constraints_foreign_key_reference +ALTER TABLE mdb_constraints_foreign_key_reference + ADD PRIMARY KEY (id); ALTER TABLE mdb_constraints_foreign_key_reference ADD FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid); ALTER TABLE mdb_constraints_foreign_key_reference ADD FOREIGN KEY (cid) REFERENCES mdb_columns (ID); ALTER TABLE mdb_constraints_foreign_key_reference - ADD FOREIGN KEY (rcid) REFERENCES mdb_constraints_foreign_key_reference (ID); + ADD FOREIGN KEY (rcid) REFERENCES mdb_columns (ID); ALTER TABLE mdb_constraints_foreign_key_reference ADD SYSTEM VERSIONING; +-- mdb_constraints_foreign_key +ALTER TABLE mdb_constraints_foreign_key + ADD FOREIGN KEY (rtid) REFERENCES mdb_tables (`id`) ON DELETE CASCADE; +ALTER TABLE mdb_constraints_foreign_key + ADD SYSTEM VERSIONING; -- mdb_constraints_primary_key ALTER TABLE mdb_constraints_primary_key - ADD FOREIGN KEY (pkid) REFERENCES mdb_tables (ID); + ADD PRIMARY KEY (pkid); +ALTER TABLE mdb_constraints_primary_key + ADD FOREIGN KEY (tID) REFERENCES mdb_tables (ID); ALTER TABLE mdb_constraints_primary_key - ADD FOREIGN KEY (tID) REFERENCES mdb_columns (ID); + ADD FOREIGN KEY (cid) REFERENCES mdb_columns (ID); ALTER TABLE mdb_constraints_primary_key ADD SYSTEM VERSIONING; -- mdb_constraints_unique +ALTER TABLE mdb_constraints_unique + ADD PRIMARY KEY (uid); ALTER TABLE mdb_constraints_unique ADD FOREIGN KEY (tid) REFERENCES mdb_tables (ID); ALTER TABLE mdb_constraints_unique ADD SYSTEM VERSIONING; -- mdb_constraints_unique_columns +ALTER TABLE mdb_constraints_unique_columns + ADD PRIMARY KEY (id); ALTER TABLE mdb_constraints_unique_columns ADD FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid); ALTER TABLE mdb_constraints_unique_columns ADD FOREIGN KEY (cid) REFERENCES mdb_columns (ID); ALTER TABLE mdb_constraints_unique_columns ADD SYSTEM VERSIONING; --- mdb_columns -ALTER TABLE mdb_columns - ADD FOREIGN KEY (tID) REFERENCES mdb_tables (id); -ALTER TABLE mdb_columns +-- mdb_columns_enums +ALTER TABLE mdb_columns_enums + ADD PRIMARY KEY (id); +ALTER TABLE mdb_columns_enums + ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id); +ALTER TABLE mdb_columns_enums ADD SYSTEM VERSIONING; --- mdb_tables -ALTER TABLE mdb_tables - ADD FOREIGN KEY (tDBID) REFERENCES mdb_databases (id); -ALTER TABLE mdb_tables +-- mdb_columns_sets +ALTER TABLE mdb_columns_sets + ADD PRIMARY KEY (id); +ALTER TABLE mdb_columns_sets + ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id); +ALTER TABLE mdb_columns_sets ADD SYSTEM VERSIONING; --- mdb_view_columns -ALTER TABLE mdb_view_columns - ADD FOREIGN KEY (view_id) REFERENCES mdb_view (id); -ALTER TABLE mdb_view_columns +-- mdb_units +ALTER TABLE mdb_units + ADD PRIMARY KEY (id); +-- mdb_columns_units +ALTER TABLE mdb_units + ADD SYSTEM VERSIONING; +ALTER TABLE mdb_columns_units + ADD PRIMARY KEY (id); +ALTER TABLE mdb_columns_units + ADD FOREIGN KEY (id) REFERENCES mdb_units (id); +ALTER TABLE mdb_columns_units + ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id); +ALTER TABLE mdb_columns_units + ADD SYSTEM VERSIONING; +-- mdb_columns_concepts +ALTER TABLE mdb_columns_concepts + ADD PRIMARY KEY (id, cid); +ALTER TABLE mdb_columns_concepts + ADD FOREIGN KEY (id) REFERENCES mdb_concepts (id); +ALTER TABLE mdb_columns_concepts + ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id); +ALTER TABLE mdb_columns_concepts ADD SYSTEM VERSIONING; -- mdb_view +ALTER TABLE mdb_view + ADD PRIMARY KEY (id); ALTER TABLE mdb_view ADD FOREIGN KEY (vdbid) REFERENCES mdb_databases (id); ALTER TABLE mdb_view ADD SYSTEM VERSIONING; --- mdb_databases -ALTER TABLE mdb_databases - ADD FOREIGN KEY (cid) REFERENCES mdb_containers (id); -ALTER TABLE mdb_databases +-- mdb_view_columns +ALTER TABLE mdb_view_columns + ADD PRIMARY KEY (id); +ALTER TABLE mdb_view_columns + ADD FOREIGN KEY (view_id) REFERENCES mdb_view (id); +ALTER TABLE mdb_view_columns + ADD SYSTEM VERSIONING; +-- mdb_access +ALTER TABLE mdb_access + ADD PRIMARY KEY (aUserID, aDBID); +ALTER TABLE mdb_access + ADD FOREIGN KEY (aDBID) REFERENCES mdb_databases (id); +ALTER TABLE mdb_access + ADD FOREIGN KEY (aUserID) REFERENCES mdb_users (id); +ALTER TABLE mdb_access + ADD SYSTEM VERSIONING; +-- mdb_identifiers +ALTER TABLE mdb_identifiers + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifiers + ADD FOREIGN KEY (dbid) REFERENCES mdb_databases (id); +ALTER TABLE mdb_identifiers + ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id); +ALTER TABLE mdb_identifiers + ADD FOREIGN KEY (vid) REFERENCES mdb_view (id); +ALTER TABLE mdb_identifiers + ADD SYSTEM VERSIONING; +-- mdb_identifier_licenses +ALTER TABLE mdb_identifier_licenses + ADD PRIMARY KEY (pid, license_id); +ALTER TABLE mdb_identifier_licenses + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_licenses + ADD SYSTEM VERSIONING; +-- mdb_identifier_titles +ALTER TABLE mdb_identifier_titles + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifier_titles + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_titles + ADD SYSTEM VERSIONING; +-- mdb_identifier_funders +ALTER TABLE mdb_identifier_funders + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifier_funders + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_funders + ADD SYSTEM VERSIONING; +-- mdb_identifier_descriptions +ALTER TABLE mdb_identifier_descriptions + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifier_descriptions + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_descriptions + ADD SYSTEM VERSIONING; +-- mdb_identifier_creators +ALTER TABLE mdb_identifier_creators + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifier_creators + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_creators + ADD SYSTEM VERSIONING; +-- mdb_identifier_related +ALTER TABLE mdb_identifier_related + ADD PRIMARY KEY (id); +ALTER TABLE mdb_identifier_related + ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id); +ALTER TABLE mdb_identifier_related ADD SYSTEM VERSIONING; -- mdb_users ALTER TABLE mdb_users ADD SYSTEM VERSIONING; -- mdb_have_access +ALTER TABLE mdb_have_access + ADD PRIMARY KEY (user_id, database_id); ALTER TABLE mdb_have_access ADD FOREIGN KEY (database_id) REFERENCES mdb_databases (id); +ALTER TABLE mdb_have_access + ADD FOREIGN KEY (user_id) REFERENCES mdb_users (id); ALTER TABLE mdb_have_access ADD SYSTEM VERSIONING; -- mdb_image_types +ALTER TABLE mdb_image_types + ADD PRIMARY KEY (id); ALTER TABLE mdb_image_types ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id); ALTER TABLE mdb_image_types ADD SYSTEM VERSIONING; -- mdb_image_operators +ALTER TABLE mdb_image_operators + ADD PRIMARY KEY (id); ALTER TABLE mdb_image_operators ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id); ALTER TABLE mdb_image_operators + ADD SYSTEM VERSIONING; +-- mdb_ontologies +ALTER TABLE mdb_ontologies + ADD PRIMARY KEY (id); +ALTER TABLE mdb_ontologies + ADD SYSTEM VERSIONING; +-- mdb_messages +ALTER TABLE `mdb_messages` ADD SYSTEM VERSIONING; \ No newline at end of file diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/DataTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/DataTypeDto.java index a4215c03928529186468081dfa054d6fd434f820..908f54a1b45fb247f13550b15cf8c2ce5d80e821 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/DataTypeDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/DataTypeDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -17,6 +19,10 @@ import lombok.extern.jackson.Jacksonized; @ToString public class DataTypeDto { + @NotNull + @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dcca") + private UUID id; + @NotBlank @JsonProperty("display_name") @Schema(example = "TIME(fsp)") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java index b4b9061354aaa40d6588af7dd53bc7916e719424..7eaee0481064384e762b296661565f5534714beb 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java @@ -19,6 +19,8 @@ import java.util.UUID; @ToString public class OperatorDto { + @NotNull + @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dccf") private UUID id; @NotBlank diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java index d50945740e9a42a8081abab7cd1188dd23a03b13..0df8efbf23e1aef143ed7d999cd9fd252e691349 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java @@ -120,12 +120,10 @@ public class ColumnDto { @Schema(example = "false") private Boolean isNullAllowed; - @Schema(example = "[\"val1\"]") @Parameter(description = "enum values, only considered when type = ENUM") - private List<String> enums; + private List<EnumDto> enums; - @Schema(example = "[\"val1\"]") @Parameter(description = "enum values, only considered when type = ENUM") - private List<String> sets; + private List<SetDto> sets; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/EnumDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/EnumDto.java new file mode 100644 index 0000000000000000000000000000000000000000..1922dc308bc55b2005edbb10a5ada79b2979a3cd --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/EnumDto.java @@ -0,0 +1,28 @@ +package at.tuwien.api.database.table.columns; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +import java.util.UUID; + +@Getter +@Setter +@Builder +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class EnumDto { + + @NotNull + @Schema(example = "1") + private UUID id; + + @NotNull + @Schema(example = "3") + private String value; + +} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/SetDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/SetDto.java new file mode 100644 index 0000000000000000000000000000000000000000..763968e8f5eba57db1d309ab1f3ee7627f1c921a --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/SetDto.java @@ -0,0 +1,28 @@ +package at.tuwien.api.database.table.columns; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +import java.util.UUID; + +@Getter +@Setter +@Builder +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class SetDto { + + @NotNull + @Schema(example = "1") + private UUID id; + + @NotNull + @Schema(example = "3") + private String value; + +} diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index 41e161dbe4def45425b1dfdffa677729f5306d78..b57f04066856d37fd35944b052e832bf0db4e4f6 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -33,6 +33,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; }) @NamedQueries({ @NamedQuery(name = "Database.findAllDesc", query = "select distinct d from Database d order by d.id desc"), + @NamedQuery(name = "Database.findAllByInternalNameDesc", query = "select distinct d from Database d where d.internalName = ?1 order by d.id desc"), @NamedQuery(name = "Database.findAllAtLestReadAccessDesc", query = "select distinct d from Database d where exists(select a.hdbid from DatabaseAccess a where a.huserid = ?1 and a.hdbid = d.id) order by d.id desc"), @NamedQuery(name = "Database.findAllPublicOrSchemaPublicDesc", query = "select distinct d from Database d where d.isPublic = true or d.isSchemaPublic = true order by d.id desc"), @NamedQuery(name = "Database.findAllPublicOrSchemaPublicOrReadAccessDesc", query = "select distinct d from Database d where d.isPublic = true or d.isSchemaPublic = true or exists(select a.hdbid from DatabaseAccess a where a.huserid = ?1 and a.hdbid = d.id) order by d.id desc"), diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnEnum.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..99002c812970c355b27ead84e2f6ad3626ec2132 --- /dev/null +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnEnum.java @@ -0,0 +1,45 @@ +package at.tuwien.entities.database.table.columns; + +import jakarta.persistence.*; +import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; + +import java.util.UUID; + +import static jakarta.persistence.GenerationType.IDENTITY; + +@Data +@Entity +@Builder(toBuilder = true) +@ToString +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@jakarta.persistence.Table(name = "mdb_columns_enums", uniqueConstraints = { + @UniqueConstraint(columnNames = {"value"}) +}) +public class ColumnEnum { + + @Id + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; + + @ToString.Exclude + @EqualsAndHashCode.Exclude + @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) + @JoinColumns({ + @JoinColumn(name = "column_id", referencedColumnName = "id", nullable = false) + }) + private TableColumn column; + + @Column(columnDefinition = "VARCHAR(255)") + private String value; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } +} diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnSet.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnSet.java new file mode 100644 index 0000000000000000000000000000000000000000..036c0202db40719227b90e6be6f30a8157a5e0fd --- /dev/null +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/ColumnSet.java @@ -0,0 +1,45 @@ +package at.tuwien.entities.database.table.columns; + +import jakarta.persistence.*; +import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; + +import java.util.UUID; + +import static jakarta.persistence.GenerationType.IDENTITY; + +@Data +@Entity +@Builder(toBuilder = true) +@ToString +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@Table(name = "mdb_columns_sets", uniqueConstraints = { + @UniqueConstraint(columnNames = {"value"}) +}) +public class ColumnSet { + + @Id + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; + + @ToString.Exclude + @EqualsAndHashCode.Exclude + @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) + @JoinColumns({ + @JoinColumn(name = "column_id", referencedColumnName = "id", nullable = false) + }) + private TableColumn column; + + @Column(columnDefinition = "VARCHAR(255)") + private String value; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } +} diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java index 8d169590626f2ee4e07694938d49f0bf17ae36af..eefa648dfd2aea752e1fd8a5944ea3fe51c234c3 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java @@ -5,6 +5,8 @@ import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.annotations.OnDelete; +import org.hibernate.annotations.OnDeleteAction; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -85,15 +87,13 @@ public class TableColumn implements Comparable<TableColumn> { inverseJoinColumns = @JoinColumn(name = "id", referencedColumnName = "id")) private TableColumnUnit unit; - @ElementCollection(fetch = FetchType.LAZY, targetClass = String.class) - @CollectionTable(name = "mdb_columns_enums", joinColumns = @JoinColumn(name = "column_id")) - @Column(name = "value", nullable = false) - private List<String> enums; + @OnDelete(action = OnDeleteAction.CASCADE) + @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST}, mappedBy = "column") + private List<ColumnEnum> enums; - @ElementCollection(fetch = FetchType.LAZY, targetClass = String.class) - @CollectionTable(name = "mdb_columns_sets", joinColumns = @JoinColumn(name = "column_id")) - @Column(name = "value", nullable = false) - private List<String> sets; + @OnDelete(action = OnDeleteAction.CASCADE) + @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST}, mappedBy = "column") + private List<ColumnSet> sets; @Column private Long size; diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java index ebe69cd7d73efece9c5dc1cf692480cfa0a5a8ac..88eef556226f474c49d8aa9d4c3509a96b273f86 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java @@ -766,6 +766,8 @@ public interface MetadataMapper { @Mapping(target = "isNullAllowed", source = "data.nullAllowed"), @Mapping(target = "name", source = "data.name"), @Mapping(target = "internalName", expression = "java(nameToInternalName(data.getName()))"), + @Mapping(target = "enums", ignore = true), + @Mapping(target = "sets", ignore = true), }) TableColumn columnCreateDtoToTableColumn(CreateTableColumnDto data, ContainerImage image); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java index 67c0df76ee417054e5ac221754ede3cba3d9c39b..d984cb333737851a03c9227e1a76b0643a8282b6 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java @@ -23,4 +23,6 @@ public interface DatabaseRepository extends JpaRepository<Database, UUID> { List<Database> findAllPublicOrSchemaPublicByInternalNameDesc(String internalName); + List<Database> findAllByInternalNameDesc(String internalName); + } diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java index ec0810b23ca31157fd143cfb402e0cbf148f6528..de510dd9702e0051db2a103342c2d18a7153d2be 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java @@ -80,15 +80,24 @@ public class DatabaseEndpoint extends AbstractEndpoint { final List<Database> databases; if (principal != null) { if (internalName != null) { - log.debug("filter request to contain only public databases or where user with id {} has at least read access that match internal name {}", getId(principal), internalName); - databases = databaseService.findAllPublicOrSchemaPublicOrReadAccessByInternalName(getId(principal), internalName); + if (isSystem(principal)) { + log.debug("filter request to contain only databases that match internal name: {}", internalName); + databases = databaseService.findByInternalName(internalName); + } else { + log.debug("filter request to contain only public databases or where user with id {} has at least read access that match internal name: {}", getId(principal), internalName); + databases = databaseService.findAllPublicOrSchemaPublicOrReadAccessByInternalName(getId(principal), internalName); + } } else { - log.debug("filter request to contain only databases where user with id {} has at least read access", getId(principal)); - databases = databaseService.findAllPublicOrSchemaPublicOrReadAccess(getId(principal)); + if (isSystem(principal)) { + databases = databaseService.findAll(); + } else { + log.debug("filter request to contain only databases where user with id {} has at least read access", getId(principal)); + databases = databaseService.findAllPublicOrSchemaPublicOrReadAccess(getId(principal)); + } } } else { if (internalName != null) { - log.debug("filter request to contain only public databases that match internal name {}", internalName); + log.debug("filter request to contain only public databases that match internal name: {}", internalName); databases = databaseService.findAllPublicOrSchemaPublicByInternalName(internalName); } else { log.debug("filter request to contain only public databases"); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index c3f4ad1a71cf2d77bcbe9f241bb9150dd709da00..2f3d38b64cac96b80f2b250973c2f7dfd65c4990 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -99,7 +99,7 @@ public class TableEndpoint extends AbstractEndpoint { endpointValidator.validateOnlyPrivateSchemaHasRole(database, principal, "list-tables"); return ResponseEntity.ok(database.getTables() .stream() - .filter(t -> t.getIsPublic() || t.getIsSchemaPublic()) + .filter(t -> t.getIsPublic() || t.getIsSchemaPublic() || (principal != null && isSystem(principal))) .map(metadataMapper::tableToTableBriefDto) .collect(Collectors.toList())); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 0d5695207354bf668b566c02158a912975cedf69..2f6aa6f3726627d7965c5466fa7db662cf88ddc4 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -23,6 +23,8 @@ public interface DatabaseService { List<Database> findAllPublicOrSchemaPublic(); + List<Database> findByInternalName(String internalName); + List<Database> findAllPublicOrSchemaPublicOrReadAccessByInternalName(UUID userId, String internalName); /** diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index 7e3298ef09d236b55720183c576ecd8284e5dd3d..d01e5c0b6e1470362916a45dae689b155d1c92f2 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -62,6 +62,11 @@ public class DatabaseServiceImpl implements DatabaseService { return databaseRepository.findAllPublicOrSchemaPublicDesc(); } + @Override + public List<Database> findByInternalName(String internalName) { + return databaseRepository.findAllByInternalNameDesc(internalName); + } + @Override public List<Database> findAllPublicOrSchemaPublicOrReadAccessByInternalName(UUID userId, String internalName) { return databaseRepository.findAllPublicOrSchemaPublicOrReadAccessByInternalNameDesc(userId, internalName); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index 01c0c990b773719f69f149b8516746c31ba83cd9..6df1265b75209f4a2671291d8e1ee3beb6cb79f9 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -9,9 +9,7 @@ import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.config.RabbitConfig; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; -import at.tuwien.entities.database.table.columns.TableColumn; -import at.tuwien.entities.database.table.columns.TableColumnConcept; -import at.tuwien.entities.database.table.columns.TableColumnUnit; +import at.tuwien.entities.database.table.columns.*; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.DataServiceGateway; @@ -116,6 +114,20 @@ public class TableServiceImpl implements TableService { for (int i = 0; i < data.getColumns().size(); i++) { final CreateTableColumnDto c = data.getColumns().get(i); final TableColumn column = metadataMapper.columnCreateDtoToTableColumn(c, database.getContainer().getImage()); + column.setEnums(c.getEnums() + .stream() + .map(e -> ColumnEnum.builder() + .column(column) + .value(e) + .build()) + .toList()); + column.setSets(c.getSets() + .stream() + .map(e -> ColumnSet.builder() + .column(column) + .value(e) + .build()) + .toList()); column.setOrdinalPosition(idx[0]++); column.setTable(table); if (c.getUnitUri() != null) { diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar index 4bf3b9382f8b919d7150ce68dfcd70b42042256b..422b57a19db31b248eb17c9cc4586df30558a85b 100644 Binary files a/helm/dbrepo/files/create-event-listener.jar and b/helm/dbrepo/files/create-event-listener.jar differ diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 0cd8afe2720bcd39e4fe2861b004e91ffd26deb6..76eeaa18a118fcf531901469850e60232e317a0a 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -1680,6 +1680,20 @@ class RestClient: raise ResponseCodeError(f'Failed to get licenses: response code: {response.status_code} is not ' f'200 (OK): {response.text}') + def get_ontologies(self) -> List[OntologyBrief]: + """ + Get list of ontologies. + + :returns: List of ontologies, if successful. + """ + url = f'/api/ontology' + response = self._wrapper(method="get", url=url) + if response.status_code == 200: + body = response.json() + return TypeAdapter(List[OntologyBrief]).validate_python(body) + raise ResponseCodeError(f'Failed to get ontologies: response code: {response.status_code} is not ' + f'200 (OK): {response.text}') + def get_concepts(self) -> List[ConceptBrief]: """ Get list of concepts known to the metadata database. @@ -1696,7 +1710,7 @@ class RestClient: def get_identifiers(self, database_id: str = None, subset_id: str = None, view_id: str = None, table_id: str = None, type: IdentifierType = None, status: IdentifierStatusType = None) -> List[ - Identifier] | str: + Identifier]: """ Get list of identifiers, filter by the remaining optional arguments. @@ -1745,7 +1759,49 @@ class RestClient: raise ResponseCodeError(f'Failed to get identifiers: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_images(self) -> List[ImageBrief] | str: + def get_identifier(self, identifier_id: str) -> Identifier: + """ + Get list of identifiers, filter by the remaining optional arguments. + + :param identifier_id: The identifier id. + + :returns: The identifier, if successful. + + :raises NotExistsError: If the identifier does not exist. + :raises ResponseCodeError: If something went wrong with the retrieval of the identifier. + """ + url = f'/api/identifier/{identifier_id}' + response = self._wrapper(method="get", url=url, headers={'Accept': 'application/json'}) + if response.status_code == 200: + body = response.json() + return Identifier.model_validate(body) + if response.status_code == 404: + raise NotExistsError(f'Failed to get identifier: not found') + raise ResponseCodeError(f'Failed to get identifier: response code: {response.status_code} is not ' + f'200 (OK): {response.text}') + + def get_image(self, image_id: str) -> Image: + """ + Get container image. + + :param image_id: The image id. + + :returns: The image, if successful. + + :raises NotExistsError: If the image does not exist. + :raises ResponseCodeError: If something went wrong with the retrieval of the image. + """ + url = f'/api/image/{image_id}' + response = self._wrapper(method="get", url=url, headers={'Accept': 'application/json'}) + if response.status_code == 200: + body = response.json() + return Image.model_validate(body) + if response.status_code == 404: + raise NotExistsError(f'Failed to get image: not found') + raise ResponseCodeError(f'Failed to get image: response code: {response.status_code} is not ' + f'200 (OK): {response.text}') + + def get_images(self) -> List[ImageBrief]: """ Get list of container images. @@ -1759,7 +1815,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get images: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_messages(self) -> List[Message] | str: + def get_messages(self) -> List[Message]: """ Get list of messages. diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index c378a6d9aa671a8eaf4babdb5c2f107be37212f5..d004a9faa32e6e8975d8e90035fd9e403fabf556 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -24,6 +24,13 @@ class Image(BaseModel): data_types: List[DataType] = field(default_factory=list) + +class Operator(BaseModel): + id: str + display_name: str + value: str + documentation: str + class ImageBrief(BaseModel): id: str name: str @@ -464,6 +471,15 @@ class License(BaseModel): description: str +class OntologyBrief(BaseModel): + id: str + uri: str + prefix: str + sparql: bool + rdf: bool + uri_pattern: Optional[str] = None + + class Tuple(BaseModel): data: dict @@ -666,7 +682,7 @@ class Identifier(BaseModel): publication_month: Optional[int] = None class Message(BaseModel): - id: int + id: str type: str link: Optional[str] = None link_text: Optional[str] = None @@ -945,7 +961,18 @@ class UpdateQuery(BaseModel): persist: bool +class ColumnEnum(BaseModel): + id: str + value: str + + +class ColumnSet(BaseModel): + id: str + value: str + + class DataType(BaseModel): + id: str display_name: str value: str documentation: str diff --git a/lib/python/tests/test_unit_ontology.py b/lib/python/tests/test_unit_ontology.py new file mode 100644 index 0000000000000000000000000000000000000000..55565b6cd2a1e03172e0fda0dd61def48502434a --- /dev/null +++ b/lib/python/tests/test_unit_ontology.py @@ -0,0 +1,35 @@ +import unittest + +import requests_mock + +from dbrepo.RestClient import RestClient +from dbrepo.api.dto import OntologyBrief + + +class OntologyUnitTest(unittest.TestCase): + + def test_get_ontologies_empty_succeeds(self): + with requests_mock.Mocker() as mock: + # mock + mock.get('/api/ontology', json=[]) + # test + response = RestClient().get_ontologies() + self.assertEqual([], response) + + def test_get_ontologies_succeeds(self): + with requests_mock.Mocker() as mock: + exp = [OntologyBrief(id="ec6ee082-b6b2-4d65-b931-2f1735f25759", + uri="http://www.ontology-of-units-of-measure.org/resource/om-2/", + prefix="om", + sparql=False, + rdf=True, + uri_pattern="http://www.ontology-of-units-of-measure.org/resource/om-2/.*")] + # mock + mock.get('/api/ontology', json=[exp[0].model_dump()]) + # test + response = RestClient().get_ontologies() + self.assertEqual(exp, response) + + +if __name__ == "__main__": + unittest.main()