From 2ebe5e8f12c5cebb677c93b236cd1a4444e470cc Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 10 Jun 2024 18:45:20 +0000 Subject: [PATCH] Dev --- .../service/SchemaServiceIntegrationTest.java | 46 ++++++++++++++++- .../src/test/resources/init/zoo.sql | 9 ++++ .../java/at/tuwien/mapper/MariaDbMapper.java | 16 ++++++ .../foreignKey/ForeignKeyReference.java | 6 +-- .../java/at/tuwien/mapper/DatabaseMapper.java | 0 .../java/at/tuwien/mapper/MetadataMapper.java | 13 ++--- .../src/main/resources/application-local.yml | 2 + .../tuwien/mapper/MetadataMapperUnitTest.java | 12 +++-- .../service/impl/DatabaseServiceImpl.java | 44 +++++++++++++++- .../java/at/tuwien/test/AbstractUnitTest.java | 4 ++ .../main/java/at/tuwien/test/BaseTest.java | 51 ++++++++++++------- 11 files changed, 166 insertions(+), 37 deletions(-) delete mode 100644 dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/DatabaseMapper.java diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java index 25dcb0caea..db00195e04 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java @@ -53,7 +53,9 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_DTO); } @Test @@ -92,6 +94,46 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(0, foreignKeys.size()); } + @Test + public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException { + + /* test */ + final TableDto response = schemaService.inspectTable(DATABASE_2_PRIVILEGED_DTO, "experiments"); + assertEquals("experiments", response.getInternalName()); + assertEquals("experiments", response.getName()); + assertEquals(DATABASE_2_ID, response.getTdbid()); + assertTrue(response.getIsVersioned()); + assertEquals(DATABASE_2_PUBLIC, response.getIsPublic()); + assertEquals(DATABASE_2_OWNER, response.getCreatedBy()); + assertNotNull(response.getCreator()); + assertEquals(DATABASE_2_OWNER, response.getCreator().getId()); + assertEquals(USER_2_NAME, response.getCreator().getName()); + assertEquals(USER_2_USERNAME, response.getCreator().getUsername()); + assertEquals(USER_2_FIRSTNAME, response.getCreator().getFirstname()); + assertEquals(USER_2_LASTNAME, response.getCreator().getLastname()); + assertEquals(USER_2_QUALIFIED_NAME, response.getCreator().getQualifiedName()); + assertNotNull(response.getCreator().getAttributes()); + assertEquals(USER_2_AFFILIATION, response.getCreator().getAttributes().getAffiliation()); + assertEquals(USER_2_THEME, response.getCreator().getAttributes().getTheme()); + assertEquals(USER_2_LANGUAGE, response.getCreator().getAttributes().getLanguage()); + assertEquals(USER_2_ORCID_URL, response.getCreator().getAttributes().getOrcid()); + assertNull(response.getCreator().getAttributes().getMariadbPassword()); + final List<IdentifierDto> identifiers = response.getIdentifiers(); + assertNotNull(identifiers); + assertEquals(0, identifiers.size()); + final List<ColumnDto> columns = response.getColumns(); + assertNotNull(columns); + assertEquals(3, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_2_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null, null); + assertColumn(columns.get(1), null, null, DATABASE_2_ID, "mode", "mode", ColumnTypeDto.ENUM, 3L, null, false, null, null); + assertEquals(2, columns.get(1).getEnums().size()); + assertEquals(List.of("ABC", "DEF"), columns.get(1).getEnums()); + assertColumn(columns.get(2), null, null, DATABASE_2_ID, "seq", "seq", ColumnTypeDto.SET, 5L, null, true, null, null); + assertEquals(3, columns.get(2).getSets().size()); + assertEquals(List.of("1", "2", "3"), columns.get(2).getSets()); + /* ignore rest (constraints) */ + } + @Test public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException { @@ -348,8 +390,8 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { } protected static void assertColumn(ColumnDto column, Long id, Long tableId, Long databaseId, String name, - String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed, - Long dfid, String description) { + String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed, + Long dfid, String description) { log.trace("assert column: {}", internalName); assertNotNull(column); assertEquals(id, column.getId()); diff --git a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql index 6279d887cc..88284978c5 100644 --- a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql +++ b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql @@ -38,6 +38,15 @@ create table names unique key (firstname, lastname) ) with system versioning; +CREATE SEQUENCE seq_experiments; + +create table experiments +( + id bigint not null default nextval(seq_experiments), + mode enum ('ABC', 'DEF') not null, + seq set ('1','2','3') +) WITH SYSTEM VERSIONING; + create table likes ( name_id bigint not null, diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java index 5be39d4f0a..ea6734bac3 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java @@ -754,6 +754,22 @@ public interface MariaDbMapper { .databaseId(table.getTdbid()) .description(resultSet.getString(11)) .build(); + if (column.getColumnType().equals(ColumnTypeDto.ENUM)) { + column.setEnums(Arrays.stream(resultSet.getString(8) + .substring(0, resultSet.getString(8).length() - 1) + .replace("enum(", "") + .split(",")) + .map(value -> value.replace("'", "")) + .toList()); + } + if (column.getColumnType().equals(ColumnTypeDto.SET)) { + column.setSets(Arrays.stream(resultSet.getString(8) + .substring(0, resultSet.getString(8).length() - 1) + .replace("set(", "") + .split(",")) + .map(value -> value.replace("'", "")) + .toList()); + } /* constraints */ if (resultSet.getString(9) != null && resultSet.getString(9).equals("PRI")) { table.getConstraints().getPrimaryKey().add(PrimaryKeyDto.builder() diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java index 89f52c6cb2..15986289ba 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java @@ -26,17 +26,17 @@ public class ForeignKeyReference { private Long id; @ToString.Exclude - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST}) @JoinColumn(name = "fkid", referencedColumnName = "fkid", nullable = false) private ForeignKey foreignKey; - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "cid", referencedColumnName = "id", nullable = false) }) private TableColumn column; - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "rcid", referencedColumnName = "id", nullable = false) }) diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/DatabaseMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/DatabaseMapper.java deleted file mode 100644 index e69de29bb2..0000000000 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 1cb8f6d394..a0a8eab0cf 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 @@ -540,17 +540,14 @@ public interface MetadataMapper { pk.getColumn().setDatabaseId(data.getDatabase().getId()); }); for (ForeignKeyDto fk : table.getConstraints().getForeignKeys()) { + fk.getTable().setDatabaseId(table.getTdbid()); + fk.getReferencedTable().setDatabaseId(table.getTdbid()); for (ForeignKeyReferenceDto ref : fk.getReferences()) { ref.setForeignKey(foreignKeyDtoToForeignKeyBriefDto(fk)); ref.getColumn().setTableId(table.getId()); ref.getColumn().setDatabaseId(table.getTdbid()); - final Optional<TableColumn> optional = data.getDatabase().getTables().stream().map(Table::getColumns).flatMap(List::stream).filter(c -> c.getId().equals(ref.getReferencedColumn().getId())).findFirst(); - if (optional.isEmpty()) { - log.error("Failed to find foreign key referenced column {}.{} in columns: {}", table.getInternalName(), ref.getReferencedColumn().getInternalName(), data.getDatabase().getTables().stream().map(Table::getColumns).flatMap(List::stream).toList()); - throw new IllegalArgumentException("Failed to find foreign key referenced column"); - } - ref.getReferencedColumn().setTableId(optional.get().getTable().getId()); - ref.getReferencedColumn().setDatabaseId(optional.get().getTable().getTdbid()); + ref.getReferencedColumn().setTableId(fk.getReferencedTable().getId()); + ref.getReferencedColumn().setDatabaseId(table.getTdbid()); } } table.getConstraints() @@ -594,7 +591,7 @@ public interface MetadataMapper { Unique uniqueDtoToUnique(UniqueDto data); @Mappings({ - @Mapping(target = "ownedBy", source = "owner.id"), + @Mapping(target = "ownedBy", source = "owner.id") }) Table tableDtoToTable(TableDto data); diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml index 3312af7c5a..87987f76bc 100644 --- a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml @@ -13,6 +13,7 @@ spring: default_schema: fda jdbc: time_zone: UTC + format_sql: false application: name: metadata-service rabbitmq: @@ -43,6 +44,7 @@ logging: root: warn at.tuwien.: trace org.springframework.security.web.FilterChainProxy: debug +# org.hibernate.resource.jdbc: trace org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug dbrepo: repository-name: Database Repository diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java index 28ab4ccb41..c357020a68 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java @@ -284,15 +284,17 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { assertEquals("fk_location", table1fk.getName()); assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnDelete()); assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnUpdate()); - assertEquals(TABLE_1_ID, table1fk.getTable().getId()); - assertEquals(TABLE_2_ID, table1fk.getReferencedTable().getId()); + assertEquals(TABLE_2_ID, table1fk.getTable().getId()); + assertEquals(DATABASE_1_ID, table1fk.getTable().getDatabaseId()); + assertEquals(TABLE_1_ID, table1fk.getReferencedTable().getId()); + assertEquals(DATABASE_1_ID, table1fk.getReferencedTable().getDatabaseId()); final ForeignKeyReferenceDto table1fkr = table1fk.getReferences().get(0); assertEquals(1L, table1fkr.getId()); assertEquals(TABLE_2_COLUMNS_DTO.get(2).getId(), table1fkr.getColumn().getId()); - assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTable().getId(), table1fkr.getColumn().getTableId()); + assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTableId(), table1fkr.getColumn().getTableId()); assertEquals(TABLE_2_COLUMNS_DTO.get(2).getDatabaseId(), table1fkr.getColumn().getDatabaseId()); - assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getId()); - assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getTableId()); + assertEquals(TABLE_1_COLUMNS_DTO.get(0).getId(), table1fkr.getReferencedColumn().getId()); + assertEquals(TABLE_1_COLUMNS_DTO.get(0).getTableId(), table1fkr.getReferencedColumn().getTableId()); assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getDatabaseId()); assertEquals(1, table1.getConstraints().getPrimaryKey().size()); final PrimaryKeyDto table1pk = new ArrayList<>(table1.getConstraints().getPrimaryKey()).get(0); 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 16d23d7af1..76871aa68a 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 @@ -6,13 +6,13 @@ import at.tuwien.api.database.DatabaseModifyVisibilityDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.internal.CreateDatabaseDto; import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.entities.container.Container; import at.tuwien.entities.database.*; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; +import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKey; +import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKeyReference; import at.tuwien.entities.database.table.constraints.primaryKey.PrimaryKey; import at.tuwien.entities.user.User; import at.tuwien.exception.*; @@ -238,6 +238,46 @@ public class DatabaseServiceImpl implements DatabaseService { database.getTables() .add(tableEntity); } + /* update referenced tables after they are known to the service */ + for (ForeignKey foreignKey : database.getTables().stream().map(t -> t.getConstraints().getForeignKeys()).flatMap(List::stream).toList()) { + log.trace("lookup table {} in tables: {}", foreignKey.getReferencedTable().getInternalName(), database.getTables().stream().map(Table::getInternalName).toList()); + final Optional<Table> optional = database.getTables() + .stream() + .filter(t -> t.getInternalName().equals(foreignKey.getReferencedTable().getInternalName())) + .findFirst(); + if (optional.isEmpty()) { + log.error("Failed to find referenced table: {}.{}", database.getInternalName(), foreignKey.getReferencedTable().getInternalName()); + throw new IllegalArgumentException("Failed to find referenced table: " + database.getInternalName() + "." + foreignKey.getReferencedTable().getInternalName()); + } + foreignKey.setReferencedTable(optional.get()); + for (ForeignKeyReference reference : foreignKey.getReferences()) { + reference.setForeignKey(foreignKey); + final Optional<TableColumn> optional1 = database.getTables() + .stream() + .filter(t -> t.getInternalName().equals(foreignKey.getTable().getInternalName())) + .map(Table::getColumns) + .flatMap(List::stream) + .filter(c -> c.getInternalName().equals(reference.getColumn().getInternalName())) + .findFirst(); + if (optional1.isEmpty()) { + log.error("Failed to find foreign key column: {}.{}.{}", database.getInternalName(), foreignKey.getTable().getInternalName(), reference.getColumn().getInternalName()); + throw new IllegalArgumentException("Failed to find foreign key column: " + reference.getColumn().getInternalName()); + } + reference.setColumn(optional1.get()); + final Optional<TableColumn> optional2 = database.getTables() + .stream() + .filter(t -> t.getInternalName().equals(foreignKey.getReferencedTable().getInternalName())) + .map(Table::getColumns) + .flatMap(List::stream) + .filter(c -> c.getInternalName().equals(reference.getReferencedColumn().getInternalName())) + .findFirst(); + if (optional2.isEmpty()) { + log.error("Failed to find foreign key referenced column: {}", reference.getReferencedColumn().getInternalName()); + throw new IllegalArgumentException("Failed to find foreign key referenced column: " + reference.getReferencedColumn().getInternalName()); + } + reference.setReferencedColumn(optional2.get()); + } + } /* update in metadata database */ database = databaseRepository.save(database); /* save in search service */ diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java index cf32bf4f00..156563a041 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java @@ -72,9 +72,13 @@ public abstract class AbstractUnitTest extends BaseTest { /* DATABASE 2 */ DATABASE_2.setSubsets(new LinkedList<>()); DATABASE_2.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS, DATABASE_2_USER_3_READ_ACCESS))); + DATABASE_2_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO))); DATABASE_2.setTables(new LinkedList<>(List.of(TABLE_5, TABLE_6, TABLE_7))); DATABASE_2.setViews(new LinkedList<>(List.of(VIEW_4))); DATABASE_2.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5))); + DATABASE_2_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))); + DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_DTO))); + DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO))); TABLE_5.setDatabase(DATABASE_2); TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS)); TABLE_5.setConstraints(TABLE_5_CONSTRAINTS); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java index fa47be8af8..2d9a2f40a0 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java @@ -29,7 +29,6 @@ import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.datacite.DataCiteBody; import at.tuwien.api.datacite.DataCiteData; import at.tuwien.api.datacite.doi.DataCiteDoi; -import at.tuwien.api.error.ApiErrorDto; import at.tuwien.api.identifier.*; import at.tuwien.api.keycloak.CredentialDto; import at.tuwien.api.keycloak.CredentialTypeDto; @@ -74,21 +73,15 @@ import at.tuwien.entities.maintenance.BannerMessageType; import at.tuwien.entities.semantics.Ontology; import at.tuwien.entities.user.User; import at.tuwien.test.utils.ArrayUtils; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.responses.ApiResponse; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.http.MediaType; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.web.bind.annotation.ResponseStatus; import java.io.File; import java.io.IOException; -import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.BigInteger; import java.nio.charset.Charset; @@ -592,6 +585,8 @@ public abstract class BaseTest { .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) .name(USER_2_NAME) + .qualifiedName(USER_2_QUALIFIED_NAME) + .attributes(USER_2_ATTRIBUTES_DTO) .build(); public final static UserBriefDto USER_2_BRIEF_DTO = UserBriefDto.builder() @@ -1257,14 +1252,6 @@ public abstract class BaseTest { public final static UUID DATABASE_2_OWNER = USER_2_ID; public final static UUID DATABASE_2_CREATOR = USER_2_ID; - public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() - .id(DATABASE_2_ID) - .name(DATABASE_2_NAME) - .internalName(DATABASE_2_INTERNALNAME) - .container(CONTAINER_1_PRIVILEGED_DTO) - .views(new LinkedList<>()) - .build(); - public final static DatabaseCreateDto DATABASE_2_CREATE = DatabaseCreateDto.builder() .name(DATABASE_2_NAME) .isPublic(DATABASE_2_PUBLIC) @@ -7178,6 +7165,22 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .build(); + public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() + .id(DATABASE_2_ID) + .created(Instant.now().minus(1, HOURS)) + .isPublic(DATABASE_2_PUBLIC) + .name(DATABASE_2_NAME) + .container(CONTAINER_1_PRIVILEGED_DTO) + .internalName(DATABASE_2_INTERNALNAME) + .exchangeName(DATABASE_2_EXCHANGE) + .identifiers(List.of(IDENTIFIER_5_DTO)) + .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)) + .views(List.of(VIEW_4_DTO)) + .created(DATABASE_2_CREATED) + .creator(USER_2_DTO) + .owner(USER_2_DTO) + .build(); + public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() .id(DATABASE_2_ID) .created(DATABASE_2_CREATED) @@ -7240,6 +7243,13 @@ public abstract class BaseTest { .user(USER_2) .build(); + public final static DatabaseAccessDto DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO = DatabaseAccessDto.builder() + .type(AccessTypeDto.WRITE_ALL) + .hdbid(DATABASE_2_ID) + .huserid(USER_2_ID) + .user(USER_2_DTO) + .build(); + public final static DatabaseAccess DATABASE_2_USER_3_READ_ACCESS = DatabaseAccess.builder() .type(AccessType.READ) .hdbid(DATABASE_2_ID) @@ -7248,6 +7258,13 @@ public abstract class BaseTest { .user(USER_3) .build(); + public final static DatabaseAccessDto DATABASE_2_USER_3_READ_ACCESS_DTO = DatabaseAccessDto.builder() + .type(AccessTypeDto.READ) + .hdbid(DATABASE_2_ID) + .huserid(USER_3_ID) + .user(USER_3_DTO) + .build(); + public final static DatabaseAccess DATABASE_2_USER_3_WRITE_OWN_ACCESS = DatabaseAccess.builder() .type(AccessType.WRITE_OWN) .hdbid(DATABASE_2_ID) @@ -7555,8 +7572,8 @@ public abstract class BaseTest { .referencedColumn(TABLE_1_COLUMNS.get(0)) .foreignKey(null) // set later .build()))) - .table(TABLE_1) - .referencedTable(TABLE_2) + .table(TABLE_2) + .referencedTable(TABLE_1) .onUpdate(ReferenceType.NO_ACTION) .build()))) .uniques(new LinkedList<>(List.of(Unique.builder() -- GitLab