diff --git a/.env.unix.example b/.env.unix.example index 5e3cb074dc4c043b4a17bfd606ceb852a1f658d5..e527bca539e3ba4ea35a87269ce4084e6e38c300 100644 --- a/.env.unix.example +++ b/.env.unix.example @@ -4,7 +4,8 @@ JWT_ISSUER="http://localhost/realms/dbrepo" JWT_PUBKEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB" JWT_CERT="MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk=" SHARED_FILESYSTEM=/tmp -ELASTIC_PASSWORD=elastic +SEARCH_USERNAME=admin +SEARCH_PASSWORD=admin METADATA_DB=fda METADATA_USERNAME=root METADATA_PASSWORD=dbrepo diff --git a/README.md b/README.md index 1fde55325b7c626ff08179ba7411a8e01816aeee..337f5d812907c18e02e495b0b2e7ce5d42e07d94 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ $ docker-compose build --parallel A more detailed description on how to get started is available at our documentation -website: [https://dbrepo-docs.ossdip.at/getting-started/](https://dbrepo-docs.ossdip.at/getting-started/) +website: [https://www.ifs.tuwien.ac.at/infrastructures/dbrepo//getting-started/](https://www.ifs.tuwien.ac.at/infrastructures/dbrepo//getting-started/) ### Run diff --git a/dbrepo-container-service/Dockerfile b/dbrepo-container-service/Dockerfile index 9e8c839383c3441553d11fe8aeb473133f7e3b82..9b27413bd73028ad07a0ca6ec182afa6f2131d7c 100644 --- a/dbrepo-container-service/Dockerfile +++ b/dbrepo-container-service/Dockerfile @@ -30,8 +30,8 @@ ENV METADATA_USERNAME=root ENV METADATA_PASSWORD=dbrepo ENV BROKER_USERNAME=fda ENV BROKER_PASSWORD=fda -ENV ELASTIC_USERNAME=elastic -ENV ELASTIC_PASSWORD=elastic +ENV SEARCH_USERNAME=admin +ENV SEARCH_PASSWORD=admin ENV SHARED_FILESYSTEM=/tmp ENV USER_NETWORK=userdb ENV LOG_LEVEL=debug diff --git a/dbrepo-container-service/pom.xml b/dbrepo-container-service/pom.xml index c17167494db72c163d1304779485e5cf338e92f0..8c4c65ef615f46ca8d19fcf3d980e91f23016a65 100644 --- a/dbrepo-container-service/pom.xml +++ b/dbrepo-container-service/pom.xml @@ -30,6 +30,7 @@ <jacoco.version>0.8.10</jacoco.version> <jwt.version>4.3.0</jwt.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -88,6 +89,16 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> + </dependency> <!-- Entity and API --> <dependency> <groupId>at.tuwien</groupId> @@ -108,6 +119,12 @@ <version>${mariadb.version}</version> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java index 7ef30669bce222658b191aa5a5dd5f05e2cb811c..132ad5519db7a8b891efc4328aa17433d806d9f7 100644 --- a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java +++ b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java @@ -2,16 +2,17 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; -@SpringBootApplication @EnableJpaAuditing @EnableTransactionManagement -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) @EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoContainerManagingApplication { public static void main(String[] args) { diff --git a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml index 9760a7ba9def6da76170e5f68bdb68903ec12d13..d08d2341bd64670e50c43cd32915eaebd595bfe6 100644 --- a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml @@ -27,10 +27,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 management.endpoints.web.exposure.include: health,info,prometheus springdoc.swagger-ui.enabled: true server: @@ -50,4 +50,4 @@ fda: public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client - gateway.endpoint: http://localhost \ No newline at end of file + gateway.endpoint: http://localhost diff --git a/dbrepo-container-service/rest-service/src/main/resources/application.yml b/dbrepo-container-service/rest-service/src/main/resources/application.yml index 70619e94b9d9ea34578c06eb8e1fc42b38b7ebb0..554fe0c8f2bde3c837e10f5234759ca73e13a344 100644 --- a/dbrepo-container-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-container-service/rest-service/src/main/resources/application.yml @@ -1,5 +1,7 @@ app.version: '@project.version@' spring: + autoconfigure: + exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration main.banner-mode: off datasource: url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}" @@ -27,10 +29,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: "${ELASTIC_USERNAME}" - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 management.endpoints.web.exposure.include: health,info,prometheus springdoc.swagger-ui.enabled: true server: diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java index b5b9a9deb7197d174b4ccc3c377143052dac1693..acaa7b1c87fa808b6c6af90cb63d6e8a6410f82a 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java @@ -2,12 +2,11 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.api.container.*; -import at.tuwien.config.DockerConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.ContainerEndpoint; import at.tuwien.entities.container.Container; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.impl.ContainerServiceImpl; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java index 689ac6ea555c3d00418c055ad72307b51653a552..f6b05e147582fc78bbf45716dce770d375e8e2dc 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java @@ -1,19 +1,12 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; -import at.tuwien.api.container.image.ImageBriefDto; -import at.tuwien.api.container.image.ImageChangeDto; -import at.tuwien.api.container.image.ImageCreateDto; -import at.tuwien.api.container.image.ImageDto; import at.tuwien.config.DockerConfig; -import at.tuwien.config.DockerDaemonConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.ImageEndpoint; -import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -22,20 +15,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.AccessDeniedException; -import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.security.Principal; -import java.util.List; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.when; @Log4j2 @ExtendWith(SpringExtension.class) diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java index 77d238be78c50dd20ea144b4a2c90d1c2aa720d6..32380858b126df2d5867d13f29743790517119b1 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java @@ -10,7 +10,7 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.ImageEndpoint; import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.impl.ImageServiceImpl; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index 35765c567f3a2d55a32a16df1f3b414f030a7978..20f54cca5a41d74b37fcc278d372f00cd82971b1 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -7,10 +7,10 @@ import at.tuwien.config.DockerConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.container.Container; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.ImageRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.*; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java index cdbcd6b052bf3918c8c4ff44e5904529288d92de..5231fe2eef09c2f72d4a994265e7c41fe9c1123f 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java @@ -4,9 +4,9 @@ import at.tuwien.BaseUnitTest; import at.tuwien.api.container.image.ImageCreateDto; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.ImageRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.impl.ImageServiceImpl; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.RandomUtils; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java index 82b9162e4a3f0ac5696c4596182d0a5cae740fbb..f92fa9102ad43cc1d3c9f0abcfccfdc354d4b111 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java @@ -6,7 +6,7 @@ import at.tuwien.api.container.image.ImageCreateDto; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ImageRepository; +import at.tuwien.repository.mdb.ImageRepository; import at.tuwien.service.impl.ImageServiceImpl; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java index d7b341c23a0ac741cf6422906c1cc20c984ae038..5de85233045cedd229443e0c6113b99ca4d8c691 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java @@ -3,8 +3,8 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.ImageNotFoundException; -import at.tuwien.repository.jpa.ImageRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.ImageRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.impl.ImageServiceImpl; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -15,7 +15,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.transaction.UnexpectedRollbackException; import static org.junit.jupiter.api.Assertions.*; diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java index a1a06e35c2e8fec2b8de56c2f56c10d7de307308..de8aeb7439933dbdbd13df95219fdb2aa9111cf1 100644 --- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java +++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java @@ -4,8 +4,8 @@ import at.tuwien.BaseUnitTest; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java deleted file mode 100644 index c1a5d756b7af9d163766f3a9fae3c31cf157a77c..0000000000000000000000000000000000000000 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package at.tuwien.repository.jpa; - -import at.tuwien.entities.user.Realm; -import at.tuwien.entities.user.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; -import java.util.UUID; - -@Repository -public interface RealmRepository extends JpaRepository<Realm, UUID> { - -} diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 91% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index df2a6eba16e4bdbefa3a5de7eaff1dea507ed8ad..39a041738c73ed8ff3dd899cf6ea6d2a0e8b5c98 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 88% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index 688993ab3ca2e32edeb59b6c66dc838f58333b02..c11a773abc70ade28fdf7aa45845043fafcdd314 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java similarity index 88% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java index f76f9976d6de9884579ac242ce616d6c0caf099e..23883215860e412b4136030f1308918bab91972b 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Identifier; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java similarity index 64% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java index c2af74312471ee253dc31be54ca6c30381b88438..889144818dacc9b5728c13a0e84a4fb6ec39e807 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java @@ -1,10 +1,11 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImageDate; +import at.tuwien.entities.container.image.ContainerImageDateKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface ImageDateRepository extends JpaRepository<ContainerImageDate, Long> { +public interface ImageDateRepository extends JpaRepository<ContainerImageDate, ContainerImageDateKey> { } diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 91% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index ca60fb1a740ae2047029d977b8ed96acae270c83..3e9b129fc0e32e423e909736f09a89ed8bc35acf 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java similarity index 88% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java index 5b5855dec88d3e3ef8d032369a7d6af6956a702e..7b53e7245983c7ca848da7c1175e0158e2f2a930 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Realm; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 90% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index e25363f4436dda27098d56a8f1a02913b2c2267a..2a0008f4f6406319663e1622138d2c3635a34084 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -2,7 +2,6 @@ package at.tuwien.service.impl; import at.tuwien.api.container.ContainerCreateRequestDto; import at.tuwien.api.container.ContainerDto; -import at.tuwien.api.container.ContainerStateDto; import at.tuwien.config.DockerDaemonConfig; import at.tuwien.entities.container.Container; import at.tuwien.entities.container.image.ContainerImage; @@ -10,8 +9,8 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.ContainerMapper; import at.tuwien.mapper.ImageMapper; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.ImageRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.ImageRepository; import at.tuwien.service.ContainerService; import at.tuwien.service.UserService; import com.github.dockerjava.api.DockerClient; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java index c7e16a398dff015c0da0131759bf635163591d6a..a9f2f4f7c1c250fe1497fec0f9338622f4a43bef 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java @@ -6,7 +6,7 @@ import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.entities.container.image.ContainerImageEnvironmentItem; import at.tuwien.exception.*; import at.tuwien.mapper.ImageMapper; -import at.tuwien.repository.jpa.ImageRepository; +import at.tuwien.repository.mdb.ImageRepository; import at.tuwien.service.ImageService; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.async.ResultCallback; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 52fec3af7ca856095581bd2dae572134ceb263b0..62b9995acbd5c66fa8e48fc8305db81559119795 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-database-service/Dockerfile b/dbrepo-database-service/Dockerfile index bf79827ee7dd87c0b008b564516ac582764a3c5e..c634dc395645309c3cf74124080c5449848a1e7c 100644 --- a/dbrepo-database-service/Dockerfile +++ b/dbrepo-database-service/Dockerfile @@ -30,8 +30,8 @@ ENV METADATA_USERNAME=root ENV METADATA_PASSWORD=dbrepo ENV BROKER_USERNAME=fda ENV BROKER_PASSWORD=fda -ENV ELASTIC_USERNAME=elastic -ENV ELASTIC_PASSWORD=elastic +ENV SEARCH_USERNAME=admin +ENV SEARCH_PASSWORD=admin ENV GATEWAY_ENDPOINT=http://gateway-service ENV LOG_LEVEL=debug ENV CLIENT_ID="dbrepo-client" diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml index d694d035a95e4122a827f9a099729427a7acffd5..dc1a4e444643c1aa0f41918c0852b2a3e096d7cf 100644 --- a/dbrepo-database-service/pom.xml +++ b/dbrepo-database-service/pom.xml @@ -31,6 +31,7 @@ <c3p0.version>0.9.5.5</c3p0.version> <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -67,12 +68,6 @@ <artifactId>dbrepo-metadata-db-entites</artifactId> <version>${project.version}</version> </dependency> - <!-- elasticsearch --> - <dependency> - <groupId>co.elastic.clients</groupId> - <artifactId>elasticsearch-java</artifactId> - <version>${elasticsearch-client.version}</version> - </dependency> <!-- AMQP --> <dependency> <groupId>org.springframework.amqp</groupId> @@ -115,6 +110,21 @@ <artifactId>mariadb-java-client</artifactId> <version>${mariadb.version}</version> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>opensearch-java</artifactId> + <version>2.5.0</version> + </dependency> <!-- Entity, API, QueryStore --> <dependency> <groupId>at.tuwien</groupId> @@ -135,6 +145,12 @@ <scope>compile</scope> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java index 306944de33f8a180935fdbf6cd5aff3bf4b42667..50eb96b7206e0f6fdb616a4cb56b1a6ccf3ecbe6 100644 --- a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java +++ b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java @@ -2,18 +2,19 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; -@SpringBootApplication @EnableJpaAuditing @EnableTransactionManagement -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) @EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoDatabaseManagingApplication { public static void main(String[] args) { diff --git a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java index 40a45b0cce76ed6d69c2bbedb344a9fb9ea64493..d1e815abc1b709231c7685ebe7fb264478ba57b4 100644 --- a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java +++ b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java @@ -1,6 +1,5 @@ package at.tuwien.endpoints; -import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.*; import at.tuwien.api.error.ApiErrorDto; @@ -10,7 +9,7 @@ import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; -import at.tuwien.repository.jpa.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; import at.tuwien.service.*; import at.tuwien.service.impl.MariaDbServiceImpl; import io.micrometer.core.annotation.Timed; diff --git a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml index 1d647d4d6f0a05a54e73dc6fb159cb2f2b8baabc..a4d319886574e497b2eb4d374b33c4fb41113c50 100644 --- a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml @@ -27,10 +27,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + password: admin + username: admin + uris: localhost:9200 management.endpoints.web.exposure.include: health,info,prometheus server: port: 9092 diff --git a/dbrepo-database-service/rest-service/src/main/resources/application.yml b/dbrepo-database-service/rest-service/src/main/resources/application.yml index ba7ad2434e03693d0413759fcec3c985c3984586..a13a452a28c19896f8cccbe596f4bd007cb584a8 100644 --- a/dbrepo-database-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-database-service/rest-service/src/main/resources/application.yml @@ -27,10 +27,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: "${ELASTIC_USERNAME}" - uris: http://search-db:9200 + opensearch: + password: "${SEARCH_PASSWORD}" + username: "${SEARCH_USERNAME}" + uris: search-db:9200 management.endpoints.web.exposure.include: health,info,prometheus server: port: 9092 diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java index ac03038159766dd43803905ef9a2c90df841e20c..df61f6197b64646980cf1fa585e62478c478ecdc 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java @@ -13,11 +13,11 @@ import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.AccessMapper; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.service.AccessService; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,7 +27,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; @@ -49,6 +48,9 @@ public class AccessEndpointUnitTest extends BaseUnitTest { @MockBean private IndexConfig indexInitializer; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private Channel channel; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index cab709d9c6692a9e2c0cc236520751659ec4306d..e6fd7b8510fc1b0b8830fb6a862e096ac042fce8 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -2,6 +2,7 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +33,9 @@ public class ActuatorComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Test public void actuatorInfo_succeeds() throws Exception { this.mockMvc.perform(get("/actuator/info")) diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java index 4cf0fc3edb0a0dc7898a07e5de495c825be5456b..513d93fa263f4f2c8485c83b7d51c76bc0ff2044 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java @@ -2,7 +2,6 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.*; -import at.tuwien.config.H2Utils; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.DatabaseEndpoint; @@ -10,13 +9,11 @@ import at.tuwien.entities.container.Container; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.DatabaseIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; +import at.tuwien.repository.mdb.*; import at.tuwien.service.*; import at.tuwien.service.impl.MariaDbServiceImpl; -import at.tuwien.test.BaseTest; import com.rabbitmq.client.Channel; -import lombok.With; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.*; import org.junit.jupiter.api.extension.ExtendWith; @@ -25,10 +22,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java index b102cbf8519f3389df6983a4a507faead88c70f9..8d295059ec299c3bc8216a795f1a8927ce62fc53 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java @@ -5,8 +5,8 @@ import at.tuwien.api.database.*; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.LicenseEndpoint; -import at.tuwien.repository.jpa.LicenseRepository; -import at.tuwien.test.BaseTest; +import at.tuwien.repository.mdb.LicenseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -16,7 +16,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; @@ -38,6 +37,9 @@ public class LicenseEndpointUnitTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private LicenseRepository licenseRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 2f448ca36e90e3d81aac0e68ddaa7304fbeb5af9..fcd6bd8984d88d5ebd6821e3a415911a16727597 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -2,6 +2,7 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +33,9 @@ public class SwaggerComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Test public void swaggerUi_succeeds() throws Exception { this.mockMvc.perform(get("/swagger-ui/index.html")) diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java index 4d920fbbbe30bb091672a3b349f6d9eb0d1886d0..db1c4a966ce040c514d82bc11db8a4621c8340c5 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java @@ -5,6 +5,7 @@ import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.BrokerVirtualHostCreationException; import at.tuwien.exception.BrokerVirtualHostGrantException; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.test.BaseTest; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; @@ -41,6 +42,9 @@ public class BrokerServiceGatewayTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean @Qualifier("brokerRestTemplate") private RestTemplate restTemplate; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/mapper/DatabaseMapperTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/mapper/DatabaseMapperTest.java index 766ba8ed505cf190bc485c363a576bbdd31993d6..af5a088a39a82748b1d12211ef852e2271ef2a0f 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/mapper/DatabaseMapperTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/mapper/DatabaseMapperTest.java @@ -5,6 +5,7 @@ import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.test.BaseTest; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; @@ -31,6 +32,9 @@ public class DatabaseMapperTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Autowired private DatabaseMapper databaseMapper; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java index bcb86edb3372d4f70ca65bd13212657b159427c4..2a5de492d3518b01997b71fceb501d61a287fc62 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java @@ -5,15 +5,13 @@ import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseGiveAccessDto; import at.tuwien.api.database.DatabaseModifyAccessDto; import at.tuwien.config.DockerConfig; -import at.tuwien.config.H2Utils; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.AccessType; -import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; -import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.*; @@ -50,6 +48,9 @@ public class AccessServiceIntegrationTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Autowired private ImageRepository imageRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java index a530ea55f1073b9b96d9c96a35168900557259cb..e7221b3642ae1433ccc698c13e5dc53db9c4628c 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java @@ -3,17 +3,16 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseModifyAccessDto; -import at.tuwien.config.H2Utils; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.AccessType; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.AccessDeniedException; import at.tuwien.exception.NotAllowedException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +41,9 @@ public class AccessServiceUnitTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private DatabaseRepository databaseRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java index 1117c0b9a8f7935e5186113617326c8d5155874f..eab873555a3b1413c95fa7aa441405f3a3f81644 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java @@ -5,10 +5,10 @@ import at.tuwien.api.database.DatabaseCreateDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.config.*; import at.tuwien.entities.database.Database; -import at.tuwien.repository.elastic.DatabaseIdxRepository; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.DatabaseRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.impl.MariaDbServiceImpl; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java index dde3a3f802b268d79d5e9b9f3f2a2e3ce9ab085e..5afc03b3bdd9fbad3382ab37d32e62216f8be7f2 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java @@ -10,14 +10,12 @@ import at.tuwien.config.IndexConfig; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.Database; -import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.DatabaseIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; +import at.tuwien.repository.mdb.*; import at.tuwien.service.impl.MariaDbServiceImpl; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.apache.http.auth.BasicUserPrincipal; import org.junit.jupiter.api.*; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,10 +25,7 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.File; -import java.security.Principal; import java.sql.SQLException; -import java.util.List; -import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java index 9d02bb53f434b65aae36bbf9ec8ef6f7ee1bb74d..afd7ddcaf6ab04ce909121ba2b0486ac540d2dab 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java @@ -8,11 +8,11 @@ import at.tuwien.entities.container.Container; import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.entities.database.Database; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.service.impl.MariaDbServiceImpl; import at.tuwien.service.impl.RabbitMqServiceImpl; -import at.tuwien.test.BaseTest; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -42,6 +42,9 @@ public class DatabaseServiceUnitTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private RabbitMqServiceImpl rabbitMqService; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java index d442fccb1bcfc13ad97ae50b8e48a699be9f4ca8..b39fa1b5074899bf82a26e4fd8a659a39cfe573f 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java @@ -1,22 +1,13 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.config.DockerConfig; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.identifier.Identifier; -import at.tuwien.entities.identifier.IdentifierType; -import at.tuwien.exception.AmqpException; -import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.repository.jpa.*; -import at.tuwien.service.impl.RabbitMqServiceImpl; -import at.tuwien.utils.AmqpUtils; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.apache.http.auth.BasicUserPrincipal; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -26,11 +17,9 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.security.Principal; import java.util.List; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.when; @Log4j2 @SpringBootTest @@ -47,6 +36,9 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Autowired private RealmRepository realmRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java index 98ae89f24169005a2e0caa5cd9035351365b9d7b..3cf9f68def035e2218d96bbc8ae6ad39c9cd5137 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java @@ -4,9 +4,9 @@ import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.License; -import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.LicenseNotFoundException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -15,7 +15,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; @@ -37,6 +36,9 @@ public class LicenseServiceIntegrationTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @Autowired private LicenseRepository licenseRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java index 17e63a0882420e21a3f84ce24b0f3e0851adaff6..800da8a157faa805f81d1b7b2bf70e537974048a 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java @@ -8,12 +8,12 @@ import at.tuwien.exception.AmqpException; import at.tuwien.exception.BrokerVirtualHostCreationException; import at.tuwien.exception.BrokerVirtualHostGrantException; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.service.impl.RabbitMqServiceImpl; import at.tuwien.utils.AmqpUtils; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.apache.http.auth.BasicUserPrincipal; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -23,7 +23,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.security.Principal; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -40,6 +39,9 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private DatabaseRepository databaseRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java index b01dcfbd68b57d4ee5271443a86633303b15f9a0..eeaaf10655ce2f48c8c857086137773b4de4fabd 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java @@ -1,19 +1,16 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.config.DockerConfig; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.AmqpException; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.service.impl.RabbitMqServiceImpl; -import at.tuwien.utils.AmqpUtils; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -22,11 +19,9 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.IOException; -import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.when; @Log4j2 @SpringBootTest @@ -39,6 +34,9 @@ public class MessageQueueServiceUnitTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private DatabaseRepository databaseRepository; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java index e52110c7ff7cca2c40b13b091c7d0f4bb8359be1..726405881c79d5b8876ad85c4d272d2e1b759f84 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java @@ -7,7 +7,8 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.service.impl.HibernateConnector; import at.tuwien.service.impl.QueryStoreServiceImpl; import com.mchange.v2.c3p0.ComboPooledDataSource; @@ -37,6 +38,9 @@ public class QueryStoreServiceIntegrationTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private Channel channel; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java index 6c4c0d0b74bc6b2d2b414adfe87accd87f2c93b4..47f2a25d7534c85ab1a33210cbfaabaa3779da81 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java @@ -3,13 +3,11 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; -import at.tuwien.entities.database.License; import at.tuwien.entities.user.User; -import at.tuwien.exception.LicenseNotFoundException; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.LicenseRepository; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -20,7 +18,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.util.List; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,6 +34,9 @@ public class UserServiceIntegrationTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private DatabaseIdxRepository databaseIdxRepository; + @MockBean private Channel channel; diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/utils/FileUtilTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/utils/FileUtilTest.java index 3dd48bcc4fa10d8d0d31d07957b6361f5aaba271..026b0f429825689995129930aced2044d94d107c 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/utils/FileUtilTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/utils/FileUtilTest.java @@ -3,6 +3,7 @@ package at.tuwien.utils; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; +import at.tuwien.repository.sdb.DatabaseIdxRepository; import at.tuwien.test.BaseTest; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; @@ -27,7 +28,10 @@ public class FileUtilTest extends BaseUnitTest { private ReadyConfig readyConfig; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private DatabaseIdxRepository databaseIdxRepository; @MockBean private Channel channel; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java index dc0e46355d1aa2cc10ed1c2137bba891a95ad4e2..a33578d1293ab9ccacca9f479b042a628385ffa5 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java @@ -2,15 +2,11 @@ package at.tuwien.config; import at.tuwien.api.database.DatabaseDto; import at.tuwien.mapper.DatabaseMapper; -import at.tuwien.repository.elastic.DatabaseIdxRepository; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import lombok.extern.log4j.Log4j2; import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; -import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -21,39 +17,26 @@ import java.util.stream.Collectors; @Component public class IndexConfig { - private final Environment environment; private final DatabaseMapper databaseMapper; private final DatabaseRepository databaseRepository; private final DatabaseIdxRepository databaseIdxRepository; - private final ElasticsearchOperations elasticsearchOperations; - private final ApplicationEventPublisher applicationEventPublisher; - public IndexConfig(Environment environment, DatabaseMapper databaseMapper, DatabaseRepository databaseRepository, - DatabaseIdxRepository databaseIdxRepository, ElasticsearchOperations elasticsearchOperations, - ApplicationEventPublisher applicationEventPublisher) { - this.environment = environment; + public IndexConfig(DatabaseMapper databaseMapper, DatabaseRepository databaseRepository, + DatabaseIdxRepository databaseIdxRepository) { this.databaseMapper = databaseMapper; this.databaseRepository = databaseRepository; this.databaseIdxRepository = databaseIdxRepository; - this.elasticsearchOperations = elasticsearchOperations; - this.applicationEventPublisher = applicationEventPublisher; } @Transactional @EventListener(ApplicationReadyEvent.class) public void initIndex() { - log.debug("creating databaseindex"); - final IndexCoordinates databaseIndex = IndexCoordinates.of("databaseindex"); - if (!elasticsearchOperations.indexOps(databaseIndex).exists()) { - elasticsearchOperations.indexOps(databaseIndex).create(); - elasticsearchOperations.indexOps(databaseIndex).createMapping(DatabaseDto.class); - } final List<DatabaseDto> databases = databaseRepository.findAll() .stream() .map(databaseMapper::databaseToDatabaseDto) .collect(Collectors.toList()); - log.debug("add {} databases to elastic search index", databases.size()); databaseIdxRepository.saveAll(databases); + log.info("Added {} databases to open search index", databases.size()); } } diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java similarity index 87% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java index 3cf7c7ad0072c6ddbd510696263cf6921dc6d1e0..fbcd74ed775bb84c3a05ca9a9f2ac52a662fa56d 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.DatabaseAccess; +import at.tuwien.entities.database.DatabaseAccessKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -11,7 +12,7 @@ import java.util.Optional; import java.util.UUID; @Repository -public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> { +public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> { void deleteByHdbidAndHuserid(Long databaseId, UUID userId); diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 97% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index 92e18ed6612ca7b5322e8694fec134a076aa1748..b70f0e0fb20ef5b6479805f7ed06e57c138aa907 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java similarity index 93% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java index 283dd62e8d4b75d573a318fd80d5be21abaf834a..e9a1ace9a73872c75e4fbb31af14fd698f67dcea 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierType; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 88% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index c033bd17dc63c7c0f8cb8b2354c689578d3eccf7..b1020fdcc532602d72cad5018b964edec4f25eea 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java similarity index 90% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java index 6ad152559aa62b08972fa6ed4488057ad0d9dae7..f59906b29c023a254b71c2df84778d4e02d837b2 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.License; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java similarity index 88% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java index 99f75a4104e8daa1c61a3e7b67ee28aa4a3800ec..bd985254a5e2c6c5d42679754f5c164f975ff2ac 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Realm; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java similarity index 52% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java index 9f01ada5f7e7a2605c6dbaeef7e1b92afce9c05a..a1585a8f69babe0b0f5a5ff9a70cfaad52f2f075 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java @@ -1,10 +1,11 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.Table; +import at.tuwien.entities.database.table.TableKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableRepository extends JpaRepository<Table, Long> { +public interface TableRepository extends JpaRepository<Table, TableKey> { } diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 90% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java similarity index 88% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java index 709fa7be4d25e1b2ae4351fde7281d701fc8cd79..6125ff39ab41a7e341bb01a32bbc152415483032 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.DatabaseDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index a94df1399012e231287e07756353e2aa11f6be97..1a615abbe6105ba959f8002f42a4f4c7df6b41d2 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -8,7 +8,7 @@ import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; -import at.tuwien.repository.jpa.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.UserService; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index 76c29263d4b42461ac01274551f5650a5b6397ba..1796de02e8d04b2b25cd6ab4eba5c0d4427e0cd6 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -4,7 +4,7 @@ import at.tuwien.api.container.ContainerDto; import at.tuwien.entities.container.Container; import at.tuwien.exception.ContainerNotFoundException; import at.tuwien.gateway.ContainerServiceGateway; -import at.tuwien.repository.jpa.ContainerRepository; +import at.tuwien.repository.mdb.ContainerRepository; import at.tuwien.service.ContainerService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java index 687a630b49e1359158528685a0cae8e691b2fc5d..fec841198727c1fd61f343a02141a58e0c5f112a 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -1,16 +1,13 @@ package at.tuwien.service.impl; import at.tuwien.entities.identifier.Identifier; -import at.tuwien.entities.identifier.IdentifierType; -import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.mdb.IdentifierRepository; import at.tuwien.service.IdentifierService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Optional; @Log4j2 @Service diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java index 4608207d9291de57f1bfbcbf2db2fd7f191f5dbf..22a7634c3c29728ecb2ddf4f6b0c88869b4bf405 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.License; import at.tuwien.exception.LicenseNotFoundException; -import at.tuwien.repository.jpa.LicenseRepository; +import at.tuwien.repository.mdb.LicenseRepository; import at.tuwien.service.LicenseService; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java index 3723ccaae88b0ad247a4be97e018962c48ae918e..0725475a576d5db1a134aef6c6cbcde40ac9cdd1 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java @@ -9,8 +9,8 @@ import at.tuwien.entities.database.Database; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; -import at.tuwien.repository.elastic.DatabaseIdxRepository; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.sdb.DatabaseIdxRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import at.tuwien.service.ContainerService; import at.tuwien.service.DatabaseService; import at.tuwien.service.UserService; @@ -108,11 +108,10 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe } /* save in metadata database */ databaseRepository.deleteById(databaseId); - log.info("Deleted database with id {}", databaseId); - log.trace("deleted database {}", database); + log.info("Deleted database with id {} in metadata database", databaseId); // delete in database_index - elastic search databaseIdxRepository.deleteById(databaseId); - log.info("Deleted database in elastic search with id {}", databaseId); + log.info("Deleted database with id {} in open search database", databaseId); } @Override @@ -155,10 +154,11 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe log.info("Created user {} on database with owner access", user.getUsername()); /* save in metadata database */ final Database entity = databaseRepository.save(database); - log.info("Created database with id {}", entity.getId()); + log.info("Created database with id {} in metadata database", entity.getId()); /* save in database_index - elastic search */ - databaseIdxRepository.save(databaseMapper.databaseToDatabaseDto(entity)); - log.info("Saved database in elastic search with id {}", entity.getId()); + final DatabaseDto databaseDto = databaseMapper.databaseToDatabaseDto(entity); + databaseIdxRepository.save(databaseDto); + log.info("Created database with id {} in open search database", entity.getId()); return entity; } diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java index 70f2cabd3b49a73f38b64b618bfda3261bc6eecf..ec2bbaf512cf2a83dd0d241ea0f7c9d92be90957 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java @@ -9,7 +9,7 @@ import at.tuwien.exception.BrokerVirtualHostCreationException; import at.tuwien.exception.BrokerVirtualHostGrantException; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.mapper.AmqpMapper; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import at.tuwien.service.MessageQueueService; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 003f54c319a01c901076553690c5d319aeab2953..2626da3c2cdb4c45b13cc9ea93ca9f4b472fd7e3 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,13 +2,12 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; import java.util.UUID; diff --git a/dbrepo-identifier-service/pom.xml b/dbrepo-identifier-service/pom.xml index 07fe813de20df93f19cc15894d164db2c717507d..31c7b376851c0fc7fa113c67f8399f078bf2c2a5 100644 --- a/dbrepo-identifier-service/pom.xml +++ b/dbrepo-identifier-service/pom.xml @@ -35,6 +35,7 @@ <super-csv.version>2.4.0</super-csv.version> <jsql.version>4.6</jsql.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -98,8 +99,14 @@ <version>${mariadb.version}</version> </dependency> <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-elasticsearch</artifactId> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> </dependency> <!-- Docker --> <dependency> @@ -127,6 +134,12 @@ <version>${springdoc-openapi.version}</version> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> @@ -214,6 +227,7 @@ <exclude>at/tuwien/exception/**/*</exclude> <exclude>at/tuwien/utils/**/*</exclude> <exclude>at/tuwien/handlers/**/*</exclude> + <exclude>at/tuwien/auth/**/*</exclude> <exclude>**/DbrepoIdentifierServiceApplication.class</exclude> </excludes> </configuration> diff --git a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java index 2104df15d67bac70158e33d6ca942f1e689d35c5..7ec621e738fc31f8fc85bc201ebd6d79ed8039b7 100644 --- a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java +++ b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java @@ -2,6 +2,7 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -10,11 +11,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaAuditing -@SpringBootApplication @EnableTransactionManagement -@EntityScan(basePackages = "at.tuwien.entities") -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoIdentifierServiceApplication { public static void main(String[] args) { diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml index 6800891595f1666ccdf046f764174ac52ccf7ca6..ee738133cafd2681ce0ad6f879e1edc33dae9315 100644 --- a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml @@ -27,10 +27,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 management.endpoints.web.exposure.include: health,info,prometheus server: port: 9096 diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml index 0ec8f69c7b680fb1105deb024141aa139aff4333..2ebfae7cd8096fcffc33474e57c57a59459d7a9f 100644 --- a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml @@ -1,6 +1,8 @@ app.version: '@project.version@' spring: main.banner-mode: off + autoconfigure: + exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration datasource: url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}" driver-class-name: org.mariadb.jdbc.Driver @@ -27,10 +29,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: elastic - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 management.endpoints.web.exposure.include: health,info,prometheus server: port: 9096 diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index 3677c7f0451b17bc696a779ff759066bfd57832d..2b4f129bfb5141a31efc6e3e583dd9cd54eeb88e 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -1,7 +1,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -22,11 +23,14 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest public class ActuatorComponentTest extends BaseUnitTest { - @Autowired - private MockMvc mockMvc; + @MockBean + private IndexConfig indexConfig; @MockBean - private IndexInitializer indexConfig; + private IdentifierIdxRepository identifierIdxRepository; + + @Autowired + private MockMvc mockMvc; @Test public void actuatorInfo_succeeds() throws Exception { diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java index a2ea25e54284cb6df30fa4558a3724832bf7fc9e..406ca2e65b4d36ffdea6c9ede5e1b400ce60ae7e 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java @@ -3,11 +3,12 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierTypeDto; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.IdentifierEndpoint; import at.tuwien.exception.NotAllowedException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -34,11 +35,14 @@ import static org.junit.jupiter.api.Assertions.*; public class IdentifierEndpointIntegrationTest extends BaseUnitTest { @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexInitializer; @MockBean private ReadyConfig readyConfig; + @MockBean + private IdentifierIdxRepository identifierIdxRepository; + @Autowired private IdentifierRepository identifierRepository; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java index 1be9690cb0e989e974a8f81494a98ccd68acf202..c98c045e69b9d2e6be6f8a7c855659b7674b039f 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java @@ -5,7 +5,7 @@ import at.tuwien.api.identifier.IdentifierCreateDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.EndpointConfig; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.IdentifierEndpoint; import at.tuwien.endpoints.PersistenceEndpoint; @@ -16,7 +16,8 @@ import at.tuwien.entities.identifier.RelatedIdentifier; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.QueryServiceGateway; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.IdentifierService; import org.apache.commons.io.FileUtils; @@ -29,7 +30,6 @@ import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.AccessDeniedException; -import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -54,7 +54,7 @@ public class IdentifierEndpointUnitTest extends BaseUnitTest { private ReadyConfig readyConfig; @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexConfig; @MockBean private IdentifierService identifierService; @@ -80,6 +80,9 @@ public class IdentifierEndpointUnitTest extends BaseUnitTest { @MockBean private QueryServiceGateway queryServiceGateway; + @MockBean + private IdentifierIdxRepository identifierIdxRepository; + @Autowired private IdentifierEndpoint identifierEndpoint; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java index d3c64bd929d72368c2917ed25f952fce282391b7..2f74995d16a86cc042eb909ae75360338adfb287 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java @@ -5,12 +5,13 @@ import at.tuwien.api.identifier.BibliographyTypeDto; import at.tuwien.api.identifier.CreatorDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierUpdateDto; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.PersistenceEndpoint; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.user.User; import at.tuwien.exception.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.IdentifierService; import at.tuwien.service.UserService; @@ -54,7 +55,10 @@ public class PersistenceEndpointUnitTest extends BaseUnitTest { private ReadyConfig readyConfig; @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private IdentifierIdxRepository identifierIdxRepository; @MockBean private AccessService accessService; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 0caa396455da3088708d66147dfe1afd35ae981a..6ef1503d94a374da4238fc8f909502c3c83c32c8 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -1,7 +1,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -26,7 +27,10 @@ public class SwaggerComponentTest extends BaseUnitTest { private MockMvc mockMvc; @MockBean - private IndexInitializer indexConfig; + private IndexConfig indexConfig; + + @MockBean + private IdentifierIdxRepository identifierIdxRepository; @Test public void swaggerUi_succeeds() throws Exception { diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java index 1a68af0041864473bcb23c43e0679a2c90d21f2d..055cc56e07a32c23bd95a6928c56da046d646dbe 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java @@ -2,11 +2,12 @@ package at.tuwien.gateway; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.QueryNotFoundException; import at.tuwien.exception.RemoteUnavailableException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import com.google.common.io.Files; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -36,11 +37,14 @@ import static org.mockito.Mockito.*; public class QueryServiceGatewayUnitTest extends BaseUnitTest { @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexConfig; @MockBean private ReadyConfig readyConfig; + @MockBean + private IdentifierIdxRepository identifierIdxRepository; + @MockBean @Qualifier("restTemplate") private RestTemplate restTemplate; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java index 1aad8f0b61650640eaeb10bb52234b2c19d6411b..beea45933df3de4a2bab46639e7cfa5135e95df4 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java @@ -8,10 +8,11 @@ import at.tuwien.api.identifier.IdentifierCreateDto; import at.tuwien.api.identifier.IdentifierUpdateDto; import at.tuwien.config.DataCiteConfig; import at.tuwien.config.EndpointConfig; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import at.tuwien.service.impl.IdentifierServiceImpl; import org.apache.http.auth.BasicUserPrincipal; import org.junit.jupiter.api.BeforeEach; @@ -29,7 +30,6 @@ import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestClientException; @@ -47,7 +47,7 @@ import static org.mockito.Mockito.when; public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest { @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexConfig; @MockBean(answer = Answers.RETURNS_MOCKS) private DataCiteConfig dataCiteConfig; @@ -55,6 +55,9 @@ public class DataCiteIdentifierServiceUnitTest extends BaseUnitTest { @MockBean(answer = Answers.RETURNS_MOCKS) private EndpointConfig endpointConfig; + @MockBean + private IdentifierIdxRepository identifierIdxRepository; + @Autowired private ImageRepository imageRepository; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9570960ead1b98cc0fc965e2545a7de0112e4a50 --- /dev/null +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java @@ -0,0 +1,81 @@ +package at.tuwien.service; + +import at.tuwien.BaseUnitTest; +import at.tuwien.config.IndexConfig; +import at.tuwien.entities.database.Database; +import at.tuwien.entities.user.User; +import at.tuwien.exception.DatabaseNotFoundException; +import at.tuwien.exception.UserNotFoundException; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; +import at.tuwien.service.UserService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.when; + +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class DatabaseServiceIntegrationTest extends BaseUnitTest { + + @MockBean + private IndexConfig indexConfig; + + @MockBean + private IdentifierIdxRepository identifierIdxRepository; + + @Autowired + private DatabaseService databaseService; + + @Autowired + private UserRepository userRepository; + + @Autowired + private RealmRepository realmRepository; + + @Autowired + private ContainerRepository containerRepository; + + @Autowired + private DatabaseRepository databaseRepository; + + @Autowired + private ImageRepository imageRepository; + + @BeforeEach + public void beforeEach() { + userRepository.save(USER_1); + realmRepository.save(REALM_DBREPO); + imageRepository.save(IMAGE_1); + containerRepository.save(CONTAINER_1); + databaseRepository.save(DATABASE_1); + } + + @Test + public void find_succeeds() throws DatabaseNotFoundException { + + /* test */ + final Database response = databaseService.find(DATABASE_1_ID); + assertEquals(DATABASE_1_ID, response.getId()); + } + + @Test + public void find_fails() { + + /* test */ + assertThrows(DatabaseNotFoundException.class, () -> { + databaseService.find(9999L); + }); + } + + +} diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java index 27bdb8c69b75578f56b203ec6f5fc9b0a570b136..96de2e004f9f9d8810f2fc2dcc6154bdcd7a5a24 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java @@ -3,13 +3,13 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.RelatedIdentifier; import at.tuwien.exception.*; import at.tuwien.gateway.QueryServiceGateway; -import at.tuwien.repository.elastic.IdentifierIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.IdentifierIdxRepository; +import at.tuwien.repository.mdb.*; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,7 +39,7 @@ import static org.mockito.Mockito.when; public class IdentifierServiceIntegrationTest extends BaseUnitTest { @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexInitializer; @MockBean private IdentifierIdxRepository identifierIdxRepository; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java index d7e8b28963278b32426509a2bffbe4816018a839..cfd4cb71dc193c9bdfc70e96b19f510983d0fd04 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java @@ -3,13 +3,12 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.identifier.IdentifierUpdateDto; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierType; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.IdentifierIdxRepository; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.sdb.IdentifierIdxRepository; +import at.tuwien.repository.mdb.IdentifierRepository; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +38,7 @@ public class IdentifierServiceUnitTest extends BaseUnitTest { private IdentifierRepository identifierRepository; @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexInitializer; @MockBean private IdentifierIdxRepository identifierIdxRepository; diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java index da772b10e1d1e3ba7830eacddf2ef2e352031b55..aeaaa30d623396d2129f313bb9d00255bb2ede02 100644 --- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java +++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java @@ -1,10 +1,11 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.config.IndexInitializer; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.IdentifierIdxRepository; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -23,7 +24,10 @@ import static org.mockito.Mockito.when; public class UserServiceUnitTest extends BaseUnitTest { @MockBean - private IndexInitializer indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private IdentifierIdxRepository identifierIdxRepository; @MockBean private UserRepository userRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java similarity index 58% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java index 0592364d2de1925f1f1298e635c3ddc58d0e0e06..e3688abbc1ced999ad425307ccdcb20cc254d27f 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java @@ -2,8 +2,8 @@ package at.tuwien.config; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.mapper.IdentifierMapper; -import at.tuwien.repository.elastic.IdentifierIdxRepository; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.sdb.IdentifierIdxRepository; +import at.tuwien.repository.mdb.IdentifierRepository; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -18,37 +18,28 @@ import java.util.stream.Collectors; @Component @Log4j2 -public class IndexInitializer { +public class IndexConfig { private final IdentifierMapper identifierMapper; private final IdentifierRepository identifierRepository; private final IdentifierIdxRepository identifierIdxRepository; - private final ElasticsearchOperations elasticsearchOperations; @Autowired - public IndexInitializer(IdentifierMapper identifierMapper, IdentifierRepository identifierRepository, - IdentifierIdxRepository identifierIdxRepository, - ElasticsearchOperations elasticsearchOperations) { + public IndexConfig(IdentifierMapper identifierMapper, IdentifierRepository identifierRepository, + IdentifierIdxRepository identifierIdxRepository) { this.identifierMapper = identifierMapper; this.identifierRepository = identifierRepository; this.identifierIdxRepository = identifierIdxRepository; - this.elasticsearchOperations = elasticsearchOperations; } @Transactional @EventListener(ApplicationReadyEvent.class) public void initIndex() { - log.debug("creating identifierindex"); - final IndexCoordinates identifierIndex = IndexCoordinates.of("identifierindex"); - if (!elasticsearchOperations.indexOps(identifierIndex).exists()) { - elasticsearchOperations.indexOps(identifierIndex).create(); - elasticsearchOperations.indexOps(identifierIndex).createMapping(IdentifierDto.class); - } final List<IdentifierDto> identifiers = identifierRepository.findAll() .stream() .map(identifierMapper::identifierToIdentifierDto) .collect(Collectors.toList()); - log.debug("add {} identifiers to elastic search index", identifiers.size()); identifierIdxRepository.saveAll(identifiers); + log.info("Added {} identifiers to open search index", identifiers.size()); } } diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java deleted file mode 100644 index 122095a168705beba38dc0c52cba481c1a64a649..0000000000000000000000000000000000000000 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ /dev/null @@ -1,15 +0,0 @@ - -package at.tuwien.repository.jpa; - -import at.tuwien.entities.user.Realm; -import at.tuwien.entities.user.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; -import java.util.UUID; - -@Repository -public interface RealmRepository extends JpaRepository<Realm, UUID> { - -} diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java similarity index 76% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java index 2795450ea714602c41b8be03d62cbfc1853aa967..856fe81cead180bb0b934bc090dcf33d344e17b2 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java @@ -1,7 +1,8 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.DatabaseAccess; +import at.tuwien.entities.database.DatabaseAccessKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,7 +10,7 @@ import java.util.Optional; import java.util.UUID; @Repository -public interface AccessRepository extends JpaRepository<DatabaseAccess, Long> { +public interface AccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> { Optional<DatabaseAccess> findByHdbidAndHuserid(Long databaseId, UUID userId); diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java similarity index 70% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java index 2470972bd469c4bf3ac00ced1546bea34744959d..4513becc2270924d5cafb83a74e054ad121788ad 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java @@ -1,10 +1,11 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Creator; +import at.tuwien.entities.identifier.CreatorKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface CreatorRepository extends JpaRepository<Creator, Long> { +public interface CreatorRepository extends JpaRepository<Creator, CreatorKey> { } diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 95% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index 29ee345f1a5c3b0c84129a3f16cf08644abe9031..dd31029441061583637573fdb016bfd81a111a7f 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java similarity index 95% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java index fa193cc6c25c1d48ae9b9336020cd97a5c6e0ece..856ba9418f22b22745cbf4d836dafd10aaf357b5 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierType; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 88% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..439a1f372ef3df37a8f824af8296e7a7a1361315 --- /dev/null +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -0,0 +1,13 @@ + +package at.tuwien.repository.mdb; + +import at.tuwien.entities.user.Realm; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface RealmRepository extends JpaRepository<Realm, UUID> { + +} diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java similarity index 91% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java index 4e735007ab69f5ca5b6c9e1e4fa0007a4cbeb3a3..a1334eb5bd9ac5c739bfb6a5f6b222eb886296bb 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.RelatedIdentifier; import at.tuwien.entities.identifier.RelatedIdentifierKey; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java similarity index 74% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java index 548737b0b92f9b5d9fceb1808b2f1b5894356135..6117a02933659fb8fdeca55bba538ea4aad02cd9 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java @@ -1,7 +1,8 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; +import at.tuwien.entities.database.table.TableKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,7 +10,7 @@ import java.util.List; import java.util.Optional; @Repository -public interface TableRepository extends JpaRepository<Table, Long> { +public interface TableRepository extends JpaRepository<Table, TableKey> { List<Table> findByDatabase(Database database); diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 90% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 01b143f6f813cb5c34cd94a413010f2677d43685..499954150fa41d366275e24e037b870e412b7a75 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,5 +1,5 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java similarity index 88% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java index 13f4dc6316fad7f371ce4fce95d17b09de534ee0..45e42d1515bbc6f94001363ce647a5d8472c9f6c 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.identifier.IdentifierDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index f23467c3af5f7302b60a32fae0d300a668af8114..c086a2990c4f405ebc7d45a5cbbd47b8a3a4432b 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.AccessDeniedException; -import at.tuwien.repository.jpa.AccessRepository; +import at.tuwien.repository.mdb.AccessRepository; import at.tuwien.service.AccessService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java index b83724e483da03d3510e050465328eb1316e78fc..458419a794ee5c9a3adf06d6907326995d1537e1 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java @@ -12,7 +12,7 @@ import at.tuwien.config.EndpointConfig; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.*; import at.tuwien.mapper.DataCiteMapper; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.mdb.IdentifierRepository; import at.tuwien.service.IdentifierService; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.client.RestTemplateBuilder; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index c79c1bca0271d880cc25492d96ee41cb3dc15905..3f853c02aa6e12752e7faa883647cb1674c982a1 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.Database; import at.tuwien.exception.DatabaseNotFoundException; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import at.tuwien.service.DatabaseService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java index 4a3aa4437bc9d982f9dd3754b5599057062ad6e5..8be744283483a10a2950098a130073f26cc5654c 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -12,9 +12,9 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.QueryServiceGateway; import at.tuwien.mapper.IdentifierMapper; -import at.tuwien.repository.elastic.IdentifierIdxRepository; -import at.tuwien.repository.jpa.IdentifierRepository; -import at.tuwien.repository.jpa.RelatedIdentifierRepository; +import at.tuwien.repository.sdb.IdentifierIdxRepository; +import at.tuwien.repository.mdb.IdentifierRepository; +import at.tuwien.repository.mdb.RelatedIdentifierRepository; import at.tuwien.service.DatabaseService; import at.tuwien.service.IdentifierService; import at.tuwien.service.UserService; diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 2c7df8b36c10c7ce06a26808f63422a0ccc30c93..47f1ac286b3fa39407359baf5cdc58a4f8d700f5 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java index 5715b7cd2926cb1ddf5407aa63501c3ef91dd65b..0717ed8c486efa75b443a0a8c0f68b0937a773f8 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java @@ -10,10 +10,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; + import java.time.Instant; import java.util.List; @@ -24,7 +26,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -@Document(indexName = "databaseindex", createIndex = false) +@Document(indexName = "database") public class DatabaseDto { @NotNull @@ -35,6 +37,7 @@ public class DatabaseDto { private String name; @NotBlank + @Field(name = "exchange_name") @JsonProperty("exchange_name") @Schema(example = "dbrepo/air_quality") private String exchangeName; @@ -42,6 +45,7 @@ public class DatabaseDto { private IdentifierDto identifier; @NotBlank + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "weather_australia") private String internalName; @@ -53,6 +57,7 @@ public class DatabaseDto { private List<ViewBriefDto> views; + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java index 7a5f80d2bca4f89a4807af09d7c5941ec5b2d264..031aaadd0a53e24de18332f765c5f34e2a11276a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java @@ -7,10 +7,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; + import java.time.Instant; import java.util.UUID; @@ -21,13 +23,15 @@ import java.util.UUID; @AllArgsConstructor @Jacksonized @ToString -@Document(indexName = "viewindex", createIndex = false) +@Document(indexName = "view") public class ViewDto { @NotNull private Long id; @NotNull + @Field(name = "database_id") + @JsonProperty("database_id") private Long vdbid; @NotNull @@ -39,13 +43,16 @@ public class ViewDto { private String name; @NotBlank + @Field(name = "air_quality") @Schema(example = "air_quality") private String internalName; + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; + @Field(name = "initial_view") @JsonProperty("initial_view") @Schema(example = "true", description = "True if it is the default view for the database") private Boolean isInitialView; @@ -65,6 +72,7 @@ public class ViewDto { @NotNull private UserDto creator; + @Field(name = "last_modified") @JsonProperty("last_modified") @Schema(example = "2020-08-04 11:12:00") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java index cf7d14f9406c363e3791ad26a8336e506a5be034..8df51261bd297a7e113fc6f53f05b1ed4d4b867a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java @@ -4,15 +4,16 @@ import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; + import java.time.Instant; import java.util.List; @@ -23,13 +24,17 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -@Document(indexName = "tableindex", createIndex = false) +@Document(indexName = "table") public class TableDto { - @JsonIgnore + @NotNull + @Field(name = "container_id") + @JsonProperty("container_id") private Long containerId; - @JsonIgnore + @NotNull + @Field(name = "database_id") + @JsonProperty("database_id") private Long databaseId; @NotNull @@ -40,6 +45,7 @@ public class TableDto { private String name; @NotBlank(message = "internalName is required") + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "air_quality") private String internalName; @@ -51,11 +57,13 @@ public class TableDto { private UserBriefDto owner; @NotBlank(message = "queueName is required") + @Field(name = "queue_name") @JsonProperty("queue_name") @Schema(example = "dbrepo/air_quality/air_quality") private String queueName; @NotBlank(message = "routingKey is required") + @Field(name = "routing_key") @JsonProperty("routing_key") @Schema(example = "dbrepo/air_quality/air_quality/1") private String routingKey; @@ -65,6 +73,7 @@ public class TableDto { private String description; @NotNull(message = "isPublic is required") + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java new file mode 100644 index 0000000000000000000000000000000000000000..010bc68af285bb9fadd741355687e1a9218d1448 --- /dev/null +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java @@ -0,0 +1,24 @@ +package at.tuwien.api.database.table; + +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class TableKeyDto { + + @NotNull + private Long containerId; + + @NotNull + private Long databaseId; + + @NotNull + private Long id; +} diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java index 612f15d86d2408119a5adf8d095f86131918cbf3..6f3b30b04d5c25c82955d60a6a81faee1aaa2b86 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java @@ -3,16 +3,16 @@ package at.tuwien.api.database.table.columns; import at.tuwien.api.container.image.ImageDateDto; import at.tuwien.api.database.table.columns.concepts.ConceptDto; import at.tuwien.api.database.table.columns.concepts.UnitDto; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; @Getter @Setter @@ -21,16 +21,22 @@ import jakarta.validation.constraints.NotNull; @AllArgsConstructor @Jacksonized @ToString -@Document(indexName = "columnindex", createIndex = false) +@Document(indexName = "column") public class ColumnDto { - @JsonIgnore + @NotNull + @Field(name = "container_id") + @JsonProperty("container_id") private Long containerId; - @JsonIgnore + @NotNull + @Field(name = "database_id") + @JsonProperty("database_id") private Long databaseId; - @JsonIgnore + @NotNull + @Field(name = "table_id") + @JsonProperty("table_id") private Long tableId; @NotNull @@ -41,28 +47,34 @@ public class ColumnDto { private String name; @NotBlank + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "mdb_date") private String internalName; + @Field(name = "date_format") @JsonProperty("date_format") @org.springframework.data.annotation.Transient private ImageDateDto dateFormat; @NotNull + @Field(name = "auto_generated") @JsonProperty("auto_generated") @Schema(example = "false") private Boolean autoGenerated; @NotNull + @Field(name = "is_primary_key") @JsonProperty("is_primary_key") @Schema(example = "true") private Boolean isPrimaryKey; + @Field(name = "index_length") @JsonProperty("index_length") private Integer indexLength; @NotNull + @Field(name = "column_type") @JsonProperty("column_type") @Schema(example = "string") private ColumnTypeDto columnType; @@ -75,15 +87,18 @@ public class ColumnDto { private UnitDto unit; @NotNull + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; @NotNull + @Field(name = "is_null_allowed") @JsonProperty("is_null_allowed") @Schema(example = "false") private Boolean isNullAllowed; + @Field(name = "enum_values") @JsonProperty("enum_values") @Parameter(description = "enum values, only considered when type = ENUM") private String[] enumValues; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java new file mode 100644 index 0000000000000000000000000000000000000000..28dc203f0388225ceb29e849fc2998a8a681c58c --- /dev/null +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java @@ -0,0 +1,27 @@ +package at.tuwien.api.database.table.columns; + +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class ColumnKeyDto { + + @NotNull + private Long containerId; + + @NotNull + private Long databaseId; + + @NotNull + private Long tableId; + + @NotNull + private Long id; +} diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java index 590cd825e769d0b4ecda085bcbb9bcb51e7c2875..32d98c0a90b0b24db1621c27790dbb2d79965a2e 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java @@ -9,6 +9,8 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.time.Instant; import java.util.List; @@ -20,6 +22,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString +@Document(indexName = "concept") public class ConceptDto { @NotBlank @@ -30,9 +33,11 @@ public class ConceptDto { private String description; @NotNull + @Field(enabled = false) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; @NotNull + @Field(enabled = false) private List<ColumnBriefDto> columns; } diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java index 9e0fd693604556fa661ff0b8ad792dd2382f4625..58316c6123a8aed638d56676cf7c7b1dd10db6dc 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java @@ -7,6 +7,8 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.time.Instant; import java.util.List; @@ -18,6 +20,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString +@Document(indexName = "unit") public class UnitDto { @NotBlank @@ -28,9 +31,11 @@ public class UnitDto { private String description; @NotNull + @Field(enabled = false) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; @NotNull + @Field(enabled = false) private List<ColumnBriefDto> columns; } diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java index 592c7cfc8cd1769805a99000bb713677726bc03d..632ee66fc8429a6d4d4f16e9e2a2a15c060993f3 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java @@ -9,10 +9,11 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springframework.data.elasticsearch.annotations.Document; + import java.time.Instant; import java.util.List; @@ -23,7 +24,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -@Document(indexName = "identifierindex", createIndex = false) +@Document(indexName = "identifier") public class IdentifierDto { private Long id; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java index 6197dd0697c92d29f6f0f527d69cd4375012a999..2a8cfd4fe4e164a9f11a2d5b2e69c9073c0e36dc 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -7,6 +7,8 @@ import lombok.*; import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.util.List; import java.util.UUID; @@ -18,6 +20,7 @@ import java.util.UUID; @AllArgsConstructor @Jacksonized @ToString +@Document(indexName = "user") public class UserDto { @NotNull @@ -64,6 +67,7 @@ public class UserDto { private String email; @NotNull + @Field(name = "email_verified") @JsonProperty("email_verified") @Schema(example = "true") @org.springframework.data.annotation.Transient diff --git a/dbrepo-metadata-db/pom.xml b/dbrepo-metadata-db/pom.xml index cccf8f2178cd6466e0b04f757816004303a4c40a..0fb24fd6ea1b841a9337014f643f43a876247226 100644 --- a/dbrepo-metadata-db/pom.xml +++ b/dbrepo-metadata-db/pom.xml @@ -32,6 +32,7 @@ <jackson-datatype.version>2.15.0</jackson-datatype.version> <commons.version>2.11.0</commons.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -47,10 +48,10 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> - <!-- DataSource --> <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-elasticsearch</artifactId> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> </dependency> <!-- Mapping --> <dependency> diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java index 22e0c0c39ac2e5830512adf7099c58c6307a2e1d..84e89a26418be53fa0a71e47ac3db987f7af2b90 100644 --- a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java @@ -17,9 +17,7 @@ import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.TableCsvDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; -import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto; -import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; +import at.tuwien.api.database.table.columns.concepts.*; import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyCreateDto; import at.tuwien.api.identifier.*; @@ -900,8 +898,8 @@ public abstract class BaseTest { .build(); public final static Long IMAGE_ELASTIC_ID = 3L; - public final static String IMAGE_ELASTIC_REPOSITORY = "elasticsearch"; - public final static String IMAGE_ELASTIC_TAG = "8.7.1"; + public final static String IMAGE_ELASTIC_REPOSITORY = "opensearchproject/opensearch"; + public final static String IMAGE_ELASTIC_TAG = "2"; public final static ContainerImage IMAGE_ELASTIC = ContainerImage.builder() .id(IMAGE_ELASTIC_ID) @@ -1117,8 +1115,8 @@ public abstract class BaseTest { public final static String CONTAINER_ELASTIC_IP = "172.31.0.3"; public final static String CONTAINER_ELASTIC_HASH = "deadbeef"; public final static Instant CONTAINER_ELASTIC_CREATED = Instant.ofEpochSecond(1677399721) /* 2023-02-26 08:22:01 (UTC) */; - public final static String[] CONTAINER_ELASTIC_ENV = new String[]{"discovery.type=single-node", "ES_JAVA_OPTS=-Xms2g -Xmx2g", - "logger.level=WARN", "bootstrap.memory_lock=true", "xpack.security.enabled=true", "ELASTIC_PASSWORD=elastic"}; + public final static String[] CONTAINER_ELASTIC_ENV = new String[]{"discovery.type=single-node", "ES_JAVA_OPTS=-Xms4g -Xmx4g", + "logger.level=WARN", "bootstrap.memory_lock=true", "plugins.security.disabled=true"}; public final static Container CONTAINER_ELASTIC = Container.builder() .id(CONTAINER_ELASTIC_ID) @@ -1917,6 +1915,12 @@ public abstract class BaseTest { .description(COLUMN_CONCEPT_TEMPERATURE_DESCRIPTION) .build(); + public final static ConceptDto COLUMN_CONCEPT_TEMPERATURE_DTO = ConceptDto.builder() + .uri(COLUMN_CONCEPT_TEMPERATURE_URI) + .name(COLUMN_CONCEPT_TEMPERATURE_NAME) + .description(COLUMN_CONCEPT_TEMPERATURE_DESCRIPTION) + .build(); + public final static TableColumnConcept COLUMN_CONCEPT_TEMPERATURE = TableColumnConcept.builder() .uri(COLUMN_CONCEPT_TEMPERATURE_URI) .name(COLUMN_CONCEPT_TEMPERATURE_NAME) @@ -1935,6 +1939,12 @@ public abstract class BaseTest { .description(COLUMN_CONCEPT_FAIR_DATA_DESCRIPTION) .build(); + public final static ConceptDto COLUMN_CONCEPT_FAIR_DATA_DTO = ConceptDto.builder() + .uri(COLUMN_CONCEPT_FAIR_DATA_URI) + .name(COLUMN_CONCEPT_FAIR_DATA_NAME) + .description(COLUMN_CONCEPT_FAIR_DATA_DESCRIPTION) + .build(); + public final static TableColumnConcept COLUMN_CONCEPT_FAIR_DATA = TableColumnConcept.builder() .uri(COLUMN_CONCEPT_FAIR_DATA_URI) .name(COLUMN_CONCEPT_FAIR_DATA_NAME) @@ -1953,6 +1963,12 @@ public abstract class BaseTest { .description(COLUMN_UNIT_DEGREES_CELSIUS_DESCRIPTION) .build(); + public final static UnitDto COLUMN_UNIT_DEGREES_CELSIUS_DTO = UnitDto.builder() + .uri(COLUMN_UNIT_DEGREES_CELSIUS_URI) + .name(COLUMN_UNIT_DEGREES_CELSIUS_NAME) + .description(COLUMN_UNIT_DEGREES_CELSIUS_DESCRIPTION) + .build(); + public final static TableColumnUnit COLUMN_UNIT_DEGREES_CELSIUS = TableColumnUnit.builder() .uri(COLUMN_UNIT_DEGREES_CELSIUS_URI) .name(COLUMN_UNIT_DEGREES_CELSIUS_NAME) @@ -1971,6 +1987,12 @@ public abstract class BaseTest { .description(COLUMN_UNIT_TON_DESCRIPTION) .build(); + public final static UnitDto COLUMN_UNIT_TON_DTO = UnitDto.builder() + .uri(COLUMN_UNIT_TON_URI) + .name(COLUMN_UNIT_TON_NAME) + .description(COLUMN_UNIT_TON_DESCRIPTION) + .build(); + public final static TableColumnUnit COLUMN_UNIT_TON = TableColumnUnit.builder() .uri(COLUMN_UNIT_TON_URI) .name(COLUMN_UNIT_TON_NAME) diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 261784bc3f666e7ab4a831ce26edbd99a6baf06b..afda4b6f98bf98c75461264ab8b367a71e3e74e7 100644 --- a/dbrepo-metadata-service/pom.xml +++ b/dbrepo-metadata-service/pom.xml @@ -14,7 +14,7 @@ <name>dbrepo-metadata-service</name> <description>Service that manages the metadata</description> - <url>https://dbrepo-docs.ossdip.at</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/</url> <developers> <developer> <name>Martin Weise</name> @@ -49,6 +49,7 @@ <keycloak.version>21.0.2</keycloak.version> <hibernate.version>6.2.2.Final</hibernate.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -83,6 +84,16 @@ <artifactId>mariadb-java-client</artifactId> <version>${mariadb.version}</version> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> + </dependency> <!-- Monitoring --> <dependency> <groupId>io.micrometer</groupId> @@ -150,6 +161,12 @@ <version>${springdoc-openapi.version}</version> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java index 1b6c8a38f5dbc21dc2db7f1d3bff8aa439cd55ec..e0c645dc8f2f959eef360806fc82efa417fa8ac1 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java @@ -2,6 +2,7 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -10,11 +11,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaAuditing -@SpringBootApplication @EnableTransactionManagement -@EntityScan(basePackages = "at.tuwien.entities") -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoMetadataServiceApplication { public static void main(String[] args) { 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 f57bf10f481fe31e4af4c61d30df701738d33da4..059f9f1e67dac2a6033a4527e0e12e37cf53a9be 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 @@ -25,6 +25,10 @@ spring: virtual-host: dbrepo username: fda password: fda + opensearch: + username: admin + password: admin + uris: localhost:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml index 0ec7b7bc08a59b9937c4b797e344b2383e3ff02d..86acf0f63e5b41e0b80c3d3ce6ea0e918308a74d 100644 --- a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml @@ -1,6 +1,8 @@ app.version: '@project.version@' spring: main.banner-mode: off + autoconfigure: + exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration datasource: url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}" driver-class-name: org.mariadb.jdbc.Driver @@ -25,6 +27,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java index 1fb428714fdf1fa75282b71d90a21d0eff971b21..023419b218b20f2c72875f3a6fff4ad0f50026d7 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java @@ -3,10 +3,8 @@ package at.tuwien.endpoints; import at.tuwien.BaseUnitTest; import at.tuwien.oaipmh.OaiListIdentifiersParameters; import at.tuwien.oaipmh.OaiRecordParameters; -import at.tuwien.config.H2Utils; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; 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 26da5e82fa6040a62ecf2bfc5aeb1b4867d54512..024a91d3204e0742e5712fd6e1e96862e6a1888f 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 @@ -1,10 +1,9 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.config.H2Utils; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; 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 e8e68400ee2fd9fd49d9068f295809a8c369a554..13f015213effec80e94ac457c8201795c24fbb71 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 @@ -4,9 +4,8 @@ import at.tuwien.BaseUnitTest; import at.tuwien.oaipmh.OaiErrorType; import at.tuwien.oaipmh.OaiListIdentifiersParameters; import at.tuwien.oaipmh.OaiRecordParameters; -import at.tuwien.config.H2Utils; import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index d692b00041998c9ac88e35465508fab23be7d674..04a8da854e9fdcc99a059c3aa1d7728e21b8780b 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 87% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index ae76b3951eb6f139358713c33cb2a4b3acad8ec7..df6ec321689ad7fa1c05eb1430177aae79122133 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java similarity index 88% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java index 0b79897fc81d6a58ef57df74a3b7e4d93ecd5d5a..27706deae379000a1b7fbf4ca6ffcb2941094609 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Identifier; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 88% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index c033bd17dc63c7c0f8cb8b2354c689578d3eccf7..b1020fdcc532602d72cad5018b964edec4f25eea 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java similarity index 88% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java index 6a2a5443d938b9cad6e10d40114ef4d0f5f950db..1be6bbd2549e0e8dc2fa00dea458ccb1211d52c0 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Realm; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 88% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 3dbd267234e83405566ae6c9f5efe3260d38b875..c1e1d08295b85548041332353abfcee62c29e2df 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java similarity index 68% rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java index cffa3d3cfd19c0e006e827426eb6ce4be74be228..bfa5c3c6aac94fb19a4b9fa9627427df103440fa 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java @@ -1,9 +1,9 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.entities.identifier.Identifier; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository -public interface IdentifieridxRepository extends ElasticsearchRepository<Identifier, Long> { +public interface IdentifierIdxRepository extends ElasticsearchRepository<Identifier, Long> { } \ No newline at end of file diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java index 09cf17d37b81728bda86ee3aefb6b7397d6d7fed..762d58c64c4f64f367e1ddb7e89bf99612c002e6 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; import at.tuwien.service.IdentifierService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/pom.xml b/dbrepo-query-service/pom.xml index 095adfeb17d64c98ef2f078fa41c0c3973cf5e19..73c0a87169dcd8cc59ba1631076bba6df45f5766 100644 --- a/dbrepo-query-service/pom.xml +++ b/dbrepo-query-service/pom.xml @@ -17,7 +17,7 @@ also allows for view-only (possibly paginated and versioned) query execution to the raw data and consumes messages in the message queue from the Broker Service. </description> - <url>https://dbrepo-docs.ossdip.at</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/</url> <developers> <developer> <name>Martin Weise</name> @@ -51,6 +51,7 @@ <c3p0.version>0.9.5.5</c3p0.version> <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -121,8 +122,14 @@ <version>${mariadb.version}</version> </dependency> <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-elasticsearch</artifactId> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> </dependency> <!-- AMPQ --> <dependency> @@ -184,6 +191,12 @@ <scope>compile</scope> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java index af5e7ef22913baf7206dca51f5f9c6147bd29b27..d19bb8c6f3dc36c6605fc953e671794db5a3d034 100644 --- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java +++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java @@ -2,6 +2,7 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -10,12 +11,12 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaAuditing -@SpringBootApplication @EnableTransactionManagement @EnableScheduling -@EntityScan(basePackages = "at.tuwien.entities") -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoQueryServiceApplication { public static void main(String[] args) { diff --git a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml index 32b8a33c40da0168e779a5b2ae3622107e623214..f28840615e0be9ed6a8718508cbf5e72186ab17e 100644 --- a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-query-service/rest-service/src/main/resources/application.yml b/dbrepo-query-service/rest-service/src/main/resources/application.yml index db37d874ec942755cc879f26242862f6330ca488..216631f9030f8635cf5733a3a448092d4c91d2d4 100644 --- a/dbrepo-query-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-query-service/rest-service/src/main/resources/application.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: elastic - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index cab709d9c6692a9e2c0cc236520751659ec4306d..3ff9a8426725a8351080c9e32bc8392477eae7d2 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -2,6 +2,7 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +33,9 @@ public class ActuatorComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private ViewIdxRepository viewIdxRepository; + @Test public void actuatorInfo_succeeds() throws Exception { this.mockMvc.perform(get("/actuator/info")) diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java index 6504e0471e47655607b1786e7fe65edeaaf75e60..2fc48f70c83a3dffd308be4bdf7ab411fb8a730f 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java @@ -8,10 +8,10 @@ import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.DatabaseAccessRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.DatabaseService; import at.tuwien.service.QueryService; import com.rabbitmq.client.Channel; @@ -20,7 +20,6 @@ import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.core.io.InputStreamResource; @@ -29,7 +28,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.web.client.RestTemplate; import java.io.File; import java.io.IOException; @@ -53,7 +51,10 @@ public class ExportEndpointUnitTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; @MockBean private RabbitMqListenerImpl rabbitMqListener; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java index 90634fa49a537eb13870da709c1a96c258c38a45..e9b3371a748ec4884b0662263805e55b096004d4 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java @@ -13,10 +13,11 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.DatabaseAccessRepository; -import at.tuwien.repository.jpa.DatabaseRepository; -import at.tuwien.repository.jpa.ImageRepository; +import at.tuwien.repository.mdb.ContainerRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.mdb.ImageRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.QueryService; import at.tuwien.service.StoreService; import com.rabbitmq.client.Channel; @@ -55,13 +56,14 @@ public class QueryEndpointUnitTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; - /* keep */ @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java index be64aff2a07f66b8f10d6e637a9894765a8c6ff6..e4d98d80443fd800b39b7f924461f1597558527d 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java @@ -12,8 +12,8 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; -import at.tuwien.repository.jpa.DatabaseAccessRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.impl.StoreServiceImpl; @@ -49,7 +49,10 @@ public class StoreEndpointUnitTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; @MockBean private RabbitMqListenerImpl rabbitMqListener; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 2f448ca36e90e3d81aac0e68ddaa7304fbeb5af9..0516fc4682104ce018f8d6e196884c79ae69cb51 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -2,6 +2,7 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +33,9 @@ public class SwaggerComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private ViewIdxRepository viewIdxRepository; + @Test public void swaggerUi_succeeds() throws Exception { this.mockMvc.perform(get("/swagger-ui/index.html")) diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableDataEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableDataEndpointUnitTest.java index 263118e014726c3df8ed4a2c5262617bf555d8d0..0374aae586a6649c8e4570c503bd828fd41a8451 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableDataEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableDataEndpointUnitTest.java @@ -14,6 +14,7 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; @@ -53,11 +54,12 @@ public class TableDataEndpointUnitTest extends BaseUnitTest { @MockBean private Channel channel; - /* keep */ + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java index 13f552f6ceedad6061334ca0e87794945c18d034..3a32885368f8e94f893786f6743aa227ff5095a6 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java @@ -9,9 +9,9 @@ import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.DatabaseService; import at.tuwien.service.QueryService; import at.tuwien.service.TableService; @@ -49,11 +49,12 @@ public class TableHistoryEndpointUnitTest extends BaseUnitTest { @MockBean private Channel channel; - /* keep */ + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java index 0d26d44b03017e07172174d1310de7547787ee6a..9644e2113a9ab7c55bfeeaa5fad59f9f1dea3d6a 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java @@ -14,6 +14,7 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; +import at.tuwien.repository.sdb.ViewIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.QueryService; @@ -51,13 +52,14 @@ public class ViewEndpointUnitTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; - /* keep */ @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java index cadc876d8ba3ebcca9c3d3cffa44bf5d7c0941be..5acda1d8b2af83ba809bb9e050b7178514b44ac0 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java @@ -3,7 +3,8 @@ package at.tuwien.listener; import at.tuwien.BaseUnitTest; import at.tuwien.api.amqp.ConsumerDto; import at.tuwien.config.*; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; @@ -38,6 +39,9 @@ public class RabbitMqListenerIntegrationTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private ViewIdxRepository viewIdxRepository; + @Autowired private Channel channel; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/QueryMapperTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/QueryMapperTest.java index f68804e6e06ff63e1fc574ce8a8590b08cb498d3..038b63c95a340e1f1266c40f7d7c9b44eb432322 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/QueryMapperTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/QueryMapperTest.java @@ -7,6 +7,7 @@ import at.tuwien.entities.container.image.ContainerImageDate; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.database.table.columns.TableColumnType; import at.tuwien.listener.impl.RabbitMqListenerImpl; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -33,7 +34,10 @@ public class QueryMapperTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; @MockBean private RabbitMqListenerImpl rabbitMqListener; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java index 647886a82434d0176e77399905ae3173f8565c80..1dd83a35bb7bbc2f9d4f27e1b8b641df2d44ac1d 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java @@ -8,8 +8,8 @@ import at.tuwien.entities.database.View; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.elastic.ViewIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.ViewIdxRepository; +import at.tuwien.repository.mdb.*; import at.tuwien.service.ViewService; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; @@ -48,11 +48,9 @@ public class ViewIdxRepositoryIntegrationTest extends BaseUnitTest { @MockBean private Channel channel; - /* keep */ @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java index 726dc651d45c6220b1c67557675ec42f16adebb9..e064717095f46f3ccac6a190e63c92f9154548d5 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java @@ -6,7 +6,8 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.View; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.Rule; @@ -45,6 +46,9 @@ public class ViewRepositoryIntegrationTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private ViewIdxRepository viewIdxRepository; + @Autowired private ImageRepository imageRepository; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index f009f87f64efa1a6ded33455300ab1c135303314..c4c6016e50a30f4302a99e23b940129bfc73b6a4 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -6,9 +6,9 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.entities.container.Container; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -40,11 +40,12 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { @MockBean private Channel channel; - /* keep */ + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java index cfef081d1eb3abf3fd94d998702b095f59b64f3d..7e8d87f8069fa7f1ce941fc5b2ba03c0671fa75a 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java @@ -12,7 +12,8 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; import lombok.SneakyThrows; @@ -63,6 +64,9 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { @MockBean private RabbitMqListenerImpl rabbitMqListener; + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java index 0091db3b8e627afa7a9564ad7cce78f6da31e9d3..7bc34bce9e0b2a967ae24f5cf082aabfd256e2c1 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java @@ -7,10 +7,10 @@ import at.tuwien.api.database.table.TableCsvDto; import at.tuwien.config.*; import at.tuwien.exception.AmqpException; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.DatabaseRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.fasterxml.jackson.databind.ObjectMapper; import com.rabbitmq.client.*; import lombok.extern.log4j.Log4j2; @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.List; import java.util.Optional; import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -51,7 +50,10 @@ public class QueueServiceIntegrationTest extends BaseUnitTest { private TableRepository tableRepository; @MockBean - private IndexConfig indexInitializer; + private ViewIdxRepository viewIdxRepository; + + @MockBean + private IndexConfig indexConfig; @MockBean private RabbitMqConsumer rabbitMqConsumer; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java index aa5e5024955c6f85ce88d07015a93127e8a25e06..559633c43bdeab1f176261266dfc80048779a623 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java @@ -10,7 +10,8 @@ import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; import lombok.extern.log4j.Log4j2; @@ -51,14 +52,15 @@ public class StoreServiceIntegrationModifyTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private Channel channel; - /* keep */ @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java index af081233297bfd2d93fd13469c9aaaf4e8c0b04a..f41d511770598114e12016f50a645396106f7680 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java @@ -7,9 +7,10 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.exception.*; import at.tuwien.listener.impl.RabbitMqListenerImpl; import at.tuwien.querystore.Query; -import at.tuwien.repository.jpa.DatabaseRepository; -import at.tuwien.repository.jpa.TableRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.DatabaseRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; import lombok.extern.log4j.Log4j2; @@ -48,6 +49,9 @@ public class StoreServiceIntegrationReadTest extends BaseUnitTest { @MockBean private Channel channel; + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private RabbitMqListenerImpl rabbitMqListener; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java index 4590f3e742eab0b7610c3e5e7d291b5d682f58b8..f7b8b21bffaf654347245c223cec91437f1fe6f6 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java @@ -8,7 +8,8 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; import lombok.extern.log4j.Log4j2; @@ -48,11 +49,12 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest { @MockBean private Channel channel; - /* keep */ + @MockBean + private ViewIdxRepository viewIdxRepository; + @MockBean private RabbitMqListenerImpl rabbitMqListener; - /* keep */ @MockBean private BrokerServiceGateway brokerServiceGateway; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index a20232e18d492a3a110b8ade6e4d31c3bc8cf5e4..5c91cb6b6bc8258a88a414f419c1e9262f169345 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -6,9 +6,9 @@ import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; -import at.tuwien.listener.MessageQueueListener; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.ViewIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.*; @@ -42,7 +42,10 @@ public class TableServiceUnitTest extends BaseUnitTest { private Channel channel; @MockBean - private IndexConfig indexInitializer; + private IndexConfig indexConfig; + + @MockBean + private ViewIdxRepository viewIdxRepository; @MockBean private RabbitMqListenerImpl rabbitMqListener; diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java index dd8135d60e59922c405f6b69ca50e98f136b094b..10d216bf3bfc34f1c0b3b50bc95ea85126edbecc 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java @@ -10,8 +10,8 @@ import at.tuwien.entities.database.View; import at.tuwien.exception.*; import at.tuwien.gateway.BrokerServiceGateway; import at.tuwien.listener.impl.RabbitMqListenerImpl; -import at.tuwien.repository.elastic.ViewIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.ViewIdxRepository; +import at.tuwien.repository.mdb.*; import com.rabbitmq.client.Channel; import at.tuwien.config.DockerConfig; import lombok.extern.log4j.Log4j2; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java index eeb61eac82301fc0030619cfa3a3c6d53759109d..987fe6f81ed57b9a53d68b012abf840844db624e 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java @@ -2,16 +2,12 @@ package at.tuwien.config; import at.tuwien.api.database.ViewDto; import at.tuwien.mapper.ViewMapper; -import at.tuwien.repository.elastic.ViewIdxRepository; -import at.tuwien.repository.jpa.ViewRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; +import at.tuwien.repository.mdb.ViewRepository; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; -import org.springframework.core.env.Profiles; -import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -23,39 +19,24 @@ import java.util.stream.Collectors; public class IndexConfig { private final ViewMapper viewMapper; - private final Environment environment; private final ViewRepository viewRepository; private final ViewIdxRepository viewIdxRepository; - private final ElasticsearchOperations elasticsearchOperations; @Autowired - public IndexConfig(ViewMapper viewMapper, Environment environment, ViewRepository viewRepository, - ViewIdxRepository viewIdxRepository, ElasticsearchOperations elasticsearchOperations) { + public IndexConfig(ViewMapper viewMapper, ViewRepository viewRepository, ViewIdxRepository viewIdxRepository) { this.viewMapper = viewMapper; - this.environment = environment; this.viewRepository = viewRepository; this.viewIdxRepository = viewIdxRepository; - this.elasticsearchOperations = elasticsearchOperations; } @Transactional @EventListener(ApplicationReadyEvent.class) public void initIndex() { - if (environment.acceptsProfiles(Profiles.of("test-noelastic"))) { - return; - } - log.debug("creating viewindex"); - final IndexCoordinates viewIndex = IndexCoordinates.of("viewindex"); - if (!elasticsearchOperations.indexOps(viewIndex).exists()) { - elasticsearchOperations.indexOps(viewIndex).create(); - elasticsearchOperations.indexOps(viewIndex).createMapping(ViewDto.class); - } - /* pre-fill */ final List<ViewDto> views = viewRepository.findAll() .stream() .map(viewMapper::viewToViewDto) .collect(Collectors.toList()); - log.debug("add {} views to elastic search index", views.size()); viewIdxRepository.saveAll(views); + log.info("Added {} views to open search index", views.size()); } } diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java deleted file mode 100644 index 709fa7be4d25e1b2ae4351fde7281d701fc8cd79..0000000000000000000000000000000000000000 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package at.tuwien.repository.elastic; - -import at.tuwien.api.database.DatabaseDto; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface DatabaseIdxRepository extends ElasticsearchRepository<DatabaseDto, Long> { -} \ No newline at end of file diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java deleted file mode 100644 index c1a5d756b7af9d163766f3a9fae3c31cf157a77c..0000000000000000000000000000000000000000 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package at.tuwien.repository.jpa; - -import at.tuwien.entities.user.Realm; -import at.tuwien.entities.user.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; -import java.util.UUID; - -@Repository -public interface RealmRepository extends JpaRepository<Realm, UUID> { - -} diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index dac4fafd152d1b0a3064a49a748f1079080f1146..58b73c9139550a25bb020ad7590307991a3cd693 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java similarity index 83% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java index 2bfbfc3f90d9795a4ef4369532d04a5bfad56a3b..e4723eb9d2dc3c7aeadb81b5ac721a9ba3859ede 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.DatabaseAccess; +import at.tuwien.entities.database.DatabaseAccessKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -9,7 +10,7 @@ import org.springframework.stereotype.Repository; import java.util.Optional; @Repository -public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> { +public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> { @Query("select a from DatabaseAccess a where a.hdbid = :databaseId and a.user.username = :username") Optional<DatabaseAccess> findByDatabaseIdAndUsername(@Param("databaseId") Long databaseId, @Param("username") String username); diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 94% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index e73c2e7b2b4ef46bb683ffd847989749f50ffada..e5b21ce646cb8999a801aeeacd36214449c6f301 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java similarity index 91% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java index 7dd89d62041dd390b38765442173dd09d029f4ba..3bc2e7c168ddc4a6f6472dbc27fd0677ebbfaf07 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.identifier.Identifier; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 85% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index 21f191f8eddc0ebf9e0d6a01f8961a81f0fb6c39..ab4315e1c38828cdb432340f1b35d3bccc5b929b 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java similarity index 88% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java index 5b5855dec88d3e3ef8d032369a7d6af6956a702e..7b53e7245983c7ca848da7c1175e0158e2f2a930 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Realm; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java similarity index 79% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index 2d3a818d871ada46608d5b30b4603379d68e6161..dd34acefa6e12f8050e14c64886c416387ea1a83 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumn; +import at.tuwien.entities.database.table.columns.TableColumnKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java similarity index 79% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java index 7a19c1f575891bd5fea52a4de87ea62b35c027bb..e4fe63d6239ceae9c9063e96a9533ad3a746f6da 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.Table; +import at.tuwien.entities.database.table.TableKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -9,7 +10,7 @@ import org.springframework.stereotype.Repository; import java.util.Optional; @Repository -public interface TableRepository extends JpaRepository<Table, Long> { +public interface TableRepository extends JpaRepository<Table, TableKey> { @Query(value = "select t from Table t where t.database.container.id = :containerId and t.database.id = :databaseId and t.id = :tableId") Optional<Table> find(@Param("containerId") Long containerId, @Param("databaseId") Long databaseId, diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 90% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java similarity index 80% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java index 3f5c2ac7c4c2167786fa96252083cd6801ee9965..322602ee2d8bfe668f3c9be2f1e8287c8e77cd54 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java @@ -1,9 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.View; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java similarity index 87% rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java index 617c6d106e05a8b94707315a640c8fbce829d9ec..da608f39eb1959c0971cd42e8fc8535e1e7f70f4 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.ViewDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index 1c492b6529f648134818bfef8170695a849cbfc8..983a1bece772fc55c4c510d0600923c2fc69db1a 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.NotAllowedException; -import at.tuwien.repository.jpa.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; import at.tuwien.service.AccessService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index 0e10cc3386798971ef213db326806b161f8cb00c..07c77c5358ad0dff79da6af0ea4ff7f3a4cf0fda 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.container.Container; import at.tuwien.exception.ContainerNotFoundException; -import at.tuwien.repository.jpa.ContainerRepository; +import at.tuwien.repository.mdb.ContainerRepository; import at.tuwien.service.ContainerService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index 79910ab9bf4aaec93670d22d6678eaac437ef59c..4a2a8927f76e589c747a6238c5db232533b7f665 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.Database; import at.tuwien.exception.DatabaseNotFoundException; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import at.tuwien.service.DatabaseService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java index e39dddeee311b831e97e41eef56d70a7cc3d30e1..9b1f1f8f1a25243bdb091e803e9eee1fa659aeeb 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.IdentifierNotFoundException; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.mdb.IdentifierRepository; import at.tuwien.service.IdentifierService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index 8a6c7d4ae27e94ace364b7015de563fc0f86f5ce..0ad279d9daa34122e068cfd0cca4f11e53f80e7a 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -7,7 +7,7 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; import at.tuwien.mapper.QueryMapper; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableRepository; import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; import com.mchange.v2.c3p0.ComboPooledDataSource; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index d3c8b1659624e6b4e2df7a5c4bbbfa5f6c3f59e9..27cf23c9b99d375406f838a74f000e639b1e1fa3 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java index 0bc0916966a49a99ad66d5a47c6daaaf39205aa3..e259d39c46b253a94107caa3fb836bd766ce1f7b 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java @@ -8,8 +8,8 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.DatabaseMapper; import at.tuwien.mapper.ViewMapper; -import at.tuwien.repository.elastic.ViewIdxRepository; -import at.tuwien.repository.jpa.ViewRepository; +import at.tuwien.repository.sdb.ViewIdxRepository; +import at.tuwien.repository.mdb.ViewRepository; import at.tuwien.service.DatabaseService; import at.tuwien.service.QueryService; import at.tuwien.service.UserService; @@ -105,10 +105,9 @@ public class ViewServiceImpl extends HibernateConnector implements ViewService { } /* delete in metadata database */ viewRepository.delete(view); - log.info("Deleted view with id {}", view.getId()); - log.trace("deleted view {}", view); + log.info("Deleted view with id {} in metadata database", id); viewIdxRepository.deleteById(id); - log.info("Deleted view with id {} in elastic search", id); + log.info("Deleted view with id {} in open search database", id); } @Override @@ -154,10 +153,9 @@ public class ViewServiceImpl extends HibernateConnector implements ViewService { .columns(columns) .build(); final View view = viewRepository.save(entity); - log.info("Created view with id {}", view.getId()); - log.trace("created view {}", view); + log.info("Created view with id {} in metadata database", view.getId()); viewIdxRepository.save(viewMapper.viewToViewDto(view)); - log.info("Created view with id {} in elastic search", view.getId()); + log.info("Created view with id {} in open search database", view.getId()); return view; } diff --git a/dbrepo-search-db/README.md b/dbrepo-search-db/README.md new file mode 100644 index 0000000000000000000000000000000000000000..541ebd85974b41a2072a20127cd55d6de2f2a491 --- /dev/null +++ b/dbrepo-search-db/README.md @@ -0,0 +1,10 @@ + +# Search Database + +## How to run + +Increase memory for Docker to at least 4GB: + +```console +sudo sysctl -w vm.max_map_count=262144 +``` \ No newline at end of file diff --git a/dbrepo-semantics-service/pom.xml b/dbrepo-semantics-service/pom.xml index 3eed3ff468a3e1d41e2444bc07b74db768f4c8d1..8276456a2caa204ac8aeb5a9f7cce5cdfd790b71 100644 --- a/dbrepo-semantics-service/pom.xml +++ b/dbrepo-semantics-service/pom.xml @@ -36,6 +36,7 @@ <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version> <apache-jena.version>4.8.0</apache-jena.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -92,7 +93,23 @@ <artifactId>mariadb-java-client</artifactId> <version>${mariadb.version}</version> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> + </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java b/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java index bec2e19c3b2a0755da8c7352d63690bf8c121a9c..e7318edaef61fd014e8ac37f71697902c955098a 100644 --- a/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java +++ b/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java @@ -3,6 +3,7 @@ package at.tuwien; import org.apache.jena.sys.JenaSystem; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -12,8 +13,8 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @EnableJpaAuditing @SpringBootApplication @EntityScan(basePackages = {"at.tuwien.entities"}) -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) public class DbrepoSemanticsServiceApplication { public static void main(String[] args) { diff --git a/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml b/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml index cea3a41bb4f0e062040fe0eaa35a95246d66a0ae..9ba665a0231498753b34f2b07cb4437c38bbb782 100644 --- a/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-semantics-service/rest-service/src/main/resources/application.yml b/dbrepo-semantics-service/rest-service/src/main/resources/application.yml index 7e35d82129116a29148421bf5d86238d1d6e97cd..5ebeb484bd69b0a17c61704c8dcbd952bac7db6a 100644 --- a/dbrepo-semantics-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-semantics-service/rest-service/src/main/resources/application.yml @@ -1,6 +1,8 @@ app.version: '@project.version@' spring: main.banner-mode: off + autoconfigure: + exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration datasource: url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}" driver-class-name: org.mariadb.jdbc.Driver @@ -25,10 +27,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: elastic - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index 3cfe18382347d7472f16ec9d5c4de5d618743bdd..8b1065599ab362c4c50486e5a704a55f6040dcaf 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -1,12 +1,15 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; @@ -20,6 +23,18 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest public class ActuatorComponentTest extends BaseUnitTest { + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Autowired private MockMvc mockMvc; diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/OntologyEndpointUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/OntologyEndpointUnitTest.java index 00ad512534c9cc5dea5bd3a6bc7f369914c60012..97899e119c260df19f9c2abb1e4e20d27cf326d5 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/OntologyEndpointUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/OntologyEndpointUnitTest.java @@ -11,6 +11,8 @@ import at.tuwien.entities.semantics.Ontology; import at.tuwien.entities.user.User; import at.tuwien.exception.OntologyNotFoundException; import at.tuwien.exception.UserNotFoundException; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import at.tuwien.service.OntologyService; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; @@ -40,15 +42,27 @@ import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) public class OntologyEndpointUnitTest extends BaseUnitTest { - @Autowired - private OntologyEndpoint ontologyEndpoint; - @MockBean private OntologyService ontologyService; @MockBean private UserService userService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + + @Autowired + private OntologyEndpoint ontologyEndpoint; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java index 66e2c1cba53d52dc6fd9ec1045451115d7b4ea62..3e910cf7bde17180698f7e2cb64579c203513ace 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java @@ -10,6 +10,8 @@ import at.tuwien.exception.FilterBadRequestException; import at.tuwien.exception.OntologyNotFoundException; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.UriMalformedException; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import at.tuwien.service.OntologyService; import at.tuwien.service.QueryService; import lombok.extern.log4j.Log4j2; @@ -40,15 +42,27 @@ import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) public class QueryEndpointUnitTest extends BaseUnitTest { - @Autowired - private QueryEndpoint queryEndpoint; - @MockBean private QueryService queryService; @MockBean private OntologyService ontologyService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + + @Autowired + private QueryEndpoint queryEndpoint; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SemanticsEndpointUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SemanticsEndpointUnitTest.java index 64adc9cad1b3c64acac9f5c92a3912355f395466..64736a60c695b4eb2a2382ea01a94942ff34e43e 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SemanticsEndpointUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SemanticsEndpointUnitTest.java @@ -9,6 +9,8 @@ import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; import at.tuwien.endpoints.SemanticsEndpoint; import at.tuwien.entities.database.table.columns.TableColumnConcept; import at.tuwien.entities.database.table.columns.TableColumnUnit; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import at.tuwien.service.SemanticService; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; @@ -37,12 +39,24 @@ import static org.mockito.Mockito.when; @ExtendWith(SpringExtension.class) public class SemanticsEndpointUnitTest extends BaseUnitTest { - @Autowired - private SemanticsEndpoint semanticsEndpoint; - @MockBean private SemanticService semanticService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + + @Autowired + private SemanticsEndpoint semanticsEndpoint; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 7c68901e8871dd03803f4ffce081a073016ce995..3b7a77cb4eec3fb093cdc366a4ca7d211b00dda6 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -1,12 +1,15 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; @@ -23,6 +26,18 @@ public class SwaggerComponentTest extends BaseUnitTest { @Autowired private MockMvc mockMvc; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Test public void swaggerUi_succeeds() throws Exception { this.mockMvc.perform(get("/swagger-ui/index.html")) diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java index cd5dc23cd807c7e066fa80796a28a1a0917e8212..ab61a7970c239d504f693ed59a631b2cb9d5577a 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java @@ -10,6 +10,8 @@ import at.tuwien.exception.OntologyNotFoundException; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableColumnNotFoundException; import at.tuwien.exception.TableNotFoundException; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import at.tuwien.service.OntologyService; import at.tuwien.service.TableService; import lombok.extern.log4j.Log4j2; @@ -39,12 +41,24 @@ import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) public class TableEndpointUnitTest extends BaseUnitTest { - @Autowired - private TableEndpoint tableEndpoint; - @MockBean private TableService tableService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + + @Autowired + private TableEndpoint tableEndpoint; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java index 1dc8023c3d8bcf3499b09df8a5fbadb06535565f..190f498e113fa1965ea5bac5463d20f97a24b28f 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java @@ -4,9 +4,11 @@ import at.tuwien.BaseUnitTest; import at.tuwien.entities.semantics.Ontology; import at.tuwien.exception.OntologyNotFoundException; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.OntologyRepository; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.OntologyRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; import org.junit.jupiter.api.BeforeAll; @@ -15,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -29,6 +32,18 @@ import static org.junit.jupiter.api.Assertions.assertThrows; @ExtendWith(SpringExtension.class) public class OntologyServiceIntegrationTest extends BaseUnitTest { + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Autowired private OntologyService ontologyService; diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java index 42af85f682e383c07469c9ac9f6abdac422ed202..33df1ac72b8f83919da67d215127b2c7c330ea23 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java @@ -3,9 +3,11 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.semantics.EntityDto; import at.tuwien.exception.QueryMalformedException; -import at.tuwien.repository.jpa.OntologyRepository; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.OntologyRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; import org.junit.jupiter.api.BeforeAll; @@ -15,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -28,6 +31,18 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class QueryServiceIntegrationTest extends BaseUnitTest { + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Autowired private RealmRepository realmRepository; diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java index ed5171a3327ff929282ee9b5d71c477220a46213..ccd14d910e0556dcd31b20a3ca3652e57b92e395 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java @@ -1,9 +1,13 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; +import at.tuwien.api.database.table.columns.concepts.ConceptDto; +import at.tuwien.api.database.table.columns.concepts.UnitDto; import at.tuwien.entities.database.table.columns.TableColumnConcept; import at.tuwien.entities.database.table.columns.TableColumnUnit; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.mdb.*; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; import org.junit.jupiter.api.BeforeAll; @@ -26,6 +30,18 @@ import static org.mockito.Mockito.when; @ExtendWith(SpringExtension.class) public class SemanticServiceUnitTest extends BaseUnitTest { + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @MockBean private TableColumnConceptRepository tableColumnConceptRepository; @@ -75,6 +91,8 @@ public class SemanticServiceUnitTest extends BaseUnitTest { public void saveUnit_exists_succeeds() { /* mock */ + when(unitIdxRepository.save(any(UnitDto.class))) + .thenReturn(COLUMN_UNIT_DEGREES_CELSIUS_DTO); when(tableColumnUnitRepository.save(any(TableColumnUnit.class))) .thenReturn(COLUMN_UNIT_DEGREES_CELSIUS); @@ -89,6 +107,8 @@ public class SemanticServiceUnitTest extends BaseUnitTest { public void saveUnit_succeeds() { /* mock */ + when(unitIdxRepository.save(any(UnitDto.class))) + .thenReturn(COLUMN_UNIT_TON_DTO); when(tableColumnUnitRepository.save(any(TableColumnUnit.class))) .thenReturn(COLUMN_UNIT_TON); @@ -103,6 +123,8 @@ public class SemanticServiceUnitTest extends BaseUnitTest { public void saveConcept_exists_succeeds() { /* mock */ + when(conceptIdxRepository.save(any(ConceptDto.class))) + .thenReturn(COLUMN_CONCEPT_TEMPERATURE_DTO); when(tableColumnConceptRepository.save(any(TableColumnConcept.class))) .thenReturn(COLUMN_CONCEPT_TEMPERATURE); @@ -117,6 +139,8 @@ public class SemanticServiceUnitTest extends BaseUnitTest { public void saveConcept_succeeds() { /* mock */ + when(conceptIdxRepository.save(any(ConceptDto.class))) + .thenReturn(COLUMN_CONCEPT_FAIR_DATA_DTO); when(tableColumnConceptRepository.save(any(TableColumnConcept.class))) .thenReturn(COLUMN_CONCEPT_FAIR_DATA); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index c81035a6db938872ba93eb540d3dff5c6b85f6ae..81e639918180bec7535bcba43c33a5e757190af0 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -7,9 +7,11 @@ import at.tuwien.entities.database.table.columns.TableColumnKey; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableColumnNotFoundException; import at.tuwien.exception.TableNotFoundException; -import at.tuwien.repository.jpa.OntologyRepository; -import at.tuwien.repository.jpa.TableColumnRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.OntologyRepository; +import at.tuwien.repository.mdb.TableColumnRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; import org.junit.jupiter.api.BeforeAll; @@ -32,8 +34,17 @@ import static org.mockito.Mockito.when; @ExtendWith(SpringExtension.class) public class TableServiceIntegrationTest extends BaseUnitTest { - @Autowired - private TableService tableService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; @MockBean private TableRepository tableRepository; @@ -44,6 +55,9 @@ public class TableServiceIntegrationTest extends BaseUnitTest { @MockBean private TableColumnRepository tableColumnRepository; + @Autowired + private TableService tableService; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index f84d3ea1d96b118a7da4bd468b11bfa4303a6045..eddc6dbad55e4b1894da41b4ad0e238a928950d7 100644 --- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -3,7 +3,9 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.TableNotFoundException; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; import lombok.extern.log4j.Log4j2; import org.apache.jena.sys.JenaSystem; import org.junit.jupiter.api.BeforeAll; @@ -25,12 +27,24 @@ import static org.mockito.Mockito.when; @ExtendWith(SpringExtension.class) public class TableServiceUnitTest extends BaseUnitTest { - @Autowired - private TableService tableService; + @MockBean + private UnitIdxRepository unitIdxRepository; + + @MockBean + private ConceptIdxRepository conceptIdxRepository; + + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; @MockBean private TableRepository tableRepository; + @Autowired + private TableService tableService; + @BeforeAll public static void beforeAll() { JenaSystem.init(); diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 88% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index 688993ab3ca2e32edeb59b6c66dc838f58333b02..c11a773abc70ade28fdf7aa45845043fafcdd314 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 88% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java similarity index 88% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java index 75c296f527e5a1b04d8a326673ca35f88519e842..fab911633e762bcca06113efbbed06e01f2e4e0f 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.semantics.Ontology; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..7b53e7245983c7ca848da7c1175e0158e2f2a930 --- /dev/null +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -0,0 +1,12 @@ +package at.tuwien.repository.mdb; + +import at.tuwien.entities.user.Realm; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface RealmRepository extends JpaRepository<Realm, UUID> { + +} diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java similarity index 89% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java index 25d6eaad40543b0fdc5a9ccc93eff0a6478a39da..63fe90eea77e37867fe917dc896ee3b96498ae85 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumnConcept; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java similarity index 91% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index 21a0612858636287e44ff7d3004d46e85372a82a..b52cc85d3552636e4463a848f651c45e6292a2cc 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.database.table.columns.TableColumnKey; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java similarity index 89% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java index e24ab4d11a2c21eab867f135b1477df6e8c2c34c..ef80b22e06e31c795a3d1d5cc37d2d719cb1db88 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumnUnit; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java similarity index 92% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java index 4935a9857bccbdeb715d1d467f299e43ca4df5cb..773cac2b6e2fe0f2bf359d600699a817493d0d0e 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.TableKey; diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 90% rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/ConceptIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/ConceptIdxRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..a311002ac39720e119e81a050b0655cdb107aa36 --- /dev/null +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/ConceptIdxRepository.java @@ -0,0 +1,9 @@ +package at.tuwien.repository.sdb; + +import at.tuwien.api.database.table.columns.concepts.ConceptDto; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ConceptIdxRepository extends ElasticsearchRepository<ConceptDto, String> { +} \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java similarity index 67% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java index 7df09d4e44e484f1e1a79beb9cd81c294b34d103..7fcd93f71355f255332880e121adeaca01aff919 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java @@ -1,9 +1,10 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.database.table.columns.ColumnKeyDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, Long> { +public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, ColumnKeyDto> { } \ No newline at end of file diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java similarity index 69% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java index ce6e8a0975a29bdcddaa03d316d0b158c1fd8139..fd501ffdcc41a301df1b196b8b6a2bf0ec0911c6 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java @@ -1,9 +1,10 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.database.table.TableKeyDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableIdxRepository extends ElasticsearchRepository<TableDto, Long> { +public interface TableIdxRepository extends ElasticsearchRepository<TableDto, TableKeyDto> { } \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/UnitIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/UnitIdxRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..5b7301819e945ea130bb868f90ef0fcb03474266 --- /dev/null +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/UnitIdxRepository.java @@ -0,0 +1,9 @@ +package at.tuwien.repository.sdb; + +import at.tuwien.api.database.table.columns.concepts.UnitDto; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UnitIdxRepository extends ElasticsearchRepository<UnitDto, String> { +} \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java index 5137f9f92d234d32b3f905fa634b13a68777c7a0..411ea767ecdfce7de3f8613ad690f618f96df431 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java @@ -7,7 +7,7 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.OntologyNotFoundException; import at.tuwien.exception.UserNotFoundException; import at.tuwien.mapper.OntologyMapper; -import at.tuwien.repository.jpa.OntologyRepository; +import at.tuwien.repository.mdb.OntologyRepository; import at.tuwien.service.OntologyService; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java index 742c2090371ede84aa77b90e3dd00c862388bd4c..802b0e7a07e0e8f8cd43176f4edb1214eb2ba31a 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java @@ -4,7 +4,7 @@ import at.tuwien.api.semantics.EntityDto; import at.tuwien.entities.semantics.Ontology; import at.tuwien.exception.QueryMalformedException; import at.tuwien.mapper.OntologyMapper; -import at.tuwien.repository.jpa.OntologyRepository; +import at.tuwien.repository.mdb.OntologyRepository; import at.tuwien.service.QueryService; import lombok.extern.log4j.Log4j2; import org.apache.jena.query.*; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java index 34e38612fb8527969226d695b876e6f97d0adeaf..1a1360165f610a6d377112f20827b12d34d68d63 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java @@ -1,12 +1,16 @@ package at.tuwien.service.impl; +import at.tuwien.api.database.table.columns.concepts.ConceptDto; import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto; +import at.tuwien.api.database.table.columns.concepts.UnitDto; import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; import at.tuwien.entities.database.table.columns.TableColumnConcept; import at.tuwien.entities.database.table.columns.TableColumnUnit; import at.tuwien.mapper.OntologyMapper; -import at.tuwien.repository.jpa.TableColumnConceptRepository; -import at.tuwien.repository.jpa.TableColumnUnitRepository; +import at.tuwien.repository.mdb.TableColumnConceptRepository; +import at.tuwien.repository.mdb.TableColumnUnitRepository; +import at.tuwien.repository.sdb.ConceptIdxRepository; +import at.tuwien.repository.sdb.UnitIdxRepository; import at.tuwien.service.SemanticService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; @@ -20,13 +24,18 @@ import java.util.List; public class SemanticServiceImpl implements SemanticService { private final OntologyMapper ontologyMapper; + private final UnitIdxRepository unitIdxRepository; + private final ConceptIdxRepository conceptIdxRepository; private final TableColumnUnitRepository tableColumnUnitRepository; private final TableColumnConceptRepository tableColumnConceptRepository; @Autowired public SemanticServiceImpl(TableColumnConceptRepository tableColumnConceptRepository, - TableColumnUnitRepository tableColumnUnitRepository, OntologyMapper ontologyMapper) { + TableColumnUnitRepository tableColumnUnitRepository, OntologyMapper ontologyMapper, + UnitIdxRepository unitIdxRepository, ConceptIdxRepository conceptIdxRepository) { this.ontologyMapper = ontologyMapper; + this.unitIdxRepository = unitIdxRepository; + this.conceptIdxRepository = conceptIdxRepository; this.tableColumnUnitRepository = tableColumnUnitRepository; this.tableColumnConceptRepository = tableColumnConceptRepository; } @@ -48,7 +57,10 @@ public class SemanticServiceImpl implements SemanticService { public TableColumnConcept saveConcept(ConceptSaveDto data) { final TableColumnConcept entity = ontologyMapper.conceptSaveDtoToTableColumnConcept(data); final TableColumnConcept concept = tableColumnConceptRepository.save(entity); - log.info("Saved concept with uri {}", concept.getUri()); + log.info("Saved concept with uri {} in metadata database", concept.getUri()); + final ConceptDto conceptDto = ontologyMapper.tableColumnConceptToConceptDto(concept); + conceptIdxRepository.save(conceptDto); + log.info("Saved concept with uri {} in open search database", conceptDto.getUri()); return concept; } @@ -57,7 +69,10 @@ public class SemanticServiceImpl implements SemanticService { public TableColumnUnit saveUnit(UnitSaveDto data) { final TableColumnUnit entity = ontologyMapper.unitSaveDtoToTableColumnUnit(data); final TableColumnUnit unit = tableColumnUnitRepository.save(entity); - log.info("Saved unit with uri {}", unit.getUri()); + log.info("Saved unit with uri {} in metadata database", unit.getUri()); + final UnitDto unitDto = ontologyMapper.tableColumnUnitToUnitDto(unit); + unitIdxRepository.save(unitDto); + log.info("Saved unit with uri {} in open search database", unitDto.getUri()); return unit; } diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index 8f586250943b420093aa2a0c8e6f73baa537c4a4..cab89efe6cfa87bf811252d33b8ec5e8c6cfed31 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -10,8 +10,8 @@ import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableColumnNotFoundException; import at.tuwien.exception.TableNotFoundException; import at.tuwien.mapper.TableMapper; -import at.tuwien.repository.jpa.TableColumnRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableColumnRepository; +import at.tuwien.repository.mdb.TableRepository; import at.tuwien.service.OntologyService; import at.tuwien.service.QueryService; import at.tuwien.service.TableService; diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 99bc7ae5d4b79169e3864397427310ef9e78ffab..43e1ae2d23b34719f8cf2e70cb9b6e6c46acec8e 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-table-service/pom.xml b/dbrepo-table-service/pom.xml index a044da6517ab1c9faa02e61d019ab66831c47709..b686d22c3b998f5a21b851b03cae9c6361d52150 100644 --- a/dbrepo-table-service/pom.xml +++ b/dbrepo-table-service/pom.xml @@ -34,6 +34,7 @@ <c3p0.version>0.9.5.5</c3p0.version> <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -119,15 +120,21 @@ <artifactId>hibernate-c3p0</artifactId> <version>${c3p0-hibernate.version}</version> </dependency> - <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-elasticsearch</artifactId> - </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>${mariadb.version}</version> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> + </dependency> <!-- SQL Parser --> <dependency> <groupId>com.github.jsqlparser</groupId> @@ -148,6 +155,12 @@ <version>${rabbit-amqp-client.version}</version> </dependency> <!-- Testing --> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-test-autoconfigure</artifactId> + <version>${opensearch-client.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java index a96e2effc7640acd1ec961656ee54d3a52fcd991..e472c70e310c7ad604e48bb8b7d782e9eddac845 100644 --- a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java +++ b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java @@ -2,6 +2,7 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -10,11 +11,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaAuditing -@SpringBootApplication @EnableTransactionManagement @EntityScan(basePackages = {"at.tuwien.entities"}) -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class DbrepoTableServiceApplication { public static void main(String[] args) { diff --git a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml index e3a4c13c91d34dbc066042c4c9a16b965bf53d66..8dc8303bbabab38482a172d08df1d700a766499f 100644 --- a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-table-service/rest-service/src/main/resources/application.yml b/dbrepo-table-service/rest-service/src/main/resources/application.yml index ac70fe699af16b1c71725a7a8afe4c5737c46048..a91591b9aded11a41273baa828e6f627987d7894 100644 --- a/dbrepo-table-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-table-service/rest-service/src/main/resources/application.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: elastic - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index cab709d9c6692a9e2c0cc236520751659ec4306d..1bb964bbbd36238e453369de069f2410707c5d25 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -2,6 +2,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +34,12 @@ public class ActuatorComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Test public void actuatorInfo_succeeds() throws Exception { this.mockMvc.perform(get("/actuator/info")) diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 2f448ca36e90e3d81aac0e68ddaa7304fbeb5af9..ee93d9c9a2f25e91857bbc57d95ecbeea9557d4f 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -2,6 +2,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -32,6 +34,12 @@ public class SwaggerComponentTest extends BaseUnitTest { @MockBean private IndexConfig indexConfig; + @MockBean + private TableIdxRepository tableIdxRepository; + + @MockBean + private TableColumnIdxRepository tableColumnIdxRepository; + @Test public void swaggerUi_succeeds() throws Exception { this.mockMvc.perform(get("/swagger-ui/index.html")) diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java index 2dd1a03a5affd3ba8a02eb9ca289aae1c0ba6fc9..6ba5c6fee755d26f86237f5a0d864f59a5434e53 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java @@ -11,8 +11,8 @@ import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java index e52f7c89de188832f1c681d461ffbb6ea30011db..ab7b30e6a3f35428b557a8255e9c08b1af81505f 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java @@ -7,9 +7,9 @@ import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.endpoints.TableEndpoint; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; +import at.tuwien.repository.mdb.*; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.AfterEach; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java index 3ea4f20546b2115a11e066387280f1976eac07be..49b1b0a66998bcf27080618c80bc4475b46f6922 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java @@ -11,8 +11,8 @@ import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java index c84163790cc840f4ac929c175cd5846f6d88ee65..3d27d0c923279e4cf3075b29998e44dfe07775cf 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java @@ -4,8 +4,8 @@ import at.tuwien.BaseUnitTest; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.AmqpException; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java index 234ce6491ee4cd2468bd73ee7197f5e467d26b76..2ec5fe43e9de1b18260135d49920a36b840f5ca5 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java @@ -1,15 +1,12 @@ package at.tuwien.mapper; import at.tuwien.BaseUnitTest; -import at.tuwien.api.database.AccessTypeDto; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; -import at.tuwien.exception.NotAllowedException; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java index d91e8827fbe4446048bd10d50d12516fdf2e4de8..29b42b6f6f8eb0a1238e42845b7b7bfe9bd3ad9d 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java @@ -6,9 +6,8 @@ import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.config.DockerConfig; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import at.tuwien.utils.AmqpUtils; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; @@ -46,7 +45,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest { private TableColumnIdxRepository tableColumnidxRepository; @MockBean - private TableRepository tableRepository; + private at.tuwien.repository.mdb.TableRepository tableRepository; @Autowired private AmqpUtils amqpUtils; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java index 2759fe65b2bfe5b081b1914febbdc45547f9f418..e65f776d75a274c1e9ca50ef5e1193a1b39b9bda 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java @@ -7,9 +7,9 @@ import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; +import at.tuwien.repository.mdb.*; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.*; @@ -66,7 +66,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest { private DatabaseRepository databaseRepository; @Autowired - private TableRepository tableRepository; + private at.tuwien.repository.mdb.TableRepository tableRepository; @Autowired private TableService tableService; diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java index d3482ae758f55d8dbf481b979c08762167ea3156..254d3c2d60d2aa7b7b35fc70813e730d9f95de08 100644 --- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java +++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java @@ -8,9 +8,9 @@ import at.tuwien.config.H2Utils; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.exception.*; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.*; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; +import at.tuwien.repository.mdb.*; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.apache.http.auth.BasicUserPrincipal; @@ -67,7 +67,7 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest { private DatabaseRepository databaseRepository; @Autowired - private TableRepository tableRepository; + private at.tuwien.repository.mdb.TableRepository tableRepository; @Autowired private TableService tableService; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java index e6f97043de1c912ac605dc79840f1a0728b50e0c..6dfc32022e99a2c7dfdde8dc7887bed80208a49d 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java @@ -3,18 +3,13 @@ package at.tuwien.config; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.mapper.TableMapper; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.TableColumnRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableColumnRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; -import org.springframework.core.env.Profiles; -import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -25,58 +20,35 @@ import java.util.stream.Collectors; @Log4j2 public class IndexConfig { - private final Environment environment; private final TableMapper tableMapper; private final TableRepository tableRepository; private final TableIdxRepository tableIdxRepository; private final TableColumnRepository tableColumnRepository; - private final ElasticsearchOperations elasticsearchOperations; private final TableColumnIdxRepository tableColumnIdxRepository; - @Autowired - public IndexConfig(Environment environment, TableMapper tableMapper, TableRepository tableRepository, - TableIdxRepository tableIdxRepository, TableColumnRepository tableColumnRepository, - ElasticsearchOperations elasticsearchOperations, - TableColumnIdxRepository tableColumnIdxRepository) { - this.environment = environment; + public IndexConfig(TableMapper tableMapper, TableRepository tableRepository, TableIdxRepository tableIdxRepository, + TableColumnRepository tableColumnRepository, TableColumnIdxRepository tableColumnIdxRepository) { this.tableMapper = tableMapper; this.tableRepository = tableRepository; this.tableIdxRepository = tableIdxRepository; this.tableColumnRepository = tableColumnRepository; - this.elasticsearchOperations = elasticsearchOperations; this.tableColumnIdxRepository = tableColumnIdxRepository; } @Transactional @EventListener(ApplicationReadyEvent.class) public void initIndex() { - if (environment.acceptsProfiles(Profiles.of("test-noelastic"))) { - return; - } - log.debug("creating tableindex"); - final IndexCoordinates tableIndex = IndexCoordinates.of("tableindex"); - if (!elasticsearchOperations.indexOps(tableIndex).exists()) { - elasticsearchOperations.indexOps(tableIndex).create(); - elasticsearchOperations.indexOps(tableIndex).createMapping(TableDto.class); - } - log.debug("creating columnindex"); - final IndexCoordinates columnIndex = IndexCoordinates.of("columnindex"); - if (!elasticsearchOperations.indexOps(columnIndex).exists()) { - elasticsearchOperations.indexOps(columnIndex).create(); - elasticsearchOperations.indexOps(columnIndex).createMapping(ColumnDto.class); - } - /* pre-fill */ final List<TableDto> tables = tableRepository.findAll() .stream() .map(tableMapper::tableToTableDto) .collect(Collectors.toList()); - log.debug("add {} tables to elastic search index", tables.size()); tableIdxRepository.saveAll(tables); + log.info("Added {} tables to open search index", tables.size()); final List<ColumnDto> columns = tableColumnRepository.findAll() .stream() .map(tableMapper::tableColumnToColumnDto) .collect(Collectors.toList()); - log.debug("add {} columns to elastic search index", columns.size()); tableColumnIdxRepository.saveAll(columns); + log.info("Added {} columns to open search index", columns.size()); } } diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java index 688e44c832e1e998f16018b995ab30ec542684bd..6c2d65f211cd4ea6ff3a501ba3e8d4b5cc6c70bb 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java @@ -7,9 +7,6 @@ import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; -import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto; -import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyCreateDto; import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyDto; @@ -29,7 +26,7 @@ import at.tuwien.entities.database.table.constraints.unique.Unique; import at.tuwien.exception.ImageNotSupportedException; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableMalformedException; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableRepository; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java deleted file mode 100644 index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..0000000000000000000000000000000000000000 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package at.tuwien.repository.jpa; - -import at.tuwien.entities.user.User; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; -import java.util.UUID; - -@Repository -public interface UserRepository extends JpaRepository<User, UUID> { - - Optional<User> findByUsername(String username); - -} diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.java similarity index 91% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.java index 52e9f9d0820aa261bf3629b76449c57d79e36d83..1cf729a25918fbbfc45f67dde2961e102a7a2b97 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumnConcept; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java similarity index 88% rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java index 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.Container; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java similarity index 80% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java index a91fb2ee2f0a080878cfcdb1949c818f96296e9b..f117748c36d8d3cdcefc8074f9b37bc87c448e53 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.DatabaseAccess; +import at.tuwien.entities.database.DatabaseAccessKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @@ -8,7 +9,7 @@ import org.springframework.stereotype.Repository; import java.util.Optional; @Repository -public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> { +public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> { @Query("select a from DatabaseAccess a where a.hdbid = :databaseId and a.user.username = :username") Optional<DatabaseAccess> findByDatabaseIdAndUsername(Long databaseId, String username); diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java similarity index 97% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java index f945f6eb2b36842ab96cfbab21e461617c9e76c4..2ea6e5234ac29a4c791c56a609a29da59e6ee0ac 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java similarity index 59% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java index c25e8577e29c929d1778ef407253e9970c74c04d..6bb192292f755b8e3706820c337a0e0b1dc0557b 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java @@ -1,11 +1,11 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; -import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.entities.container.image.ContainerImageEnvironmentItem; +import at.tuwien.entities.container.image.ContainerImageEnvironmentItemKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface ImageEnvironmentRepository extends JpaRepository<ContainerImageEnvironmentItem, Long> { +public interface ImageEnvironmentRepository extends JpaRepository<ContainerImageEnvironmentItem, ContainerImageEnvironmentItemKey> { } diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java similarity index 88% rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java index 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java similarity index 88% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java index 75c296f527e5a1b04d8a326673ca35f88519e842..fab911633e762bcca06113efbbed06e01f2e4e0f 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.semantics.Ontology; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..7b53e7245983c7ca848da7c1175e0158e2f2a930 --- /dev/null +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -0,0 +1,12 @@ +package at.tuwien.repository.mdb; + +import at.tuwien.entities.user.Realm; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface RealmRepository extends JpaRepository<Realm, UUID> { + +} diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java similarity index 73% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index 9441d45125e3f54d6545bbcb3e4b4e99a05d1bbf..de41d04da23a85fbaec1c8571b9394f14427ece2 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -1,6 +1,7 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumn; +import at.tuwien.entities.database.table.columns.TableColumnKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java similarity index 80% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java index c629a9b493f86fb49a2b84f77e82209fbad6dee6..77541d67b732c73ca9190e1f375f977069d5c480 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java @@ -1,7 +1,8 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; +import at.tuwien.entities.database.table.TableKey; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,7 +10,7 @@ import java.util.List; import java.util.Optional; @Repository -public interface TableRepository extends JpaRepository<Table, Long> { +public interface TableRepository extends JpaRepository<Table, TableKey> { List<Table> findByDatabaseOrderByCreatedDesc(Database database); diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.java similarity index 91% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.java index 69ae3d7e516b4dd80b0cb7a9e19f1b65677486a5..a88ba4ff4361615fe6cefd49a8550ae4185cc37f 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.database.table.columns.TableColumnUnit; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..42d09c3e9eaecff5b277e10a724ebfb857a91c8b --- /dev/null +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -0,0 +1,15 @@ +package at.tuwien.repository.mdb; + +import at.tuwien.entities.user.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface UserRepository extends JpaRepository<User, UUID> { + + Optional<User> findByUsername(String username); + +} diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java similarity index 67% rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java index 7df09d4e44e484f1e1a79beb9cd81c294b34d103..7fcd93f71355f255332880e121adeaca01aff919 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java @@ -1,9 +1,10 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.database.table.columns.ColumnKeyDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, Long> { +public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, ColumnKeyDto> { } \ No newline at end of file diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java similarity index 69% rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java index ce6e8a0975a29bdcddaa03d316d0b158c1fd8139..f672e53c3bea431ed051e2965c79a0db731b3937 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java @@ -1,9 +1,10 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; import at.tuwien.api.database.table.TableDto; +import at.tuwien.entities.database.table.TableKey; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableIdxRepository extends ElasticsearchRepository<TableDto, Long> { +public interface TableIdxRepository extends ElasticsearchRepository<TableDto, TableKey> { } \ No newline at end of file diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index 91d4f41a8a4078d50971f24139efa933b73cd508..85fc7196d4adc6e86bdb84f68ffdfb88d48fec6b 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -3,7 +3,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.exception.AccessDeniedException; import at.tuwien.exception.NotAllowedException; -import at.tuwien.repository.jpa.DatabaseAccessRepository; +import at.tuwien.repository.mdb.DatabaseAccessRepository; import at.tuwien.service.AccessService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index 35f7e99b84f038e2ee9e073ab80953378ac52a1b..13d425c5a9ed1a1524997d27348b89db9ce49e1d 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.container.Container; import at.tuwien.exception.ContainerNotFoundException; -import at.tuwien.repository.jpa.ContainerRepository; +import at.tuwien.repository.mdb.ContainerRepository; import at.tuwien.service.ContainerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index ff16e63370f98039bbab81ff7ed26dc9dd619bea..a4437d6461f47a9bf441eb448b9574974e0acc64 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -2,13 +2,12 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.Database; import at.tuwien.exception.DatabaseNotFoundException; -import at.tuwien.repository.jpa.DatabaseRepository; +import at.tuwien.repository.mdb.DatabaseRepository; import at.tuwien.service.DatabaseService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.security.Principal; import java.util.Optional; @Log4j2 diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java index 29d7a97826d4d04d197b541a61e0d231a014540b..1984eaf285320a5ab1a242e845047f1e37c6282e 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableRepository; import at.tuwien.service.MessageQueueService; import com.rabbitmq.client.*; import lombok.extern.log4j.Log4j2; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java index 94cd509ae86317051719b0c6e8027ef7d8940d44..fd1954ddd9ba6b887b976812bd2d9d4e97ab3748 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java @@ -8,9 +8,9 @@ import at.tuwien.exception.SemanticEntityNotFoundException; import at.tuwien.exception.UnitNotFoundException; import at.tuwien.gateway.SemanticServiceGateway; import at.tuwien.mapper.TableMapper; -import at.tuwien.repository.jpa.ConceptRepository; -import at.tuwien.repository.jpa.OntologyRepository; -import at.tuwien.repository.jpa.UnitRepository; +import at.tuwien.repository.mdb.ConceptRepository; +import at.tuwien.repository.mdb.OntologyRepository; +import at.tuwien.repository.mdb.UnitRepository; import at.tuwien.service.SemanticService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index c0b1681e8b6da198b7e3fadcadd1c47ca6ab32ce..463dc7edd8f4c699d2c90cd2c80b69bbe83a66b8 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -10,10 +10,10 @@ import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.TableMapper; -import at.tuwien.repository.elastic.TableColumnIdxRepository; -import at.tuwien.repository.elastic.TableIdxRepository; -import at.tuwien.repository.jpa.TableColumnRepository; -import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.repository.mdb.TableColumnRepository; +import at.tuwien.repository.mdb.TableRepository; +import at.tuwien.repository.sdb.TableColumnIdxRepository; +import at.tuwien.repository.sdb.TableIdxRepository; import at.tuwien.service.*; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; @@ -46,7 +46,7 @@ public class TableServiceImpl extends HibernateConnector implements TableService public TableServiceImpl(TableMapper tableMapper, UserService userService, SemanticService semanticService, TableRepository tableRepository, DatabaseService databaseService, ContainerService containerService, TableIdxRepository tableIdxRepository, - TableColumnRepository tableColumnRepository, + at.tuwien.repository.mdb.TableColumnRepository tableColumnRepository, TableColumnIdxRepository tableColumnIdxRepository) { this.tableMapper = tableMapper; this.userService = userService; @@ -91,7 +91,7 @@ public class TableServiceImpl extends HibernateConnector implements TableService tableRepository.delete(table); log.info("Deleted table with id {} in metadata database", table.getId()); tableIdxRepository.delete(tableMapper.tableToTableDto(table)); - log.info("Deleted table with id {} in search service", table.getId()); + log.info("Deleted table with id {} in open search database", table.getId()); } @Override @@ -190,13 +190,13 @@ public class TableServiceImpl extends HibernateConnector implements TableService } /* save in metadata database */ final Table table = tableRepository.save(entity); - log.info("Created table with id {}", table.getId()); - log.trace("created table {}", table); + log.info("Created table with id {} in metadata database", table.getId()); /* save in database_index - elastic search */ tableIdxRepository.save(tableMapper.tableToTableDto(table)); + log.info("Created table with id {} in open search database", table.getId()); /* save in column_index - elastic search */ tableColumnIdxRepository.saveAll(tableMapper.tableToTableDto(table).getColumns()); - log.info("Saved table with id {} in elastic search", table.getId()); + log.info("Saved table columns with table id {} in open search database", table.getId()); return table; } diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 2c7df8b36c10c7ce06a26808f63422a0ccc30c93..47f1ac286b3fa39407359baf5cdc58a4f8d700f5 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.User; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-ui/.env.example b/dbrepo-ui/.env.example index 48fd54b7861d0700d7203c50231c6138cdb39657..e1bec7f2bca376be3f8bb9ed34105851f0e3acb0 100644 --- a/dbrepo-ui/.env.example +++ b/dbrepo-ui/.env.example @@ -5,8 +5,8 @@ BROKER_PASSWORD="fda" DBREPO_CLIENT_SECRET="MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" DEFAULT_PID_PUBLISHER="Technische Universität Wien" DOI_URL="https://doi.org" -ELASTIC_USERNAME="elastic" -ELASTIC_PASSWORD="elastic" +SEARCH_USERNAME="admin" +SEARCH_PASSWORD="admin" LOGO="/logo.png" SEARCH="http://localhost:3001/retrieve" SHARED_FILESYSTEM="/tmp" diff --git a/dbrepo-ui/Dockerfile b/dbrepo-ui/Dockerfile index d014add23bfd9be2dbf766c8cfc0d0b9d72e958d..4b37385c0c034301c7e48047608f5adb908083bf 100644 --- a/dbrepo-ui/Dockerfile +++ b/dbrepo-ui/Dockerfile @@ -50,8 +50,8 @@ ENV BROKER_PASSWORD="fda" ENV SEARCH="http://search-db:9200" ENV SHARED_FILESYSTEM="/tmp" ENV LOGO="/logo.png" -ENV ELASTIC_USERNAME="elastic" -ENV ELASTIC_PASSWORD="elastic" +ENV SEARCH_USERNAME="admin" +ENV SEARCH_PASSWORD="admin" ENV VERSION="${TAG}" ENV TITLE="Database Repository" ENV ICON="/favicon.ico" diff --git a/dbrepo-ui/config.js b/dbrepo-ui/config.js index b12b7b7055b3bc0b08422bcd385093de08fdc742..e83a19c0c0a0cf7caf9d96c6b8709a9e9d9756bf 100644 --- a/dbrepo-ui/config.js +++ b/dbrepo-ui/config.js @@ -12,7 +12,7 @@ config.version = process.env.VERSION || 'latest' config.logo = process.env.LOGO || '/logo.png' config.mailVerify = process.env.MAIL_VERIFY || false config.tokenMax = process.env.TOKEN_MAX || 5 -config.elasticPassword = process.env.ELASTIC_PASSWORD || 'elastic' +config.elasticPassword = process.env.SEARCH_PASSWORD || 'elastic' config.clientId = process.env.DBREPO_CLIENT_ID || 'dbrepo-client' config.clientSecret = process.env.DBREPO_CLIENT_SECRET || 'MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG' config.defaultPublisher = process.env.DEFAULT_PID_PUBLISHER || 'Example University' diff --git a/dbrepo-user-service/Dockerfile b/dbrepo-user-service/Dockerfile index fb50823d3c479dacb13530a0b9efed658d521c59..b3c9c5faa1b75aceafebf8a146db78fd874d84f5 100644 --- a/dbrepo-user-service/Dockerfile +++ b/dbrepo-user-service/Dockerfile @@ -33,7 +33,7 @@ ENV JWT_ISSUER="http://localhost/realms/dbrepo" ENV JWT_PUBKEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB" ENV LOG_LEVEL=debug ENV DEFAULT_ROLE="default-researcher-roles" -ENV ELASTIC_PASSWORD=elastic +ENV SEARCH_PASSWORD=admin WORKDIR /app diff --git a/dbrepo-user-service/pom.xml b/dbrepo-user-service/pom.xml index 30e36bcba0c122d7376c44e8cd372668f0294f72..00656af9c7cc2f5c180067e68f748bd3ed061340 100644 --- a/dbrepo-user-service/pom.xml +++ b/dbrepo-user-service/pom.xml @@ -17,7 +17,7 @@ also allows for view-only (possibly paginated and versioned) query execution to the raw data and consumes messages in the message queue from the Broker Service. </description> - <url>https://dbrepo-docs.ossdip.at</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/</url> <developers> <developer> <name>Martin Weise</name> @@ -52,6 +52,7 @@ <keycloak.version>21.0.2</keycloak.version> <hibernate.version>6.2.2.Final</hibernate.version> <springdoc-openapi.version>2.1.0</springdoc-openapi.version> + <opensearch-client.version>1.1.0</opensearch-client.version> </properties> <dependencies> @@ -116,8 +117,14 @@ <version>${mariadb.version}</version> </dependency> <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-elasticsearch</artifactId> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch</artifactId> + <version>${opensearch-client.version}</version> + </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>spring-data-opensearch-starter</artifactId> + <version>${opensearch-client.version}</version> </dependency> <!-- Swagger --> <dependency> diff --git a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java index 4a6c3dff083b1ec4214b2f19a07d3839e6298368..a0d8a010300bbba49d1a95c1bed1b11a80d15d44 100644 --- a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java +++ b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java @@ -2,6 +2,7 @@ package at.tuwien; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -10,12 +11,12 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableJpaAuditing -@SpringBootApplication @EnableTransactionManagement @EnableScheduling -@EntityScan(basePackages = "at.tuwien.entities") -@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"}) -@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"}) +@EntityScan(basePackages = {"at.tuwien.entities"}) +@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"}) +@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"}) +@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class}) public class FdaUserServiceApplication { public static void main(String[] args) { diff --git a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml index e15f94b2cc50f9c62e045667cb5940994a29a7cb..eb5b84bcd252dfa2cff611ae92d2d1055699167a 100644 --- a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml @@ -25,10 +25,10 @@ spring: virtual-host: dbrepo username: fda password: fda - elasticsearch: - password: elastic - username: elastic - uris: http://localhost:9200 + opensearch: + username: admin + password: admin + uris: localhost:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-user-service/rest-service/src/main/resources/application.yml b/dbrepo-user-service/rest-service/src/main/resources/application.yml index 58ca1c7f57132a226ee7437ab48e3345e011becf..4e5e905427f79e85ec4302ce9c8d7d7b2631b058 100644 --- a/dbrepo-user-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-user-service/rest-service/src/main/resources/application.yml @@ -1,6 +1,8 @@ app.version: '@project.version@' spring: main.banner-mode: off + autoconfigure: + exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration datasource: url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}" driver-class-name: org.mariadb.jdbc.Driver @@ -25,10 +27,10 @@ spring: virtual-host: dbrepo username: "${BROKER_USERNAME}" password: "${BROKER_PASSWORD}" - elasticsearch: - password: "${ELASTIC_PASSWORD}" - username: elastic - uris: http://search-db:9200 + opensearch: + username: "${SEARCH_USERNAME}" + password: "${SEARCH_PASSWORD}" + uris: search-db:9200 cloud: loadbalancer.ribbon.enabled: false management.endpoints.web.exposure.include: health,info,prometheus diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java index 041e444616f232b957b5d0f756382b760f7df36a..d63621139c5d7974660eaeaece1f34735ba0726e 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/ActuatorComponentTest.java @@ -1,6 +1,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; +import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.UserIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -22,6 +24,12 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest public class ActuatorComponentTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private MockMvc mockMvc; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/MaintenanceEndpointUnitTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/MaintenanceEndpointUnitTest.java index 36097258c132aa0525a1d5c180ca150fc9709d68..329c1c57b399e298dad7ad3d1f89c4f009388b90 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/MaintenanceEndpointUnitTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/MaintenanceEndpointUnitTest.java @@ -5,9 +5,11 @@ import at.tuwien.api.maintenance.BannerMessageBriefDto; import at.tuwien.api.maintenance.BannerMessageCreateDto; import at.tuwien.api.maintenance.BannerMessageDto; import at.tuwien.api.maintenance.BannerMessageUpdateDto; +import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.maintenance.BannerMessage; import at.tuwien.exception.*; +import at.tuwien.repository.sdb.UserIdxRepository; import at.tuwien.service.BannerMessageService; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -35,6 +37,12 @@ import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) public class MaintenanceEndpointUnitTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @MockBean private ReadyConfig readyConfig; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java index 431a54052c11bc0eb4422c195e7242b829de65ce..c47f9dfbc7a25d37056ece68eab2cd163d55eacf 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/SwaggerComponentTest.java @@ -1,6 +1,8 @@ package at.tuwien.endpoint; import at.tuwien.BaseUnitTest; +import at.tuwien.config.IndexConfig; +import at.tuwien.repository.sdb.UserIdxRepository; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -22,6 +24,12 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest public class SwaggerComponentTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private MockMvc mockMvc; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/UserEndpointUnitTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/UserEndpointUnitTest.java index cec34bf0a50ad3b66641cbefc877a1fcd58d8854..088b60ed4797d40cfc4def24395fb779509398cc 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/UserEndpointUnitTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/endpoint/UserEndpointUnitTest.java @@ -4,10 +4,12 @@ import at.tuwien.BaseUnitTest; import at.tuwien.api.auth.SignupRequestDto; import at.tuwien.api.user.*; import at.tuwien.config.AuthenticationConfig; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.Realm; import at.tuwien.entities.user.Role; import at.tuwien.entities.user.User; import at.tuwien.exception.*; +import at.tuwien.repository.sdb.UserIdxRepository; import at.tuwien.service.RealmService; import at.tuwien.service.RoleService; import at.tuwien.service.UserService; @@ -40,6 +42,12 @@ import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) public class UserEndpointUnitTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @MockBean private UserService userService; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/mapper/UserMapperTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/mapper/UserMapperTest.java index eefde32629df5e8dfc5cad2ce9d3f2818dca815a..1a8e6ee845d4f5f29caa56589a4401fccd213a22 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/mapper/UserMapperTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/mapper/UserMapperTest.java @@ -1,10 +1,13 @@ package at.tuwien.mapper; import at.tuwien.BaseUnitTest; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.User; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -13,6 +16,12 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; @SpringBootTest public class UserMapperTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Test public void equals_fails() { diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java index 8759d8e3c684e7df97c79adcfa756e3b1a220f14..673b48458875961c2a2f5577f32a0bd44a9849ec 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java @@ -4,13 +4,12 @@ import at.tuwien.BaseUnitTest; import at.tuwien.api.maintenance.BannerMessageCreateDto; import at.tuwien.api.maintenance.BannerMessageTypeDto; import at.tuwien.api.maintenance.BannerMessageUpdateDto; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.maintenance.BannerMessage; import at.tuwien.entities.maintenance.BannerMessageType; -import at.tuwien.entities.user.Realm; import at.tuwien.exception.BannerMessageNotFoundException; -import at.tuwien.exception.RealmNotFoundException; -import at.tuwien.repository.jpa.BannerMessageRepository; -import at.tuwien.repository.jpa.RealmRepository; +import at.tuwien.repository.mdb.BannerMessageRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -33,6 +33,12 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class BannerMessageServiceIntegrationTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private BannerMessageRepository bannerMessageRepository; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java index 53822947511046bfdc258e81fb11f0af22b3a697..5107c8fda008b1c5434e3fbf551595d37719f3af 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java @@ -1,9 +1,11 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.Realm; import at.tuwien.exception.RealmNotFoundException; -import at.tuwien.repository.jpa.RealmRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -12,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -24,6 +27,12 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class RealmServiceIntegrationTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private RealmRepository realmRepository; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java index 2cc1cd90399afa2eb9757625c6afa879de77a0c3..6d957b51a8381228887976bd96cd176a78a52ca3 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java @@ -1,13 +1,12 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.entities.user.Realm; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.Role; -import at.tuwien.exception.RealmNotFoundException; import at.tuwien.exception.RoleNotFoundException; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.RoleRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.RoleRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -28,6 +28,12 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class RoleServiceIntegrationTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private UserRepository userRepository; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java index 70b28170937e8de1a288ddcd7da2369e61f75d08..95ce65f079107cb523eeb4a567284a95511db9b1 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java @@ -1,13 +1,12 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; -import at.tuwien.entities.user.Role; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.UserAttribute; -import at.tuwien.exception.RoleNotFoundException; import at.tuwien.exception.UserAttributeNotFoundException; -import at.tuwien.repository.jpa.RoleRepository; -import at.tuwien.repository.jpa.UserAttributeRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.UserAttributeRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -30,6 +30,12 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class UserAttributeServiceIntegrationTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private UserRepository userRepository; diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java index 52cb9f38f1b62fa33687549e68f6618ba451d2bb..1f13cf099824f2bdd681ded485618ee03673f03d 100644 --- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java +++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java @@ -5,13 +5,15 @@ import at.tuwien.api.auth.SignupRequestDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserThemeSetDto; import at.tuwien.api.user.UserUpdateDto; +import at.tuwien.config.IndexConfig; import at.tuwien.entities.user.Role; import at.tuwien.entities.user.User; import at.tuwien.entities.user.UserAttribute; import at.tuwien.exception.*; -import at.tuwien.repository.jpa.RealmRepository; -import at.tuwien.repository.jpa.RoleRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.RealmRepository; +import at.tuwien.repository.mdb.RoleRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -37,6 +40,12 @@ import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) public class UserServiceIntegrationTest extends BaseUnitTest { + @MockBean + private IndexConfig indexConfig; + + @MockBean + private UserIdxRepository userIdxRepository; + @Autowired private UserRepository userRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java deleted file mode 100644 index 58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65..0000000000000000000000000000000000000000 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package at.tuwien.config; - -import co.elastic.clients.elasticsearch.ElasticsearchClient; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; -import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; -import lombok.extern.log4j.Log4j2; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.elasticsearch.client.RestClient; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Log4j2 -@Configuration -public class ElasticsearchConfig { - - @Value("${spring.elasticsearch.uris}") - private String elasticEndpoint; - - @Value("${spring.elasticsearch.username}") - private String elasticUsername; - - @Value("${spring.elasticsearch.password}") - private String elasticPassword; - - @Bean - public ElasticsearchClient elasticsearchClient() { - log.debug("elastic endpoint={}", elasticEndpoint); - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword)); - final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint)) - .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder - .setDefaultCredentialsProvider(credentialsProvider)) - .build(); - ElasticsearchTransport transport = new RestClientTransport( - restClient, new JacksonJsonpMapper()); - return new ElasticsearchClient(transport); - } - -} \ No newline at end of file diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..6859a272103959e83ce738225264dd97a1ac4f76 --- /dev/null +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java @@ -0,0 +1,42 @@ +package at.tuwien.config; + +import at.tuwien.api.user.UserDto; +import at.tuwien.mapper.UserMapper; +import at.tuwien.repository.sdb.UserIdxRepository; +import at.tuwien.repository.mdb.UserRepository; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Component +@Log4j2 +public class IndexConfig { + + private final UserMapper userMapper; + private final UserRepository userRepository; + private final UserIdxRepository userIdxRepository; + + @Autowired + public IndexConfig(UserMapper userMapper, UserRepository userRepository, + UserIdxRepository userIdxRepository) { + this.userMapper = userMapper; + this.userRepository = userRepository; + this.userIdxRepository = userIdxRepository; + } + + @Transactional + @EventListener(ApplicationReadyEvent.class) + public void initIndex() { + final List<UserDto> users = userRepository.findAll() + .stream() + .map(userMapper::userToUserDto) + .toList(); + userIdxRepository.saveAll(users); + log.info("Added {} users to OpenSearch index", users.size()); + } +} diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef --- /dev/null +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java @@ -0,0 +1,36 @@ +package at.tuwien.config; + +import lombok.extern.log4j.Log4j2; +import org.opensearch.client.RestHighLevelClient; +import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration; +import org.opensearch.data.client.orhlc.ClientConfiguration; +import org.opensearch.data.client.orhlc.RestClients; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +public class OpenSearchConfig extends AbstractOpenSearchConfiguration { + + @Value("${spring.opensearch.uris}") + private String openSearchEndpoint; + + @Value("${spring.opensearch.username}") + private String openSearchUsername; + + @Value("${spring.opensearch.password}") + private String openSearchPassword; + + @Bean + @Override + public RestHighLevelClient opensearchClient() { + log.debug("open search endpoint: {}", openSearchEndpoint); + final ClientConfiguration clientConfiguration = ClientConfiguration.builder() + .connectedTo(openSearchEndpoint) + .withBasicAuth(openSearchUsername, openSearchPassword) + .build(); + return RestClients.create(clientConfiguration) + .rest(); + } +} \ No newline at end of file diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java similarity index 90% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java index bcdbf9f83266e10f0fab4f59126ffa936bb9b537..ee4048ede1b8dee2131c1522189407b83ebf17aa 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.maintenance.BannerMessage; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java similarity index 89% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java index d204a19345e7d27eec347ad8ea9b9a98ab997b1f..e9e9fdb8db0d291d79e478ea6f0590ab21987b78 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Credential; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java similarity index 90% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java index aabd612289f0130745444ceafe3f8fc67bd0bfd0..56d2152fa027b32d43ad2b966db167ba8ddae253 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Realm; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java similarity index 89% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java index 8669937f1d599162999a44dc28d5d8f9fdf73f04..345f96ff8afbf673b1153bd46d1b7310817aa936 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.RoleMapping; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java similarity index 90% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java index a3a4713f6864a9539344e5c413583e468863c4fe..f86422ec62a9b3949c0de4323e6306346ea60e37 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.Role; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java similarity index 87% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java index e0c8531399f55fd72429eb7ead6f92e10c54fdf8..6d96fc3584c79bfddae43faa467e0ab543e90780 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java @@ -1,10 +1,9 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.UserAttribute; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.List; import java.util.Optional; import java.util.UUID; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java similarity index 91% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java index 48e7ab240f644a583d2bdbb9a54b8322a500b804..c4b162f681d89b74ce1c1f70970999e140e089b4 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java @@ -1,4 +1,4 @@ -package at.tuwien.repository.jpa; +package at.tuwien.repository.mdb; import at.tuwien.entities.user.User; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java similarity index 70% rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java index 812cb439f61d9b708aac09589d28b9c39d100d8d..8f22ea7fe5e692a94a09799d74ae144605cd7bf3 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java @@ -1,10 +1,11 @@ -package at.tuwien.repository.elastic; +package at.tuwien.repository.sdb; -import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserDto; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; +import java.util.UUID; + @Repository -public interface UserIdxRepository extends ElasticsearchRepository<UserDto, Long> { +public interface UserIdxRepository extends ElasticsearchRepository<UserDto, UUID> { } \ No newline at end of file diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java index 5c38de25fcf98665ee2d3945a35fd2082837256d..2e5bf099706549fcc22a08ba6be54bf5e49e9692 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java @@ -5,7 +5,7 @@ import at.tuwien.api.maintenance.BannerMessageUpdateDto; import at.tuwien.entities.maintenance.BannerMessage; import at.tuwien.exception.BannerMessageNotFoundException; import at.tuwien.mapper.BannerMessageMapper; -import at.tuwien.repository.jpa.BannerMessageRepository; +import at.tuwien.repository.mdb.BannerMessageRepository; import at.tuwien.service.BannerMessageService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java index b499b6c43bde74e44902af54109e464ee4c147a4..4ff1da34d84784ad626d3be3926d21949f593d39 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.Realm; import at.tuwien.exception.RealmNotFoundException; -import at.tuwien.repository.jpa.RealmRepository; +import at.tuwien.repository.mdb.RealmRepository; import at.tuwien.service.RealmService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java index 7766f31afb2972dba07689199c92d51b802a2048..3f65f7d920344b79d199f67b21da26891b8f690d 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java @@ -2,7 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.Role; import at.tuwien.exception.RoleNotFoundException; -import at.tuwien.repository.jpa.RoleRepository; +import at.tuwien.repository.mdb.RoleRepository; import at.tuwien.service.RoleService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java index 14885f60f09fcb029818e9c517ad84a584c3176e..b8ef166f7ed067021c9157b11baa0c5e7fa86d08 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java @@ -2,13 +2,12 @@ package at.tuwien.service.impl; import at.tuwien.entities.user.UserAttribute; import at.tuwien.exception.UserAttributeNotFoundException; -import at.tuwien.repository.jpa.UserAttributeRepository; +import at.tuwien.repository.mdb.UserAttributeRepository; import at.tuwien.service.UserAttributeService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; import java.util.UUID; diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 0d0d80b5b83e23ed12a251a7775ca17dac4e469b..b3e4a75d854de7fdd8085eae3cc6423d9f10eb1f 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -1,15 +1,16 @@ package at.tuwien.service.impl; import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserThemeSetDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.*; import at.tuwien.exception.*; import at.tuwien.mapper.UserMapper; -import at.tuwien.repository.jpa.CredentialRepository; -import at.tuwien.repository.jpa.RoleMappingRepository; -import at.tuwien.repository.jpa.UserRepository; +import at.tuwien.repository.mdb.CredentialRepository; +import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import at.tuwien.service.UserAttributeService; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; @@ -43,19 +44,18 @@ public class UserServiceImpl implements UserService { private final UserMapper userMapper; private final UserRepository userRepository; + private final UserIdxRepository userIdxRepository; private final UserAttributeService userAttributeService; private final CredentialRepository credentialRepository; - private final RoleMappingRepository roleMappingRepository; @Autowired - public UserServiceImpl(UserMapper userMapper, UserRepository userRepository, - UserAttributeService userAttributeService, CredentialRepository credentialRepository, - RoleMappingRepository roleMappingRepository) { + public UserServiceImpl(UserMapper userMapper, UserRepository userRepository, UserIdxRepository userIdxRepository, + UserAttributeService userAttributeService, CredentialRepository credentialRepository) { this.userMapper = userMapper; this.userRepository = userRepository; + this.userIdxRepository = userIdxRepository; this.userAttributeService = userAttributeService; this.credentialRepository = credentialRepository; - this.roleMappingRepository = roleMappingRepository; } @Override @@ -97,11 +97,16 @@ public class UserServiceImpl implements UserService { final UserAttribute userAttribute3 = userAttributeService.create(userMapper.tripleToUserAttribute(user.getId(), "affiliation", "")); credential.setUserId(user.getId()); + /* save in metadata database */ credential = credentialRepository.save(credential); user.setCredentials(List.of(credential)); user.setAttributes(List.of(userAttribute1, userAttribute2, userAttribute3)); user.setRoles(List.of(role)); - log.info("Created user with id {}", user.getId()); + log.info("Created user with id {} in metadata database", user.getId()); + /* save in open search database */ + final UserDto userDto = userMapper.userToUserDto(user); + userIdxRepository.save(userDto); + log.info("Created user with id {} in open search database", user.getId()); return user; } diff --git a/docker-compose.yml b/docker-compose.yml index 909b52556b9465f3e8300ea92fc54fb09bf39fe9..f4532513c97cf464d9ce154fa7c6cc7520ad3915 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -72,6 +72,8 @@ services: condition: service_started dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -92,6 +94,8 @@ services: depends_on: dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -138,6 +142,8 @@ services: condition: service_healthy dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -160,10 +166,10 @@ services: depends_on: dbrepo-authentication-service: condition: service_healthy - dbrepo-search-db: - condition: service_started dbrepo-broker-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -184,6 +190,8 @@ services: condition: service_healthy dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy volumes: - /tmp:/tmp logging: @@ -206,6 +214,8 @@ services: condition: service_healthy dbrepo-metadata-db: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -245,6 +255,8 @@ services: condition: service_healthy dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -268,6 +280,8 @@ services: condition: service_healthy dbrepo-authentication-service: condition: service_healthy + dbrepo-search-db: + condition: service_healthy logging: driver: json-file @@ -296,19 +310,25 @@ services: restart: always container_name: dbrepo-search-db hostname: search-db - image: elasticsearch:8.7.1 + image: opensearchproject/opensearch:2 networks: core: ports: - 9200:9200 env_file: - .env + healthcheck: + test: curl -s http://search-db:9200 > /dev/null || exit 1 environment: discovery.type: "single-node" - ES_JAVA_OPTS: "-Xms2g -Xmx2g" + ES_JAVA_OPTS: "-Xms4g -Xmx4g" logger.level: "WARN" + plugins.security.disabled: "true" bootstrap.memory_lock: "true" - xpack.security.enabled: "true" + deploy: + resources: + limits: + memory: 4G volumes: - search-db-data:/usr/share/elasticsearch/data logging: @@ -327,11 +347,6 @@ services: - .env volumes: - "/tmp:/tmp" - depends_on: - dbrepo-identifier-service: - condition: service_healthy - dbrepo-database-service: - condition: service_healthy logging: driver: json-file @@ -363,10 +378,8 @@ services: condition: service_healthy dbrepo-metadata-service: condition: service_healthy - dbrepo-query-service: - condition: service_healthy dbrepo-search-db: - condition: service_started + condition: service_healthy dbrepo-semantics-service: condition: service_healthy dbrepo-table-service: