From 138a04c0f3f07fb6b751dd281dc64b3c38b77100 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sat, 16 Mar 2024 09:59:17 +0100 Subject: [PATCH] Updated tests --- .../src/test/java/at/tuwien/BaseUnitTest.java | 51 ++++++++++ .../IdentifierEndpointIntegrationTest.java | 9 +- .../endpoints/IdentifierEndpointUnitTest.java | 2 +- .../MetadataEndpointComponentTest.java | 8 +- .../PersistenceEndpointUnitTest.java | 4 +- .../service/AccessServiceIntegrationTest.java | 8 +- .../BannerMessageServiceIntegrationTest.java | 2 + .../ContainerServiceIntegrationTest.java | 2 + ...aCiteIdentifierServiceIntegrationTest.java | 8 +- .../DataCiteIdentifierServiceUnitTest.java | 5 +- .../DatabaseServiceIntegrationTest.java | 9 +- .../service/EntityServiceIntegrationTest.java | 6 +- .../IdentifierServiceIntegrationTest.java | 15 +-- .../service/ImageServiceIntegrationTest.java | 2 + .../LicenseServiceIntegrationTest.java | 2 + .../MessageQueueServiceIntegrationTest.java | 5 +- .../MetadataServiceIntegrationTest.java | 8 +- .../service/PersistenceIntegrationTest.java | 2 + .../service/QueryServiceIntegrationTest.java | 14 +-- .../QueryStoreServiceIntegrationTest.java | 6 +- .../SemanticServiceIntegrationTest.java | 5 +- .../service/StoreServiceIntegrationTest.java | 5 +- .../TableColumnServiceIntegrationTest.java | 14 +-- .../TableServiceIntegrationReadTest.java | 6 +- .../TableServiceIntegrationWriteTest.java | 14 +-- .../tuwien/service/TableServiceUnitTest.java | 2 +- .../service/UserServiceIntegrationTest.java | 2 + .../service/ViewServiceIntegrationTest.java | 14 +-- ...ViewServicePersistenceIntegrationTest.java | 18 +--- .../service/impl/MariaDbServiceImpl.java | 7 +- .../main/java/at/tuwien/test/BaseTest.java | 92 ++++++++++++------ dbrepo-ui/bun.lockb | Bin 363576 -> 363576 bytes dbrepo-ui/components/dialogs/TimeTravel.vue | 76 ++++++++++++++- dbrepo-ui/composables/table-service.ts | 17 ++++ dbrepo-ui/dto/index.ts | 6 ++ dbrepo-ui/locales/de-AT.json | 9 +- dbrepo-ui/locales/en-US.json | 5 +- 37 files changed, 268 insertions(+), 192 deletions(-) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java index 940fee6b01..723f8c04ed 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java @@ -3,6 +3,57 @@ package at.tuwien; import at.tuwien.test.BaseTest; import org.springframework.test.context.TestPropertySource; +import java.util.List; + @TestPropertySource(locations = "classpath:application.properties") public abstract class BaseUnitTest extends BaseTest { + + public void genesis() { + /* DATABASE 1 */ + DATABASE_1.setAccesses(List.of()); + TABLE_1.setDatabase(DATABASE_1); + TABLE_1.setColumns(TABLE_1_COLUMNS); + TABLE_1_FOREIGN_KEY_1.getReferences().add(TABLE_1_FOREIGN_KEY_REFERENCE); + TABLE_1.getConstraints().getForeignKeys().add(TABLE_1_FOREIGN_KEY_1); + TABLE_1.getConstraints().getChecks().add(TABLE_1_CHECK_1); +// TABLE_1.getConstraints().getUniques().add(TABLE_1_UNIQUE_CONSTRAINT_1); + TABLE_2.setDatabase(DATABASE_1); + TABLE_2.setColumns(TABLE_2_COLUMNS); + TABLE_2.setConstraints(TABLE_2_CONSTRAINTS); + TABLE_3.setDatabase(DATABASE_1); + TABLE_3.setColumns(TABLE_3_COLUMNS); + TABLE_3.setConstraints(TABLE_3_CONSTRAINTS); + TABLE_4.setDatabase(DATABASE_1); + TABLE_4.setColumns(TABLE_4_COLUMNS); + TABLE_4.setConstraints(TABLE_4_CONSTRAINTS); + VIEW_1.setDatabase(DATABASE_1); + VIEW_1.setColumns(VIEW_1_COLUMNS); + VIEW_2.setDatabase(DATABASE_1); + VIEW_2.setColumns(VIEW_2_COLUMNS); + VIEW_3.setDatabase(DATABASE_1); + VIEW_3.setColumns(VIEW_3_COLUMNS); + IDENTIFIER_1.setDatabase(DATABASE_1); + IDENTIFIER_2.setDatabase(DATABASE_1); + IDENTIFIER_3.setDatabase(DATABASE_1); + IDENTIFIER_4.setDatabase(DATABASE_1); + /* DATABASE 2 */ + DATABASE_2.setAccesses(List.of()); + TABLE_5.setDatabase(DATABASE_2); + TABLE_5.setColumns(TABLE_5_COLUMNS); + TABLE_6.setDatabase(DATABASE_2); + TABLE_6.setColumns(TABLE_6_COLUMNS); + TABLE_7.setDatabase(DATABASE_2); + TABLE_7.setColumns(TABLE_7_COLUMNS); + VIEW_4.setDatabase(DATABASE_2); + VIEW_4.setColumns(VIEW_4_COLUMNS); + IDENTIFIER_5.setDatabase(DATABASE_2); + /* DATABASE 3 */ + DATABASE_3.setAccesses(List.of()); + TABLE_8.setDatabase(DATABASE_3); + TABLE_8.setColumns(TABLE_8_COLUMNS); + VIEW_5.setDatabase(DATABASE_3); + VIEW_5.setColumns(VIEW_5_COLUMNS); + IDENTIFIER_6.setDatabase(DATABASE_3); + } + } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointIntegrationTest.java index 5578921899..e448932f9a 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointIntegrationTest.java @@ -48,14 +48,7 @@ public class IdentifierEndpointIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); - TABLE_8.setColumns(TABLE_8_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.saveAll(List.of(USER_1, USER_2, USER_3, USER_4)); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java index 2b2627cc18..024c9d179b 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java @@ -71,7 +71,7 @@ public class IdentifierEndpointUnitTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - IDENTIFIER_1.setDatabase(DATABASE_1); + genesis(); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointComponentTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointComponentTest.java index 9db11e5c7c..198f19d903 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointComponentTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointComponentTest.java @@ -54,13 +54,7 @@ public class MetadataEndpointComponentTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.saveAll(List.of(USER_1, USER_2)); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/PersistenceEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/PersistenceEndpointUnitTest.java index bc0bc1b066..bbe4c7432e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/PersistenceEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/PersistenceEndpointUnitTest.java @@ -51,9 +51,7 @@ public class PersistenceEndpointUnitTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - IDENTIFIER_1.setDatabase(DATABASE_1); - IDENTIFIER_5.setDatabase(DATABASE_2); - IDENTIFIER_6.setDatabase(DATABASE_3); + genesis(); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java index ce2a42a9cd..db272d870f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java @@ -71,13 +71,7 @@ public class AccessServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java index 8ed3f1f9d7..288090718d 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java @@ -45,6 +45,8 @@ public class BannerMessageServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ bannerMessageRepository.save(BANNER_MESSAGE_1); bannerMessageRepository.save(BANNER_MESSAGE_2); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index 172c9801d6..7a15bd9032 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -43,6 +43,8 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ imageRepository.save(IMAGE_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceIntegrationTest.java index 4c903a82eb..06b43ac056 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceIntegrationTest.java @@ -81,13 +81,7 @@ public class DataCiteIdentifierServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); + genesis(); /* metadata database */ licenseRepository.save(LICENSE_1); imageRepository.save(IMAGE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java index afa00b5308..c0f4cd031f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java @@ -89,10 +89,7 @@ public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); + genesis(); /* metadata database */ licenseRepository.save(LICENSE_1); imageRepository.save(IMAGE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java index 45d8bd5c54..80a555b9c3 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java @@ -88,14 +88,7 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException, IOException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); - TABLE_8.setColumns(TABLE_8_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceIntegrationTest.java index 0fb358df35..dba50caca8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceIntegrationTest.java @@ -53,17 +53,13 @@ public class EntityServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); + genesis(); /* metadata database */ ontologyRepository.saveAll(List.of(ONTOLOGY_1, ONTOLOGY_2, ONTOLOGY_3, ONTOLOGY_4, ONTOLOGY_5)); imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); userRepository.save(USER_1); containerRepository.save(CONTAINER_1); - DATABASE_1.setAccesses(List.of()); databaseRepository.save(DATABASE_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java index 2e5a57a870..a82c25a658 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java @@ -100,20 +100,12 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.saveAll(List.of(USER_1, USER_2, USER_3, USER_4)); licenseRepository.save(LICENSE_1); containerRepository.saveAll(List.of(CONTAINER_1, CONTAINER_2)); - DATABASE_1.setAccesses(List.of()); - DATABASE_2.setAccesses(List.of()); databaseRepository.saveAll(List.of(DATABASE_1, DATABASE_2)); /* search database */ databaseIdxRepository.deleteAll(); @@ -285,9 +277,8 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { @Test public void create_noRelatedTitleDescription_succeeds() throws DatabaseNotFoundException, UserNotFoundException, - IdentifierAlreadyExistsException, QueryNotFoundException, IdentifierPublishingNotAllowedException, - RemoteUnavailableException, IdentifierRequestException, ViewNotFoundException, QueryStoreException, - DatabaseConnectionException, ImageNotSupportedException, IdentifierNotFoundException { + QueryNotFoundException, RemoteUnavailableException, IdentifierRequestException, ViewNotFoundException, + QueryStoreException, ImageNotSupportedException { /* mock */ containerRepository.saveAll(List.of(CONTAINER_3, CONTAINER_4)); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java index 07c32c5205..be077e8dc2 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java @@ -44,6 +44,8 @@ public class ImageServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ imageRepository.save(IMAGE_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java index a9e4490d09..5271136428 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java @@ -44,6 +44,8 @@ public class LicenseServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ licenseRepository.save(LICENSE_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java index 28ccbb19e3..dcf14c7e5b 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java @@ -80,10 +80,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); + genesis(); /* metadata database */ userRepository.saveAll(List.of(USER_1, USER_2, USER_3)); imageRepository.save(IMAGE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java index 185c7cda61..9649180cf9 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java @@ -52,13 +52,7 @@ public class MetadataServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - VIEW_1.setColumns(VIEW_1_COLUMNS); - VIEW_2.setColumns(VIEW_2_COLUMNS); - VIEW_3.setColumns(VIEW_3_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.save(USER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java index 5f6e1045f5..68710c4604 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java @@ -35,6 +35,8 @@ public class PersistenceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ imageRepository.save(IMAGE_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java index 5ead5ebb94..daf263e9b8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java @@ -110,19 +110,7 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException, DatabaseUnchangedException, QueryMalformedException, ColumnParseException, DatabaseNotFoundException, TableMalformedException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); - DATABASE_1.setAccesses(List.of()); - DATABASE_2.setAccesses(List.of()); - VIEW_1.setColumns(VIEW_1_COLUMNS); - VIEW_2.setColumns(VIEW_2_COLUMNS); - VIEW_3.setColumns(VIEW_3_COLUMNS); - VIEW_4.setColumns(VIEW_4_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java index 5f60fdc995..f947de9390 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java @@ -60,11 +60,7 @@ public class QueryStoreServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - DATABASE_1.setAccesses(List.of()); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceIntegrationTest.java index 50466c7775..83396e991f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceIntegrationTest.java @@ -52,10 +52,7 @@ public class SemanticServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.save(USER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java index 3bb487e8e7..bbf141ee0c 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java @@ -72,10 +72,7 @@ public class StoreServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); userRepository.saveAll(List.of(USER_1, USER_2, USER_3, USER_4, USER_5)); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableColumnServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableColumnServiceIntegrationTest.java index 2391a52290..bb67382b3f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableColumnServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableColumnServiceIntegrationTest.java @@ -65,19 +65,7 @@ public class TableColumnServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_1_FOREIGN_KEY_1.setReferences(List.of(TABLE_1_FOREIGN_KEY_REFERENCE)); - TABLE_1.setConstraints(TABLE_1_CONSTRAINTS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_2.setConstraints(TABLE_2_CONSTRAINTS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_3.setConstraints(TABLE_3_CONSTRAINTS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - DATABASE_1.setAccesses(List.of()); - TABLE_1.setDatabase(DATABASE_1); - TABLE_2.setDatabase(DATABASE_1); - TABLE_3.setDatabase(DATABASE_1); - TABLE_4.setDatabase(DATABASE_1); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java index c5a2400daf..16dd262e73 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java @@ -64,11 +64,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - DATABASE_1.setAccesses(List.of()); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java index 685604fa78..f4b9bddcb8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java @@ -73,19 +73,7 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws SQLException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_1_FOREIGN_KEY_1.setReferences(List.of(TABLE_1_FOREIGN_KEY_REFERENCE)); - TABLE_1.setConstraints(TABLE_1_CONSTRAINTS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_2.setConstraints(TABLE_2_CONSTRAINTS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_3.setConstraints(TABLE_3_CONSTRAINTS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - DATABASE_1.setAccesses(List.of()); - TABLE_1.setDatabase(DATABASE_1); - TABLE_2.setDatabase(DATABASE_1); - TABLE_3.setDatabase(DATABASE_1); - TABLE_4.setDatabase(DATABASE_1); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index 864153b939..eb36aba4e9 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -44,7 +44,7 @@ public class TableServiceUnitTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_8.setColumns(TABLE_8_COLUMNS); + genesis(); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java index b95514d5dd..63adc23a88 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java @@ -45,6 +45,8 @@ public class UserServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { + genesis(); + /* metadata database */ userRepository.save(USER_1); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java index 8ce238c0a0..3e67e06f90 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java @@ -95,19 +95,7 @@ public class ViewServiceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() throws DatabaseUnchangedException, QueryMalformedException, ColumnParseException, DatabaseNotFoundException, TableMalformedException { - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); - DATABASE_1.setAccesses(List.of()); - DATABASE_2.setAccesses(List.of()); - VIEW_1.setColumns(VIEW_1_COLUMNS); - VIEW_2.setColumns(VIEW_2_COLUMNS); - VIEW_3.setColumns(VIEW_3_COLUMNS); - VIEW_4.setColumns(VIEW_4_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceIntegrationTest.java index d57aad6985..a1e87897d0 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceIntegrationTest.java @@ -7,6 +7,7 @@ import at.tuwien.annotations.MockOpensearch; import at.tuwien.api.database.ViewCreateDto; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; +import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; import at.tuwien.exception.*; import at.tuwien.repository.mdb.*; @@ -71,25 +72,14 @@ public class ViewServicePersistenceIntegrationTest extends BaseUnitTest { @BeforeEach public void beforeEach() { - TABLE_1.setDatabase(DATABASE_1); - TABLE_2.setDatabase(DATABASE_1); - TABLE_3.setDatabase(DATABASE_1); - TABLE_4.setDatabase(DATABASE_1); - VIEW_1.setDatabase(DATABASE_1); - VIEW_2.setDatabase(DATABASE_1); - VIEW_3.setDatabase(DATABASE_1); - TABLE_1.setColumns(TABLE_1_COLUMNS); - TABLE_2.setColumns(TABLE_2_COLUMNS); - TABLE_3.setColumns(TABLE_3_COLUMNS); - TABLE_4.setColumns(TABLE_4_COLUMNS); - TABLE_5.setColumns(TABLE_5_COLUMNS); - TABLE_6.setColumns(TABLE_6_COLUMNS); - TABLE_7.setColumns(TABLE_7_COLUMNS); + genesis(); /* metadata database */ imageRepository.save(IMAGE_1); licenseRepository.save(LICENSE_1); userRepository.saveAll(List.of(USER_1, USER_2, USER_3)); containerRepository.saveAll(List.of(CONTAINER_1, CONTAINER_2)); + final Database db1 = DATABASE_1; + final Database db2 = DATABASE_2; databaseRepository.saveAll(List.of(DATABASE_1, DATABASE_2)); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java index fa56829a4b..f269ab631b 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java @@ -340,6 +340,11 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe preparedStatement2.execute(); log.info("Enabled system-versioning for table with name {}", table.getInternalName()); } + table.setConstraints(Constraints.builder() + .checks(new LinkedHashSet<>()) + .foreignKeys(new LinkedList<>()) + .uniques(new LinkedList<>()) + .build()); table.setProcessedConstraints(false); final PreparedStatement preparedStatement3 = tableMapper.tableToCreateHistoryViewRawQuery(connection, table); preparedStatement3.executeUpdate(); @@ -354,7 +359,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe /* update in metadata database */ final Database entity = databaseRepository.save(database); /* save in open search database */ - databaseIdxRepository.save(databaseMapper.databaseToDatabaseDto(entity)); + databaseIdxRepository.save(databaseMapper.databaseToDatabaseDto(database)); log.info("Updated database with id {} in metadata database & search database", entity.getId()); return entity; } 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 9ff8a4ec32..027e8c8b1f 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 @@ -1342,6 +1342,12 @@ public abstract class BaseTest { public final static Instant TABLE_1_CREATED = Instant.ofEpochSecond(1677399975L) /* 2023-02-26 08:26:15 (UTC) */; public final static Instant TABLE_1_LAST_MODIFIED = Instant.ofEpochSecond(1677399975L) /* 2023-02-26 08:26:15 (UTC) */; + public final static Constraints TABLE_1_CONSTRAINTS = Constraints.builder() + .foreignKeys(new LinkedList<>()) + .uniques(new LinkedList<>()) + .checks(new LinkedHashSet<>()) + .build(); + public final static Table TABLE_1 = Table.builder() .id(TABLE_1_ID) .tdbid(DATABASE_1_ID) @@ -1356,7 +1362,7 @@ public abstract class BaseTest { .routingKey(TABLE_1_ROUTING_KEY) .identifiers(List.of()) .columns(List.of() /* TABLE_1_COLUMNS */) - .constraints(null /* TABLE_1_CONSTRAINTS */) + .constraints(TABLE_1_CONSTRAINTS) .createdBy(USER_1_ID) .creator(USER_1) .ownedBy(USER_1_ID) @@ -1402,6 +1408,12 @@ public abstract class BaseTest { public final static Instant TABLE_2_CREATED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */; public final static Instant TABLE_2_LAST_MODIFIED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */; + public final static Constraints TABLE_2_CONSTRAINTS = Constraints.builder() + .uniques(new LinkedList<>()) + .foreignKeys(new LinkedList<>()) + .checks(new LinkedHashSet<>()) + .build(); + public final static Table TABLE_2 = Table.builder() .id(TABLE_2_ID) .tdbid(DATABASE_1_ID) @@ -1416,7 +1428,7 @@ public abstract class BaseTest { .queueName(TABLE_2_QUEUE_NAME) .routingKey(TABLE_2_ROUTING_KEY) .columns(List.of() /* TABLE_2_COLUMNS */) - .constraints(null /* TABLE_2_CONSTRAINTS */) + .constraints(TABLE_2_CONSTRAINTS) .createdBy(USER_2_ID) .ownedBy(USER_2_ID) .owner(USER_2) @@ -1459,6 +1471,12 @@ public abstract class BaseTest { public final static Instant TABLE_3_CREATED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */; public final static Instant TABLE_3_LAST_MODIFIED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */; + public final static Constraints TABLE_3_CONSTRAINTS = Constraints.builder() + .uniques(new LinkedList<>()) + .foreignKeys(new LinkedList<>()) + .checks(new LinkedHashSet<>()) + .build(); + public final static Table TABLE_3 = Table.builder() .id(TABLE_3_ID) .tdbid(DATABASE_1_ID) @@ -1473,7 +1491,7 @@ public abstract class BaseTest { .queueName(TABLE_3_QUEUE_NAME) .routingKey(TABLE_3_ROUTING_KEY) .columns(List.of() /* TABLE_3_COLUMNS */) - .constraints(null /* TABLE_3_CONSTRAINTS */) + .constraints(TABLE_3_CONSTRAINTS) .createdBy(USER_3_ID) .ownedBy(USER_3_ID) .owner(USER_3) @@ -1690,6 +1708,12 @@ public abstract class BaseTest { public final static Instant TABLE_4_CREATED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */; public final static Instant TABLE_4_LAST_MODIFIED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */; + public final static Constraints TABLE_4_CONSTRAINTS = Constraints.builder() + .uniques(List.of()) + .foreignKeys(List.of()) + .checks(Set.of()) + .build(); + public final static Table TABLE_4 = Table.builder() .id(TABLE_4_ID) .tdbid(DATABASE_1_ID) @@ -1706,6 +1730,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .owner(USER_1) .created(TABLE_4_CREATED) + .constraints(TABLE_4_CONSTRAINTS) .lastModified(TABLE_4_LAST_MODIFIED) .build(); @@ -3099,7 +3124,7 @@ public abstract class BaseTest { .name(TABLE_1_FOREIGN_KEY_1_NAME) .referencedTable(TABLE_2) .table(TABLE_1) - .references(List.of()) /* TABLE_1_FOREIGN_KEY_REFERENCE */ + .references(new LinkedList<>()) /* TABLE_1_FOREIGN_KEY_REFERENCE */ .build(); public final static Long TABLE_1_FOREIGN_KEY_REFERENCE_ID = 1L; @@ -3111,25 +3136,18 @@ public abstract class BaseTest { .referencedColumn(TABLE_1_COLUMNS.get(0)) .build(); - public final static Constraints TABLE_1_CONSTRAINTS = Constraints.builder() - .foreignKeys(List.of(TABLE_1_FOREIGN_KEY_1)) - .uniques(List.of(Unique.builder() - .name("UK_1") - .columns(List.of( - TABLE_1_COLUMNS.get(0), - TABLE_1_COLUMNS.get(1) - )) - .table(TABLE_1) - .build())) - .checks(Set.of("`mintemp` > 0")) + public final static Unique TABLE_1_UNIQUE_CONSTRAINT_1 = Unique.builder() + .name("UK_1") + .columns(new LinkedList<>()) + .table(TABLE_1) .build(); - public final static Constraints TABLE_2_CONSTRAINTS = Constraints.builder() - .uniques(List.of(Unique.builder() - .name("UK_1") - .columns(List.of(TABLE_2_COLUMNS.get(0))) - .table(TABLE_2) - .build())) + public final static String TABLE_1_CHECK_1 = "`mintemp` > 0"; + + public final static Unique TABLE_2_UNIQUE_CONSTRAINT_1 = Unique.builder() + .name("UK_1") + .columns(List.of(TABLE_2_COLUMNS.get(0))) + .table(TABLE_2) .build(); public final static List<TableColumn> TABLE_3_COLUMNS = List.of(TableColumn.builder() @@ -4111,12 +4129,10 @@ public abstract class BaseTest { .sets(List.of()) .build()); - public final static Constraints TABLE_3_CONSTRAINTS = Constraints.builder() - .uniques(List.of(Unique.builder() - .name("UK_1") - .columns(List.of(TABLE_3_COLUMNS.get(0))) - .table(TABLE_3) - .build())) + public final static Unique TABLE_3_UNIQUE_CONSTRAINT_1 = Unique.builder() + .name("UK_1") + .columns(List.of(TABLE_3_COLUMNS.get(0))) + .table(TABLE_3) .build(); public final static ConstraintsDto TABLE_3_CONSTRAINTS_DTO = ConstraintsDto.builder() @@ -5308,7 +5324,7 @@ public abstract class BaseTest { public final static String VIEW_5_NAME = "Mock View"; public final static String VIEW_5_INTERNAL_NAME = "mock_view"; public final static Long VIEW_5_CONTAINER_ID = CONTAINER_2_ID; - public final static Long VIEW_5_DATABASE_ID = DATABASE_2_ID; + public final static Long VIEW_5_DATABASE_ID = DATABASE_3_ID; public final static Boolean VIEW_5_PUBLIC = true; public final static String VIEW_5_QUERY = "SELECT `location`, `lat`, `lng` FROM `weather_location` WHERE `location` = 'Albury'"; public final static String VIEW_5_QUERY_HASH = "120f32478aaff874c25ab32eceb9f00b64cc9d422831046f2f5d43953aca01e7"; @@ -5326,6 +5342,26 @@ public abstract class BaseTest { .columns(null) .build(); + public final static List<ViewColumn> VIEW_5_COLUMNS = List.of( + ViewColumn.builder() + .id(29L) + .ordinalPosition(0) + .column(TABLE_2_COLUMNS.get(0)) + .view(VIEW_5) + .build(), + ViewColumn.builder() + .id(30L) + .ordinalPosition(1) + .column(TABLE_2_COLUMNS.get(1)) + .view(VIEW_5) + .build(), + ViewColumn.builder() + .id(31L) + .ordinalPosition(2) + .column(TABLE_2_COLUMNS.get(2)) + .view(VIEW_5) + .build()); + public final static Long QUERY_1_RESULT_ID = 1L; public final static List<Map<String, Object>> QUERY_1_RESULT_RESULT = List.of( new HashMap<>() {{ diff --git a/dbrepo-ui/bun.lockb b/dbrepo-ui/bun.lockb index 90e197bf8ac360877c05d20dec7b22b6a8c537ec..8493ca2eeeac087f85096ca4acb9a406944112bf 100755 GIT binary patch delta 33 lcmdlnLu|(kv4$4L7N#xC`kUFA7{H+2Y%}wAv&}3_HvzSD3G4s> delta 33 pcmdlnLu|(kv4$4L7N#xC`kUDq<4pC8^$gn0HZyNG+swjr69C7t3q1e; diff --git a/dbrepo-ui/components/dialogs/TimeTravel.vue b/dbrepo-ui/components/dialogs/TimeTravel.vue index 31be1db9e6..8637cd456e 100644 --- a/dbrepo-ui/components/dialogs/TimeTravel.vue +++ b/dbrepo-ui/components/dialogs/TimeTravel.vue @@ -20,6 +20,12 @@ :suffix="$t('pages.table.subpages.versioning.timestamp.suffix')" class="mb-4" type="text" /> + <Bar + id="time-travel" + :data="chartData" + :options="chartOptions" + :height="200" + :width="400" /> </v-card-text> <v-card-actions> <v-spacer /> @@ -44,16 +50,47 @@ </template> <script> +import { Bar } from 'vue-chartjs' +import { format } from 'date-fns' +import { useCacheStore } from '@/stores/cache' +import { Chart as ChartJS, Title, Tooltip, BarElement, CategoryScale, LinearScale, LogarithmicScale } from 'chart.js' + +ChartJS.register(Title, Tooltip, BarElement, CategoryScale, LinearScale, LogarithmicScale) + export default { + components: { + Bar + }, data () { return { formValid: false, loading: false, datetime: null, - totalChanges: 0 + history: null, + chartOptions: { + responsive: true, + onClick: this.handle, + animations: null, + plugins: { + title: { + display: true, + text: this.$t('pages.table.subpages.versioning.chart.title') + } + }, + scales: { + y: { + display: true, + type: 'logarithmic' + } + } + }, + cacheStore: useCacheStore() } }, computed: { + table () { + return this.cacheStore.getTable + }, inputVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal @@ -61,8 +98,19 @@ export default { buttonVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal + }, + chartData () { + return { + labels: this.history ? this.history.map(d => format(new Date(d.timestamp), 'yyyy-MM-dd HH:mm:ss')) : [], + datasets: [ + this.history ? { backgroundColor: this.$vuetify.theme.current.colors.primary, data: this.history.map(d => d.total) } : { data: [] } + ] + } } }, + mounted() { + this.loadHistory() + }, methods: { cancel () { this.$emit('close', { success: false }) @@ -75,6 +123,32 @@ export default { success: true, timestamp: this.datetime }) + }, + handle (point, event) { + if (event.length !== 1 || event[0].index === undefined) { + return + } + const idx = event[0].index + this.datetime = this.chartData.labels[idx] + console.debug('date time', this.datetime, 'idx', idx) + }, + async loadHistory () { + try { + this.loading = true + const tableService = useTableService() + this.history = await tableService.history(this.table.tdbid, this.table.id) + // this.chartData.labels = history.map(d => format(new Date(d.timestamp), 'dd.MM.yyyy HH:mm:ss')) + // this.chartData.datasets = [{ + // // backgroundColor: 'red', + // data: history.map(d => d.total) + // }] + this.totalChanges = history.length + console.debug('history', this.chartData) + } catch (err) { + this.error = true + console.error('failed to load table history', err) + } + this.loading = false } } } diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index ead0169f17..b351802401 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -169,6 +169,22 @@ export const useTableService = (): any => { }); } + async function history(databaseId: number, tableId: number): Promise<TableHistoryDto[]> { + const axios = useAxiosInstance() + console.debug('Load history of table with id', tableId, 'in database with id', databaseId) + return new Promise<TableHistoryDto[]>((resolve, reject) => { + axios.get<TableHistoryDto[]>(`/api/database/${databaseId}/table/${tableId}/history`) + .then((response) => { + console.info('Loaded history of table with id', tableId, 'in database with id', databaseId) + resolve(response.data) + }) + .catch((error) => { + console.error('Failed to load history', error) + reject(error) + }) + }); + } + async function suggest(databaseId: number, tableId: number, columnId: number): Promise<TableColumnEntityDto[]> { const axios = useAxiosInstance() console.debug('suggest semantic entities for table column with id', columnId, 'of table with id', tableId, 'of database with id', databaseId) @@ -224,6 +240,7 @@ export const useTableService = (): any => { create, remove, removeTuple, + history, suggest, isOwner, tableNameToInternalName diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index 008de9b2c2..366ef87a47 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -550,6 +550,12 @@ interface QueryResultDto { result_number: number | null; } +interface TableHistoryDto { + timestamp: Date; + event: string; + total: number; +} + interface TableCreateDto { name: string; description: string; diff --git a/dbrepo-ui/locales/de-AT.json b/dbrepo-ui/locales/de-AT.json index 481043d49d..afe671d020 100644 --- a/dbrepo-ui/locales/de-AT.json +++ b/dbrepo-ui/locales/de-AT.json @@ -490,8 +490,11 @@ } }, "versioning": { - "title": "Versionierung", + "title": "Verlauf", "subtitle": "Wählen Sie einen Zeitstempel aus, um die Daten für diese bestimmte Tageszeit anzuzeigen.", + "chart": { + "title": "Datenereignisse" + }, "timestamp": { "label": "Zeitstempel", "hint": "Erforderlich. ", @@ -1195,13 +1198,13 @@ }, "table": { "data": { - "refresh": "Aktualisierung", + "refresh": "Aktualisieren", "add": "Hinzufügen", "edit": "Aktualisieren", "delete": "Löschen", "tuple": "Eintrag", "download": "Herunterladen", - "version": "Geschichte", + "version": "Verlauf", "subtitle": "Stellen Sie Daten bereit, die direkt in den Datensatz eingefügt werden sollen." } } diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index 077c5d079e..08577403b1 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -490,8 +490,11 @@ } }, "versioning": { - "title": "Versioning", + "title": "History", "subtitle": "Select a timestamp to view the data for this specific time of day.", + "chart": { + "title": "Data Events" + }, "timestamp": { "label": "Timestamp", "hint": "Required. Format yyyy-MM-dd HH:mm:ss", -- GitLab