From 229998c699ad8d01e63a246315c456518340cc04 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 27 Jan 2025 20:53:37 +0100 Subject: [PATCH] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docker/docker-compose.yml | 45 +++++++++++++ .gitlab-ci.yml | 42 ++++++++++++ dbrepo-analyse-service/Pipfile.lock | 8 +++ .../target/create-event-listener.jar | Bin 0 -> 10015 bytes dbrepo-data-service/Dockerfile | 8 ++- dbrepo-data-service/pom.xml | 1 + dbrepo-metadata-service/Dockerfile | 12 ++-- .../at/tuwien/api/container/ContainerDto.java | 4 ++ .../at/tuwien/api/database/DatabaseDto.java | 10 +++ .../java/at/tuwien/api/database/ViewDto.java | 10 +++ .../tuwien/api/database/table/TableDto.java | 10 +++ .../main/java/at/tuwien/api/user/UserDto.java | 4 ++ .../tuwien/entities/container/Container.java | 3 - .../container/image/ContainerImage.java | 2 - .../entities/container/image/DataType.java | 1 - .../entities/container/image/Operator.java | 1 - .../at/tuwien/entities/database/Database.java | 2 - .../entities/database/DatabaseAccess.java | 2 - .../at/tuwien/entities/database/View.java | 3 - .../tuwien/entities/database/ViewColumn.java | 1 - .../tuwien/entities/database/table/Table.java | 5 +- .../database/table/columns/TableColumn.java | 3 - .../table/columns/TableColumnConcept.java | 1 - .../table/columns/TableColumnUnit.java | 1 - .../constraints/foreignKey/ForeignKey.java | 2 - .../foreignKey/ForeignKeyReference.java | 1 - .../constraints/primaryKey/PrimaryKey.java | 2 - .../table/constraints/unique/Unique.java | 2 - .../entities/identifier/Identifier.java | 3 - .../tuwien/entities/semantics/Ontology.java | 2 - .../java/at/tuwien/entities/user/User.java | 1 - dbrepo-metadata-service/pom.xml | 5 ++ .../SearchServiceConnectionException.java | 2 +- .../exception/SearchServiceException.java | 2 +- .../at/tuwien/endpoints/TableEndpoint.java | 10 +++ .../src/main/resources/datatypes.json | 15 ----- ...aCiteIdentifierServicePersistenceTest.java | 27 +++++++- .../service/DatabaseServiceUnitTest.java | 51 +++++++++++++++ .../IdentifierServicePersistenceTest.java | 13 ++++ .../service/TableServicePersistenceTest.java | 13 ++++ .../tuwien/service/TableServiceUnitTest.java | 60 ++++++++++++++++++ .../service/ViewServicePersistenceTest.java | 6 ++ .../tuwien/service/ViewServiceUnitTest.java | 12 ++++ .../java/at/tuwien/config/GatewayConfig.java | 37 ++++++++++- .../tuwien/gateway/SearchServiceGateway.java | 11 +++- .../impl/SearchServiceGatewayImpl.java | 17 ++++- .../tuwien/service/impl/TableServiceImpl.java | 19 ++++-- dbrepo-search-service/Pipfile.lock | 10 +++ dbrepo-ui/composables/table-service.ts | 8 --- .../pages/database/[database_id]/info.vue | 4 +- .../[database_id]/table/[table_id]/import.vue | 3 + .../[database_id]/table/[table_id]/info.vue | 15 ++++- .../table/[table_id]/settings.vue | 4 ++ .../database/[database_id]/view/create.vue | 13 +++- .../database/[database_id]/view/index.vue | 20 +++++- dbrepo-ui/pages/user/index.vue | 3 + docker-compose.yml | 4 +- helm/dbrepo/files/create-event-listener.jar | Bin 0 -> 10015 bytes helm/dbrepo/templates/auth-configmap.yaml | 3 + helm/dbrepo/values.yaml | 23 +++++++ make/dev.mk | 1 + 61 files changed, 514 insertions(+), 89 deletions(-) create mode 100644 dbrepo-auth-service/listeners/target/create-event-listener.jar delete mode 100644 dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json create mode 100644 helm/dbrepo/files/create-event-listener.jar diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 7817c84c7f..362a4d91b1 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -83,6 +83,7 @@ services: - ./config/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./config/master-realm.json:/opt/keycloak/data/import/master-realm.json - ./config/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json + - ./config/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar ports: - "8080:8080" environment: @@ -93,6 +94,9 @@ services: KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" + METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}/api/user" + SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}" + SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}" healthcheck: test: curl --head -fsS http://localhost:9000/health/ready interval: 10s @@ -109,7 +113,12 @@ services: dbrepo-auth-service-init: init: true restart: "no" +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.0 +======= + container_name: dbrepo-auth-service-init + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 +>>>>>>> Stashed changes environment: AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin} @@ -130,7 +139,11 @@ services: restart: "no" container_name: dbrepo-metadata-service hostname: metadata-service +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 +>>>>>>> Stashed changes volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: @@ -193,7 +206,11 @@ services: restart: "no" container_name: dbrepo-analyse-service hostname: analyse-service +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3 +>>>>>>> Stashed changes environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -248,7 +265,11 @@ services: restart: "no" container_name: dbrepo-search-db hostname: search-db +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.3 +>>>>>>> Stashed changes healthcheck: test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP interval: 10s @@ -272,7 +293,11 @@ services: restart: "no" container_name: dbrepo-search-service hostname: search-service +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3 +>>>>>>> Stashed changes environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -294,7 +319,11 @@ services: restart: "no" container_name: dbrepo-ui hostname: ui +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3 +>>>>>>> Stashed changes environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}" @@ -363,7 +392,11 @@ services: init: true container_name: dbrepo-search-service-init hostname: search-service-init +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3 +>>>>>>> Stashed changes environment: METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080} OPENSEARCH_HOST: ${OPENSEARCH_HOST:-search-db} @@ -417,7 +450,11 @@ services: restart: "no" container_name: dbrepo-dashboard-service hostname: dashboard-service +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.3 +>>>>>>> Stashed changes ports: - "3000:3000" volumes: @@ -444,7 +481,11 @@ services: init: true container_name: dbrepo-storage-service-init hostname: storage-service-init +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3 +>>>>>>> Stashed changes environment: S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin} S3_BUCKET: "${S3_BUCKET:-dbrepo}" @@ -489,7 +530,11 @@ services: restart: "no" container_name: dbrepo-data-service hostname: data-service +<<<<<<< Updated upstream image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.0 +======= + image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3 +>>>>>>> Stashed changes volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8bf70c0c71..9caa24b253 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -81,6 +81,48 @@ lint-helm-chart: - helm dependency update ./helm/dbrepo script: - helm lint ./helm/dbrepo +<<<<<<< Updated upstream +======= + - helm schema -input ./helm/dbrepo/values.yaml -output ./helm/dbrepo/values.schema.json + - diff ./CI_values.schema.json ./helm/dbrepo/values.schema.json + - diff ./dbrepo-metadata-db/1_setup-schema.sql ./helm/dbrepo/files/01-setup-schema.sql + - diff ./dbrepo-auth-service/listeners/target/create-event-listener.jar ./helm/dbrepo/files/create-event-listener.jar + artifacts: + when: always + paths: + - ./helm/dbrepo/values.schema.json + expire_in: 1 days + +lint-helm-readme: + image: docker.io/node:${NODE_VERSION}-alpine${ALPINE_VERSION} + stage: lint + before_script: + - apk --no-cache add alpine-sdk bash git + - cp ./helm/dbrepo/README.md ./CI_README.md + - git clone https://github.com/bitnami/readme-generator-for-helm + - (cd ./readme-generator-for-helm && npm install && npm install -g pkg && pkg . -o /usr/local/sbin/readme-generator) + script: + - readme-generator --readme ./helm/dbrepo/README.md --values ./helm/dbrepo/values.yaml + - diff ./CI_README.md ./helm/dbrepo/README.md + artifacts: + when: always + paths: + - ./helm/dbrepo/README.md + expire_in: 1 days + +lint-open-api-version: + image: docker.io/alpine:${ALPINE_VERSION} + stage: lint + variables: + VERSION: 4.45.1 + BINARY: yq_linux_amd64 + before_script: + - 'apk --no-cache add bash wget' + - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' + script: + - yq '.externalDocs.url' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}" + - yq '.info.version' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}" +>>>>>>> Stashed changes build-metadata-service: image: maven:3-openjdk-${JAVA_VERSION} diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 546ead5c14..aecb60a478 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,11 @@ { "_meta": { "hash": { +<<<<<<< Updated upstream "sha256": "683cc19a3205b9b5f9b99db8b71c0abadadfd652a94dcf710a73aeca92b97227" +======= + "sha256": "9cc4c161729b642069bbf4ab379c0f4a9122035afcb3ac7b5b1bfc13281f76aa" +>>>>>>> Stashed changes }, "pipfile-spec": 6, "requires": { @@ -412,8 +416,12 @@ }, "dbrepo": { "hashes": [ +<<<<<<< Updated upstream "sha256:1495b7efa016d75a2f978cf20aa1729d8dee2809583f2c253264f7fd3233addb", "sha256:839a4f5810d83e93b1fa88c7ab7641727b65af1d0eada93195d3f0daa3e13e5a" +======= + "sha256:7f98329f08d1da6fe45da8130cfb3ebd6e947a4101d46f92b31d7204b29a153d" +>>>>>>> Stashed changes ], "markers": "python_version >= '3.11'", "path": "./lib/dbrepo-1.6.1.tar.gz" diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..221bdd325f056ff953e0a44a46773470eb08e91e GIT binary patch literal 10015 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 E0G?_lI{*Lx literal 0 HcmV?d00001 diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile index f4e2be5b96..7c7b1431a9 100644 --- a/dbrepo-data-service/Dockerfile +++ b/dbrepo-data-service/Dockerfile @@ -6,22 +6,26 @@ LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" FROM maven:3-amazoncorretto-17 AS build LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" +<<<<<<< Updated upstream COPY ./pom.xml ./ RUN mvn -fn -B dependency:go-offline +======= +>>>>>>> Stashed changes COPY --from=dependency /root/.m2/repository/at/tuwien /root/.m2/repository/at/tuwien COPY ./querystore ./querystore COPY ./report ./report COPY ./rest-service ./rest-service COPY ./services ./services +COPY ./pom.xml ./ # Make sure it compiles RUN mvn clean package -DskipTests ###### THIRD STAGE ###### -FROM amazoncorretto:17-alpine3.19 AS runtime +FROM amazoncorretto:17-alpine3.21 AS runtime LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" RUN apk add --no-cache curl bash jq @@ -32,7 +36,7 @@ RUN adduser -S -u 1001 data-service USER 1001 -COPY --from=build --chown=1001 ./rest-service/target/rest-service-*.jar ./data-service.jar +COPY --from=build --chown=1001 ./rest-service/target/data-service.jar ./data-service.jar # non-root port EXPOSE 8080 diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml index 884824994a..72a7114c0f 100644 --- a/dbrepo-data-service/pom.xml +++ b/dbrepo-data-service/pom.xml @@ -292,6 +292,7 @@ </dependencies> <build> + <finalName>data-service</finalName> <resources> <resource> <directory>${basedir}/src/main/resources</directory> diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile index 843c334a9a..4a519abc9f 100644 --- a/dbrepo-metadata-service/Dockerfile +++ b/dbrepo-metadata-service/Dockerfile @@ -1,5 +1,5 @@ ###### FIRST STAGE ###### -FROM maven:3-amazoncorretto-17 AS build +FROM maven:3-amazoncorretto-17-alpine AS build LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" COPY ./pom.xml ./ @@ -12,7 +12,11 @@ COPY ./rest-service/pom.xml ./rest-service/ COPY ./services/pom.xml ./services/ COPY ./test/pom.xml ./test/ +<<<<<<< Updated upstream RUN mvn verify -B -fn +======= +RUN mvn dependency:go-offline +>>>>>>> Stashed changes COPY ./api ./api COPY ./entities ./entities @@ -27,7 +31,7 @@ COPY ./test ./test RUN mvn clean install -DskipTests ###### SECOND STAGE ###### -FROM amazoncorretto:17-alpine3.19 AS runtime +FROM amazoncorretto:17-alpine3.21 AS runtime LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" RUN apk add --no-cache curl bash jq @@ -36,9 +40,9 @@ WORKDIR /app USER 1001 -COPY --from=build --chown=1001 ./rest-service/target/dbrepo-metadata-service-rest-service-*.jar ./metadata-service.jar +COPY --from=build --chown=1001 ./rest-service/target/metadata-service.jar ./metadata-service.jar # non-root port EXPOSE 8080 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./metadata-service.jar"] +ENTRYPOINT ["java", "-jar", "./metadata-service.jar"] diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java index 9928c8e54d..c1285fb21e 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java @@ -14,6 +14,10 @@ import java.time.Instant; @Getter @Setter @Builder +<<<<<<< Updated upstream +======= +@EqualsAndHashCode(callSuper = false) +>>>>>>> Stashed changes @NoArgsConstructor @AllArgsConstructor @Jacksonized diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java index 5fc253c433..307e497c3f 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java @@ -16,7 +16,11 @@ import java.util.List; @Getter @Setter @Builder +<<<<<<< Updated upstream @EqualsAndHashCode +======= +@EqualsAndHashCode(callSuper = false) +>>>>>>> Stashed changes @NoArgsConstructor @AllArgsConstructor @Jacksonized @@ -61,6 +65,12 @@ public class DatabaseDto { @Schema(example = "true") private Boolean isSchemaPublic; +<<<<<<< Updated upstream +======= + @NotNull + private ContainerDto container; + +>>>>>>> Stashed changes @NotNull private ContainerBriefDto container; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java index d1ee156e9b..1c8eaf64b7 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java @@ -14,7 +14,11 @@ import java.util.List; @Getter @Setter @Builder +<<<<<<< Updated upstream @EqualsAndHashCode +======= +@EqualsAndHashCode(callSuper = false) +>>>>>>> Stashed changes @NoArgsConstructor @AllArgsConstructor @Jacksonized @@ -60,6 +64,12 @@ public class ViewDto { @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") private String queryHash; +<<<<<<< Updated upstream +======= + @ToString.Exclude + private DatabaseDto database; + +>>>>>>> Stashed changes @NotNull private UserBriefDto owner; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java index 67087d438d..d58d0af8a0 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java @@ -17,7 +17,11 @@ import java.util.List; @Getter @Setter @Builder +<<<<<<< Updated upstream @EqualsAndHashCode +======= +@EqualsAndHashCode(callSuper = false) +>>>>>>> Stashed changes @NoArgsConstructor @AllArgsConstructor @Jacksonized @@ -100,6 +104,12 @@ public class TableDto { @NotNull private List<ColumnDto> columns; +<<<<<<< Updated upstream +======= + @ToString.Exclude + private DatabaseDto database; + +>>>>>>> Stashed changes @NotNull private ConstraintsDto constraints; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java index 343d582b55..f6cdbf3534 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -11,7 +11,11 @@ import java.util.UUID; @Getter @Setter @Builder +<<<<<<< Updated upstream @EqualsAndHashCode +======= +@EqualsAndHashCode(callSuper = false) +>>>>>>> Stashed changes @NoArgsConstructor @AllArgsConstructor @Jacksonized diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java index a2fb1264cc..85391d31d4 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java @@ -54,7 +54,6 @@ public class Container { @Column private String uiAdditionalFlags; - @EqualsAndHashCode.Exclude @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @JoinColumns({ @JoinColumn(name = "cid", referencedColumnName = "id", insertable = false, updatable = false) @@ -67,13 +66,11 @@ public class Container { }) private ContainerImage image; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java index 7e04ce2086..2bbd65be6c 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java @@ -60,13 +60,11 @@ public class ContainerImage { @OneToMany(fetch = FetchType.LAZY, mappedBy = "image") private List<Container> containers; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java index 5f4ddbfb8c..d94b39ec25 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java @@ -68,7 +68,6 @@ public class DataType { private Boolean buildable; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "image_id", referencedColumnName = "id") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java index 1ecedc5e16..8ec4763ba2 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java @@ -32,7 +32,6 @@ public class Operator { private String documentation; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "image_id", referencedColumnName = "id") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index d90a702db3..699f50b79b 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -120,13 +120,11 @@ public class Database implements Serializable { @Column(columnDefinition = "LONGBLOB") private byte[] image; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java index 6a2622be3e..6df3aa5129 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java @@ -33,7 +33,6 @@ public class DatabaseAccess { private UUID huserid; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @@ -46,7 +45,6 @@ public class DatabaseAccess { private Long hdbid; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java index 67e6d6d18a..3835c0188b 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java @@ -89,7 +89,6 @@ public class View { private List<Identifier> identifiers; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @@ -103,13 +102,11 @@ public class View { @OrderBy("ordinalPosition") private List<ViewColumn> columns; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java index 7ef6e8b9d6..752f784e90 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java @@ -26,7 +26,6 @@ public class ViewColumn implements Comparable<ViewColumn> { private Long id; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "view_id", referencedColumnName = "id", nullable = false) diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index 3cdb01d7d3..088f0b7a8c 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -25,7 +25,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; @Data @Entity -@Builder +@Builder(toBuilder = true) @Log4j2 @ToString @AllArgsConstructor @@ -69,7 +69,6 @@ public class Table { private String description; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @@ -117,13 +116,11 @@ public class Table { @OrderBy("ordinalPosition") private List<TableColumn> columns; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java index 9f4c4e0606..459cb69f4b 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java @@ -36,7 +36,6 @@ public class TableColumn implements Comparable<TableColumn> { private Long id; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @JoinColumn(name = "tID", referencedColumnName = "id", nullable = false) @@ -114,13 +113,11 @@ public class TableColumn implements Comparable<TableColumn> { @Column(name = "std_dev") private BigDecimal stdDev; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java index 5a9e8292be..2bea4c6112 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java @@ -42,7 +42,6 @@ public class TableColumnConcept { @Column(columnDefinition = "TEXT") private String description; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java index 7e8fe915b3..e58cbed659 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java @@ -42,7 +42,6 @@ public class TableColumnUnit { @Column(columnDefinition = "TEXT") private String description; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java index 76de9463cf..a24cffcd2a 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java @@ -29,7 +29,6 @@ public class ForeignKey { private String name; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @JoinColumns({ @JoinColumn(name = "tid", referencedColumnName = "id", nullable = false) @@ -37,7 +36,6 @@ public class ForeignKey { private Table table; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @JoinColumns({ @JoinColumn(name = "rtid", referencedColumnName = "id", nullable = false) diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java index ed2691fc52..5d6c2043ae 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java @@ -26,7 +26,6 @@ public class ForeignKeyReference { private Long id; @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumn(name = "fkid", referencedColumnName = "fkid", nullable = false) private ForeignKey foreignKey; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java index 407e2fb7f3..40452ce020 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java @@ -25,7 +25,6 @@ public class PrimaryKey { private Long id; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @@ -34,7 +33,6 @@ public class PrimaryKey { private Table table; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java index c0dfc46710..fb10dad8ad 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java @@ -30,7 +30,6 @@ public class Unique { private String name; @ToString.Exclude - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinColumns({ @@ -38,7 +37,6 @@ public class Unique { }) private Table table; - @EqualsAndHashCode.Exclude @org.springframework.data.annotation.Transient @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE}) @JoinTable( diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index b98a1b8c6b..49d4df1b35 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java @@ -138,7 +138,6 @@ public class Identifier implements Serializable { * Databases are never created/updated/deleted by the Identifier entity. */ @ToString.Exclude - @EqualsAndHashCode.Exclude @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name = "dbid", referencedColumnName = "id", nullable = false, updatable = false) @@ -166,12 +165,10 @@ public class Identifier implements Serializable { }) private User owner; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java index 576aab1e37..2e796c859a 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java @@ -46,12 +46,10 @@ public class Ontology { @Column private String rdfPath; - @EqualsAndHashCode.Exclude @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP") private Instant created; - @EqualsAndHashCode.Exclude @LastModifiedDate @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java index fd87852c6e..bc17ab9bc9 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java @@ -52,7 +52,6 @@ public class User { private String language; @OneToMany(fetch = FetchType.LAZY) - @EqualsAndHashCode.Exclude @JoinColumns({ @JoinColumn(name = "user_id", referencedColumnName = "ID", insertable = false, updatable = false) }) diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 2803d9b5f3..a02d2ebe77 100644 --- a/dbrepo-metadata-service/pom.xml +++ b/dbrepo-metadata-service/pom.xml @@ -99,6 +99,10 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-webflux</artifactId> + </dependency> <!-- Open API --> <dependency> <groupId>org.springdoc</groupId> @@ -271,6 +275,7 @@ </dependencies> <build> + <finalName>metadata-service</finalName> <resources> <resource> <directory>${basedir}/src/main/resources</directory> diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java index d68185102a..2cf18262d3 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java @@ -4,7 +4,7 @@ import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(code = HttpStatus.BAD_GATEWAY, reason = "error.search.connection") -public class SearchServiceConnectionException extends Exception { +public class SearchServiceConnectionException extends RuntimeException { public SearchServiceConnectionException(String msg) { super(msg); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java index aef3ae7f7c..528b3aadd1 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java @@ -4,7 +4,7 @@ import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(code = HttpStatus.SERVICE_UNAVAILABLE, reason = "error.search.invalid") -public class SearchServiceException extends Exception { +public class SearchServiceException extends RuntimeException { public SearchServiceException(String message) { super(message); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 9f4542fc02..af9f36aa8a 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -1,7 +1,12 @@ package at.tuwien.endpoints; +<<<<<<< Updated upstream import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableCreateDto; +======= +import at.tuwien.api.database.table.CreateTableDto; +import at.tuwien.api.database.table.TableBriefDto; +>>>>>>> Stashed changes import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.ColumnDto; @@ -369,9 +374,14 @@ public class TableEndpoint extends AbstractEndpoint { final Database database = databaseService.findById(databaseId); endpointValidator.validateOnlyAccess(database, principal, true); endpointValidator.validateColumnCreateConstraints(data); + final Table table = tableService.createTable(database, data, principal); return ResponseEntity.status(HttpStatus.CREATED) +<<<<<<< Updated upstream .body(metadataMapper.customTableToTableDto( tableService.createTable(database, data, principal))); +======= + .body(metadataMapper.tableToTableBriefDto(table)); +>>>>>>> Stashed changes } @PutMapping("/{tableId}") diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json b/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json deleted file mode 100644 index 3779d12cbe..0000000000 --- a/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "name": "", - "size": { - "min": 0, - "required": true - }, - "d": { - "required": false - }, - "documentation": "https://mariadb.com/kb/en/bigint/", - "quoted": false, - "buildable": true - } -] \ No newline at end of file diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java index 182fe8e14a..9ec106fda6 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java @@ -39,8 +39,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; @ExtendWith(SpringExtension.class) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) @@ -140,8 +139,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { /* mock */ when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference))) .thenReturn(mock); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ dataCiteIdentifierService.save(DATABASE_1, USER_1, IDENTIFIER_1_SAVE_DTO); @@ -155,8 +160,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { doThrow(HttpClientErrorException.BadRequest.class) .when(restTemplate) .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference)); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ assertThrows(MalformedException.class, () -> { @@ -172,8 +183,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { doThrow(RestClientException.class) .when(restTemplate) .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference)); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ assertThrows(DataServiceConnectionException.class, () -> { @@ -331,8 +348,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { IdentifierNotFoundException, SearchServiceException, SearchServiceConnectionException { /* mock */ +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ dataCiteIdentifierService.delete(IDENTIFIER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java index 1b6570abd8..40244839e1 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java @@ -109,8 +109,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* mock */ when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.modifyImage(DATABASE_1, image); @@ -163,8 +169,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of()); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -221,8 +233,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO, VIEW_4_DTO)); /* <<< */ when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -239,8 +257,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)); /* <<< */ when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -257,8 +281,17 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of()); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -275,8 +308,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -293,8 +332,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { .thenReturn(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO, TABLE_5_DTO)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -516,8 +561,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException { /* mock */ +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java index 0c87dcdd69..55c7f17511 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java @@ -35,6 +35,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; @Log4j2 @@ -175,8 +176,14 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* mock */ when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID)) .thenReturn(QUERY_2_DTO); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_2_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ identifierService.save(DATABASE_2, USER_2, IDENTIFIER_5_SAVE_DTO); @@ -285,8 +292,14 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { SearchServiceConnectionException { /* mock */ +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ identifierService.delete(IDENTIFIER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java index 3126f9e9f4..1bad05c082 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java @@ -1,9 +1,16 @@ package at.tuwien.service; +<<<<<<< Updated upstream import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +======= +import at.tuwien.api.database.table.CreateTableDto; +import at.tuwien.api.database.table.columns.ColumnTypeDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; +>>>>>>> Stashed changes import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; @@ -111,8 +118,14 @@ public class TableServicePersistenceTest extends AbstractUnitTest { doNothing() .when(dataServiceGateway) .createTable(DATABASE_1_ID, request); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index d975e808e3..0b7d8f5bc6 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -134,8 +134,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_STATISTIC_DTO); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ tableService.updateStatistics(TABLE_8); @@ -223,8 +229,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(CONCEPT_1); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request); @@ -255,8 +267,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(CONCEPT_1_ENTITY_DTO); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request); @@ -278,8 +296,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL); @@ -315,8 +339,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL); @@ -368,8 +398,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ assertThrows(MalformedException.class, () -> { @@ -391,8 +427,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { doNothing() .when(dataServiceGateway) .createTable(DATABASE_1_ID, TABLE_3_CREATE_DTO); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL); @@ -412,8 +454,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { doThrow(DataServiceException.class) .when(dataServiceGateway) .createTable(DATABASE_1_ID, TABLE_5_CREATE_DTO); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ assertThrows(DataServiceException.class, () -> { @@ -510,8 +558,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { doNothing() .when(dataServiceGateway) .deleteTable(DATABASE_1_ID, TABLE_1_ID); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ tableService.deleteTable(TABLE_1); @@ -526,8 +580,14 @@ public class TableServiceUnitTest extends AbstractUnitTest { doNothing() .when(dataServiceGateway) .deleteTable(DATABASE_1_ID, TABLE_4_ID); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ tableService.deleteTable(TABLE_4); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java index 8ca002472a..c4c8b8bd8c 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java @@ -88,8 +88,14 @@ public class ViewServicePersistenceTest extends AbstractUnitTest { doNothing() .when(dataServiceGateway) .deleteView(DATABASE_1_ID, VIEW_1_ID); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ viewService.delete(VIEW_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java index cd9fe03c65..44a0a78d9e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java @@ -61,8 +61,14 @@ public class ViewServiceUnitTest extends AbstractUnitTest { .thenReturn(VIEW_1_DTO); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ final View response = viewService.create(DATABASE_1, USER_1, request); @@ -116,8 +122,14 @@ public class ViewServiceUnitTest extends AbstractUnitTest { .deleteView(DATABASE_1_ID, VIEW_1_ID); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); +<<<<<<< Updated upstream when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_1_DTO); +======= + doNothing() + .when(searchServiceGateway) + .update(any(Database.class)); +>>>>>>> Stashed changes /* test */ viewService.delete(VIEW_1); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java index 0bcace730e..1559281af3 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java @@ -1,15 +1,27 @@ package at.tuwien.config; +import at.tuwien.api.keycloak.TokenDto; import at.tuwien.auth.InternalRequestInterceptor; +import at.tuwien.exception.AccountNotSetupException; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.CredentialsInvalidException; import at.tuwien.gateway.KeycloakGateway; import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.ExchangeFilterFunction; +import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.util.DefaultUriBuilderFactory; +import java.util.List; + @Log4j2 @Getter @Configuration @@ -89,4 +101,27 @@ public class GatewayConfig { return restTemplate; } + @Bean + public WebClient webClient() { + return WebClient.builder() + .baseUrl(searchEndpoint) + .filter(internalFilter()) + .build(); + } + + private ExchangeFilterFunction internalFilter() { + return (request, next) -> { + final HttpHeaders headers = request.headers(); + headers.setAccept(List.of(MediaType.APPLICATION_JSON)); + try { + final TokenDto token = keycloakGateway.obtainUserToken(getSystemUsername(), getSystemPassword()); + headers.setBearerAuth(token.getAccessToken()); + return next.exchange(request); + } catch (AuthServiceConnectionException | CredentialsInvalidException | AccountNotSetupException e) { + log.error("Failed to obtain token for internal user: {}", e.getMessage()); + } + return next.exchange(request); + }; + } + } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java index f5e2f49c02..16a6c731b1 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java @@ -1,12 +1,21 @@ package at.tuwien.gateway; +<<<<<<< Updated upstream import at.tuwien.api.database.DatabaseDto; +======= +>>>>>>> Stashed changes import at.tuwien.entities.database.Database; -import at.tuwien.exception.*; +import at.tuwien.exception.DatabaseNotFoundException; +import at.tuwien.exception.SearchServiceConnectionException; +import at.tuwien.exception.SearchServiceException; public interface SearchServiceGateway { +<<<<<<< Updated upstream DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; +======= + void update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; +>>>>>>> Stashed changes void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java index 0f14b8d348..729ffb3057 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java @@ -13,29 +13,39 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.*; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; @Log4j2 @Service public class SearchServiceGatewayImpl implements SearchServiceGateway { + private final WebClient webClient; private final RestTemplate restTemplate; private final GatewayConfig gatewayConfig; private final MetadataMapper metadataMapper; @Autowired - public SearchServiceGatewayImpl(@Qualifier("searchServiceRestTemplate") RestTemplate restTemplate, + public SearchServiceGatewayImpl(WebClient webClient, @Qualifier("searchServiceRestTemplate") RestTemplate restTemplate, GatewayConfig gatewayConfig, MetadataMapper metadataMapper) { + this.webClient = webClient; this.restTemplate = restTemplate; this.gatewayConfig = gatewayConfig; this.metadataMapper = metadataMapper; } @Override +<<<<<<< Updated upstream public DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { +======= + @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) + public void update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { +>>>>>>> Stashed changes final ResponseEntity<DatabaseDto> response; final HttpHeaders headers = new HttpHeaders(); headers.set("Accept", "application/json"); @@ -44,7 +54,11 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway { log.trace("update database at endpoint {} with path {}", gatewayConfig.getSearchEndpoint(), path); try { response = restTemplate.exchange(path, HttpMethod.PUT, new HttpEntity<>( +<<<<<<< Updated upstream metadataMapper.databaseToPrivilegedDatabaseDto(database), headers), DatabaseDto.class); +======= + metadataMapper.databaseToDatabaseDto(database), headers), DatabaseDto.class); +>>>>>>> Stashed changes } catch (ResourceAccessException | HttpServerErrorException.ServiceUnavailable | HttpServerErrorException.InternalServerError e) { log.error("Failed to update database: {}", e.getMessage()); @@ -60,7 +74,6 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway { log.error("Failed to update database: response code is not 202"); throw new SearchServiceException("Failed to update database: response code is not 202"); } - return response.getBody(); } @Override diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index 52a9a63667..3d71e52b0d 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -3,8 +3,12 @@ package at.tuwien.service.impl; import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.TableUpdateDto; +<<<<<<< Updated upstream import at.tuwien.api.database.table.columns.ColumnCreateDto; +======= +>>>>>>> Stashed changes import at.tuwien.api.database.table.columns.ColumnStatisticDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.config.RabbitConfig; import at.tuwien.entities.database.Database; @@ -22,6 +26,7 @@ import at.tuwien.service.*; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.security.Principal; @@ -89,11 +94,15 @@ public class TableServiceImpl implements TableService { } @Override +<<<<<<< Updated upstream @Transactional public Table createTable(Database database, TableCreateDto data, Principal principal) throws DataServiceException, +======= + @Transactional(propagation = Propagation.REQUIRED) + public Table createTable(Database database, CreateTableDto data, Principal principal) throws DataServiceException, +>>>>>>> Stashed changes DataServiceConnectionException, UserNotFoundException, TableNotFoundException, DatabaseNotFoundException, - TableExistsException, SearchServiceException, SearchServiceConnectionException, MalformedException, - OntologyNotFoundException, SemanticEntityNotFoundException { + TableExistsException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException { final User owner = userService.findByUsername(principal.getName()); /* map table */ final Table table = Table.builder() @@ -279,9 +288,8 @@ public class TableServiceImpl implements TableService { @Override @Transactional - public void updateStatistics(Table table) throws SearchServiceException, - DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, TableNotFoundException, - DataServiceException, DataServiceConnectionException { + public void updateStatistics(Table table) throws MalformedException, TableNotFoundException, DataServiceException, + DataServiceConnectionException, DatabaseNotFoundException { final TableStatisticDto statistic = dataServiceGateway.getTableStatistics(table.getTdbid(), table.getId()); if (statistic == null) { return; @@ -312,7 +320,6 @@ public class TableServiceImpl implements TableService { /* update in open search service */ searchServiceGateway.update(database); log.info("Updated statistics for the table and {} column(s)", table.getColumns().size()); - log.trace("updated statistics: {}", table); } } diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 4d0035b92e..87765c3221 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,11 @@ { "_meta": { "hash": { +<<<<<<< Updated upstream "sha256": "a0682b0583cfc91d643a307a7dce7a524e7f7c29dbf2c9c5e9a6f16eb5f5ee91" +======= + "sha256": "2ff9fc673f1fb1e5dc272aa711f4e730088fa0188b44449db042abf99b6c4db7" +>>>>>>> Stashed changes }, "pipfile-spec": 6, "requires": { @@ -360,11 +364,17 @@ }, "dbrepo": { "hashes": [ +<<<<<<< Updated upstream "sha256:1495b7efa016d75a2f978cf20aa1729d8dee2809583f2c253264f7fd3233addb", "sha256:839a4f5810d83e93b1fa88c7ab7641727b65af1d0eada93195d3f0daa3e13e5a" ], "markers": "python_version >= '3.11'", "path": "./lib/dbrepo-1.6.1.tar.gz" +======= + "sha256:7f98329f08d1da6fe45da8130cfb3ebd6e947a4101d46f92b31d7204b29a153d" + ], + "path": "./lib/dbrepo-1.6.3.tar.gz" +>>>>>>> Stashed changes }, "docker": { "hashes": [ diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index ca757c7451..15a004f11a 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -251,13 +251,6 @@ export const useTableService = (): any => { } } - function isOwner(table: TableDto, user: UserDto) { - if (!table || !user) { - return false - } - return table.owner.id === user.id - } - function tableNameToInternalName(name: string) { return name.normalize('NFKD') .toLowerCase() @@ -293,7 +286,6 @@ export const useTableService = (): any => { suggest, prepareColumns, prepareConstraints, - isOwner, tableNameToInternalName } } diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 02c2c8310a..56973289bd 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -94,7 +94,7 @@ <div> <UserBadge :user="database.owner" - :other-user="user" /> + :other-user="cacheUser" /> </div> </v-list-item> <v-list-item @@ -104,7 +104,7 @@ <div> <UserBadge :user="database.contact" - :other-user="user" /> + :other-user="cacheUser" /> </div> </v-list-item> </v-list> diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue index 9da3e1c9fd..32862334e8 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue @@ -83,6 +83,9 @@ export default { table () { return this.cacheStore.getTable }, + access () { + return this.cacheStore.getAccess + }, title () { if (!this.table) { return this.$t('pages.table.import.title') diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue index 8108e0677e..bc4a1dcef7 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue @@ -116,6 +116,8 @@ </v-card> <v-breadcrumbs :items="items" class="pa-0 mt-2" /> </div> + <pre>table={{ table }}</pre> + <pre>access={{ access }}</pre> </template> <script> @@ -185,14 +187,22 @@ export default { roles () { return this.userStore.getRoles }, + access () { + return this.cacheStore.getAccess + }, canRead () { - if (this.database && this.database.is_public) { + if (!this.database || !this.access || this.database.is_public) { return true } +<<<<<<< Updated upstream if (!this.user || !this.access) { return false } return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' +======= + const userService = useUserService() + return userService.hasReadAccess(this.access) +>>>>>>> Stashed changes }, canViewSchema () { if (this.error) { @@ -215,9 +225,12 @@ export default { } return (this.access.type === 'write_own' && this.table.owned_by === this.user.id) || this.access.type === 'write_all' }, +<<<<<<< Updated upstream access () { return this.userStore.getAccess }, +======= +>>>>>>> Stashed changes hasDescription () { return this.table && this.table.description }, diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue index 201917c5c0..44c8b25bfc 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue @@ -229,8 +229,12 @@ export default { if (this.roles.includes('delete-foreign-table')) { return true } +<<<<<<< Updated upstream const tableService = useTableService() return tableService.isOwner(this.table, this.user) && this.roles.includes('delete-table') && this.table.identifiers.length === 0 +======= + return this.table.owner.id === this.cacheUser.uid && this.roles.includes('delete-table') && this.table.identifiers.length === 0 +>>>>>>> Stashed changes }, inputVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue index 060d186252..80cb16e549 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue @@ -1,14 +1,19 @@ <template> <div v-if="canCreateView"> - <Builder mode="view" /> + <Builder + mode="view" /> <v-breadcrumbs :items="items" class="pa-0 mt-2" /> </div> </template> <script> import Builder from '@/components/subset/Builder.vue' +<<<<<<< Updated upstream import { useUserStore } from '@/stores/user' +======= +import { useCacheStore } from '@/stores/cache.js' +>>>>>>> Stashed changes export default { components: { @@ -35,7 +40,11 @@ export default { disabled: true } ], +<<<<<<< Updated upstream userStore: useUserStore() +======= + cacheStore: useCacheStore() +>>>>>>> Stashed changes } }, computed: { @@ -46,7 +55,7 @@ export default { return this.userStore.getRoles }, canCreateView () { - if (!this.roles) { + if (!this.roles || !this.access) { return false } return this.roles.includes('create-database-view') diff --git a/dbrepo-ui/pages/database/[database_id]/view/index.vue b/dbrepo-ui/pages/database/[database_id]/view/index.vue index 4172797328..c7acfd024c 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canViewSchema"> + v-if="canViewViews"> <DatabaseToolbar /> <v-window v-model="tab"> @@ -48,11 +48,29 @@ export default { database () { return this.cacheStore.getDatabase }, +<<<<<<< Updated upstream canViewSchema () { if (this.error) { return false } return this.database +======= + access () { + return this.cacheStore.getAccess + }, + canViewViews () { + if (!this.database) { + return false + } + if (this.database.is_schema_public || this.database.is_public) { + return true + } + if (!this.access) { + return false + } + const userService = useUserService() + return userService.hasReadAccess(this.access) +>>>>>>> Stashed changes } } } diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue index e729d9086f..d53b2f42cc 100644 --- a/dbrepo-ui/pages/user/index.vue +++ b/dbrepo-ui/pages/user/index.vue @@ -2,6 +2,9 @@ <div /> </template> +<script setup> +const { loggedIn } = useOidcAuth() +</script> <script> import { useUserStore } from '@/stores/user' diff --git a/docker-compose.yml b/docker-compose.yml index 1a9da923ae..9eee227dd9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,8 +19,6 @@ services: - metadata-db-data:/bitnami/mariadb - ./dbrepo-metadata-db/1_setup-schema.sql:/docker-entrypoint-initdb.d/1_setup-schema.sql - ./dbrepo-metadata-db/2_setup-data.sql:/docker-entrypoint-initdb.d/2_setup-data.sql - ports: - - "3306:3306" environment: MARIADB_DATABASE: "${METADATA_DB:-dbrepo}" MARIADB_ROOT_PASSWORD: "${METADATA_DB_PASSWORD:-dbrepo}" @@ -141,7 +139,7 @@ services: context: ./dbrepo-metadata-service network: host ports: - - "9099:8080" + - "9099:18080" volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..221bdd325f056ff953e0a44a46773470eb08e91e GIT binary patch literal 10015 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 E0G?_lI{*Lx literal 0 HcmV?d00001 diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index 9a237767cc..55355c2262 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -4,6 +4,9 @@ kind: ConfigMap metadata: name: auth-service-config namespace: {{ include "common.names.namespace" . | quote }} +binaryData: + create-event-listener.jar: | + {{ .Files.Get "files/create-event-listener.jar" | b64enc | nindent 4 }} data: KC_HOSTNAME_PATH: "/" KC_HOSTNAME_ADMIN_URL: "{{ .Values.gateway }}/" diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 4d9376c06e..2c60cd27bd 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -133,7 +133,20 @@ authservice: ## @skip authservice.extraVolumeMounts extraVolumeMounts: - name: config-map +<<<<<<< Updated upstream mountPath: /opt/bitnami/keycloak/data/import +======= + mountPath: /opt/keycloak/data/import/dbrepo-realm.json + subPath: dbrepo-realm.json + - name: config-map + mountPath: /opt/keycloak/data/import/master-realm.json + subPath: master-realm.json + - name: config-map + mountPath: /opt/bitnami/keycloak/providers/create-event-listener.jar + subPath: create-event-listener.jar + - name: cache + mountPath: /bitnami/keycloak/ +>>>>>>> Stashed changes ## @skip authservice.replicaCount The number of replicas. replicaCount: 2 @@ -167,6 +180,16 @@ datadb: enabled: true ## @param datadb.replicaCount The number of cluster nodes, should be uneven i.e. 2n+1 replicaCount: 3 + resources: + resources: + limits: + cpu: 750m + ephemeral-storage: 2Gi + memory: 1536Mi + requests: + cpu: 500m + ephemeral-storage: 50Mi + memory: 1000Mi persistence: ## @param datadb.persistence.enabled Enable persistent storage. enabled: true diff --git a/make/dev.mk b/make/dev.mk index 0282dbbce2..c20b4dd229 100644 --- a/make/dev.mk +++ b/make/dev.mk @@ -31,6 +31,7 @@ package-config: ## Package the config files cp ./dbrepo-metric-db/prometheus.yml ./.docker/config cp ./dbrepo-storage-service/s3_config.json ./.docker/config cp ./dbrepo-upload-service/pre-create.sh ./.docker/config + cp ./dbrepo-auth-service/listeners/target/create-event-listener.jar ./.docker/config cd ./.docker && tar czf ./dist.tar.gz ./docker-compose.yml ./.env ./config .PHONY: install-staging -- GitLab