diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index f3c33b643bf85812ccefe632938805aece99ad21..0f675e47eb507fa1d2c6691f6e7708d4ffc414fd 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -114,7 +114,7 @@ services: init: true restart: "no" container_name: dbrepo-auth-service-init - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0 environment: AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin} @@ -135,7 +135,7 @@ services: restart: "no" container_name: dbrepo-metadata-service hostname: metadata-service - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: @@ -198,7 +198,7 @@ services: restart: "no" container_name: dbrepo-analyse-service hostname: analyse-service - image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -253,7 +253,7 @@ services: restart: "no" container_name: dbrepo-search-db hostname: search-db - image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.7.0 healthcheck: test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP interval: 10s @@ -277,7 +277,7 @@ services: restart: "no" container_name: dbrepo-search-service hostname: search-service - image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -301,7 +301,7 @@ services: restart: "no" container_name: dbrepo-ui hostname: ui - image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0 environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" @@ -381,7 +381,7 @@ services: init: true container_name: dbrepo-search-service-init hostname: search-service-init - image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0 environment: LOG_LEVEL: ${LOG_LEVEL:-info} METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080} @@ -438,7 +438,7 @@ services: restart: "no" container_name: dbrepo-dashboard-service hostname: dashboard-service - image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.7.0 ports: - "3000:3000" volumes: @@ -465,7 +465,7 @@ services: init: true container_name: dbrepo-storage-service-init hostname: storage-service-init - image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0 environment: S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin} S3_BUCKET: "${S3_BUCKET:-dbrepo}" @@ -511,7 +511,7 @@ services: restart: "no" container_name: dbrepo-data-service hostname: data-service - image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.5 + image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: diff --git a/.docs/.openapi/api.base.yaml b/.docs/.openapi/api.base.yaml index f0420d1412b6c86f3397593aa001abe31fcb7840..abadb218e7fa3b74a11caea3b01d3f73f2fa988a 100644 --- a/.docs/.openapi/api.base.yaml +++ b/.docs/.openapi/api.base.yaml @@ -11,7 +11,7 @@ components: type: http externalDocs: description: Project Website - url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/ + url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/ info: contact: email: andreas.rauber@tuwien.ac.at @@ -24,7 +24,7 @@ info: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 title: DBRepo REST API - version: 1.6.5 + version: 1.7.0 openapi: 3.1.0 servers: - description: Test Instance diff --git a/.docs/.openapi/api.yaml b/.docs/.openapi/api.yaml index c5d75bca5ae848f542e636fe91d656195e2dc6b2..c23937c6e72cdc9a8b8956b34aeeec63bfd15ce2 100644 --- a/.docs/.openapi/api.yaml +++ b/.docs/.openapi/api.yaml @@ -16,7 +16,7 @@ info: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' title: DBRepo REST API - version: 1.6.2 + version: 1.7.2 servers: - description: Test Instance url: 'https://test.dbrepo.tuwien.ac.at' @@ -24,7 +24,7 @@ servers: url: 'http://localhost' externalDocs: description: Project Website - url: 'https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/' + url: 'https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/' paths: /api/analyse/datatypes: get: diff --git a/.docs/changelog.md b/.docs/changelog.md index 1db165e41e91de37023f8ce5b669ce6ecfbf4db6..7914aeb06a5fdaeb999cf030ca2f59066ccfd2dd 100644 --- a/.docs/changelog.md +++ b/.docs/changelog.md @@ -2,9 +2,15 @@ author: Martin Weise --- +## v1.7.0 (????) + +### What's Changed + +TBD + ## v1.6.5 (2025-02-18) -[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.5) +[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.7.0) ### What's Changed diff --git a/.docs/index.md b/.docs/index.md index f4c159d7bcfc3693a8e742a3b6b2a82e1250b240..aa9c6e7693f3758fadcddbe05cd5904c5e92b7da 100644 --- a/.docs/index.md +++ b/.docs/index.md @@ -14,7 +14,7 @@ author: Martin Weise   -Documentation for version: [v1.6.5](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). +Documentation for version: [v1.7.0](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). DBRepo is a repository for data in databases that are used from the beginning until the end of a research project supporting data evolution, -citation and -versioning. It implements the query store of the diff --git a/.docs/installation.md b/.docs/installation.md index 1c6db304ccf3d760c44e56b7d49aef49d76330ff..272c62d53281b68af8db66ddcfaa0a3bdac3fa4f 100644 --- a/.docs/installation.md +++ b/.docs/installation.md @@ -11,7 +11,7 @@ author: Martin Weise If you have [Docker](https://docs.docker.com/engine/install/) already installed on your system, you can install DBRepo with: ```shell -curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | bash +curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | bash ``` !!! bug "Default installation security disclaimer" @@ -38,7 +38,7 @@ SSL/TLS certificate is recommended. Follow the [secure installation](#secure-ins Execute the installation script to download only the environment and save it to `dist`. ```shell -curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | DOWNLOAD_ONLY=1 bash +curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | DOWNLOAD_ONLY=1 bash ``` ### Static Configuration @@ -82,7 +82,7 @@ the variable `IDENTITY_SERVICE_ADMIN_PASSWORD` in `.env`. Update the client secret of the `dbrepo-client`: ```bash -curl -sSL "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/.scripts/reg-client-secret.sh" | bash +curl -sSL "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/.scripts/reg-client-secret.sh" | bash ``` Also, update the JWT key according to the diff --git a/.docs/kubernetes.md b/.docs/kubernetes.md index e2aa101097df87728a250cc96a8fd17004f839e5..9413c784dfcccf6e14f527495243e33162922f23 100644 --- a/.docs/kubernetes.md +++ b/.docs/kubernetes.md @@ -6,7 +6,7 @@ author: Martin Weise To install DBRepo in your existing cluster, download the sample [ -`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.6/helm/dbrepo/values.yaml) +`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.7/helm/dbrepo/values.yaml) for your deployment and update the variables, especially `hostname`. ```shell @@ -14,7 +14,7 @@ helm upgrade --install dbrepo \ -n dbrepo \ "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" \ --values ./values.yaml \ - --version "1.6.5" \ + --version "1.7.0" \ --create-namespace \ --cleanup-on-fail ``` diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 166f504e42ec3e9b328944da3a61d7835e1477cf..6e084f17d40ca2f0de1a3d730bfab6ac8e5b9af9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,9 +9,9 @@ variables: NODE_VERSION: "18" SONARQUBE_VERSION: "10.0" BUN_VERSION: "1.1.40" - DOC_VERSION: "1.6" - APP_VERSION: "1.6.5" - CHART_VERSION: "1.6.5" + DOC_VERSION: "1.7" + APP_VERSION: "1.7.0" + CHART_VERSION: "1.7.0" CACHE_FALLBACK_KEY: "${CI_DEFAULT_BRANCH}" # This will supress any download for dependencies and plugins or upload messages which would clutter the console log. # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. @@ -304,16 +304,16 @@ test-analyse-service: script: - "pip install pipenv" - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-analyse-service/ && coverage run -m pytest tests/test_determine_dt.py tests/test_determine_pk.py tests/test_s3_client.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt + - cd ./dbrepo-analyse-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_determine_dt.py tests/test_determine_pk.py tests/test_s3_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" artifacts: when: always paths: - - ./dbrepo-analyse-service/report.xml + - ./dbrepo-analyse-service/coverage.xml - ./dbrepo-analyse-service/coverage.txt expire_in: 1 days reports: - junit: ./dbrepo-analyse-service/report.xml + junit: ./dbrepo-analyse-service/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' test-auth-service-init: @@ -326,16 +326,16 @@ test-auth-service-init: - "pip install pipenv" - "pipenv install gunicorn && pipenv install --dev --system --deploy" script: - - cd ./dbrepo-auth-service/init/ && coverage run -m pytest tests/test_unit_app.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt + - cd ./dbrepo-auth-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_app.py && coverage html && coverage xml && coverage report > ./coverage.txt - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" artifacts: when: always paths: - - ./dbrepo-auth-service/init/report.xml + - ./dbrepo-auth-service/init/coverage.xml - ./dbrepo-auth-service/init/coverage.txt expire_in: 1 days reports: - junit: ./dbrepo-auth-service/init/report.xml + junit: ./dbrepo-auth-service/init/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' test-search-service: @@ -357,16 +357,16 @@ test-search-service: script: - "pip install pipenv" - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-search-service/ && coverage run -m pytest tests/test_app.py tests/test_jwt.py tests/test_opensearch_client.py tests/test_keycloak_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt + - cd ./dbrepo-search-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_jwt.py tests/test_opensearch_client.py tests/test_keycloak_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" artifacts: when: always paths: - - ./dbrepo-search-service/report.xml + - ./dbrepo-search-service/coverage.xml - ./dbrepo-search-service/coverage.txt expire_in: 1 days reports: - junit: ./dbrepo-search-service/report.xml + junit: ./dbrepo-search-service/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' test-search-service-init: @@ -381,16 +381,16 @@ test-search-service-init: script: - "pip install pipenv" - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-search-service/init/ && coverage run -m pytest tests/test_app.py tests/test_keycloak_client.py tests/test_opensearch_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt + - cd ./dbrepo-search-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_keycloak_client.py tests/test_opensearch_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" artifacts: when: always paths: - - ./dbrepo-search-service/report.xml + - ./dbrepo-search-service/coverage.xml - ./dbrepo-search-service/coverage.txt expire_in: 1 days reports: - junit: ./dbrepo-search-service/report.xml + junit: ./dbrepo-search-service/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' test-lib: @@ -405,16 +405,16 @@ test-lib: script: - "pip install pipenv" - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./lib/python/ && coverage run -m pytest tests/test_unit_container.py tests/test_unit_concept.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py tests/test_unit_unit.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt + - cd ./lib/python/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_container.py tests/test_unit_concept.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py tests/test_unit_unit.py && coverage html && coverage xml && coverage report > ./coverage.txt - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" artifacts: when: always paths: - - ./lib/python/report.xml + - ./lib/python/coverage.xml - ./lib/python/coverage.txt expire_in: 1 days reports: - junit: ./lib/python/report.xml + junit: ./lib/python/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' test-ui: diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 5841a5e97bd5d9f9ddde4d13a2b74623a91cf4fb..50a1615d0ed948905a9963cdbcdc70e83e220eee 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -28,7 +28,7 @@ authservice: secret: MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG setupJob: image: - name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.7.0 persistence: enabled: true @@ -71,12 +71,12 @@ searchdb: analyseservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0 metadataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0 admin: email: noreply@example.com deletedRecord: permanent @@ -92,7 +92,7 @@ metadataservice: dataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0 rabbitmq: consumer: username: admin @@ -106,16 +106,16 @@ dataservice: searchservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0 init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0 storageservice: enabled: true init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0 uploadservice: enabled: true @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0 public: api: client: https://s155.datalab.tuwien.ac.at diff --git a/Makefile b/Makefile index e84c4f80a83a72c864c8a3f85060ef08b9c48f66..e8f2553784f38ea5e656d776e34043886ed1ed4c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all -APP_VERSION ?= 1.6.5 -CHART_VERSION ?= 1.6.5 +APP_VERSION ?= 1.7.0 +CHART_VERSION ?= 1.7.0 REPOSITORY_URL ?= registry.datalab.tuwien.ac.at/dbrepo .PHONY: all diff --git a/README.md b/README.md index 628da3f3f3335717b5b4e0962a6ff45d36fed420..901d24dd06dd2863da84c5622f9aa8b157462171 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ If you have [Docker](https://docs.docker.com/engine/install/) already installed with: ```bash -curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | bash +curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | bash ``` ## Documentation diff --git a/dbrepo-analyse-service/.coveragerc b/dbrepo-analyse-service/.coveragerc new file mode 100644 index 0000000000000000000000000000000000000000..35271a237a7e1c5f3fe0d1d9bda277fb12611efd --- /dev/null +++ b/dbrepo-analyse-service/.coveragerc @@ -0,0 +1,10 @@ +[report] +format = text +omit = + # omit tests + ./tests/* + # omit ext lib + ./omlib/* + +[html] +directory = htmlcov \ No newline at end of file diff --git a/dbrepo-analyse-service/Pipfile b/dbrepo-analyse-service/Pipfile index 06b6434be71e054367e1ef521a3dae8e9401e360..6b144eec80011a340dbbaabc0c3bce5894e3c654 100644 --- a/dbrepo-analyse-service/Pipfile +++ b/dbrepo-analyse-service/Pipfile @@ -21,7 +21,7 @@ numpy = "*" pandas = "*" minio = "*" pydantic = "*" -dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"} opensearch-py = "*" [dev-packages] diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 96591a28b95119b0725038b3c2fa66e883d5ba7e..d600643542c4764ae750491e59e0fd8382a1ace7 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "1013ec1b081d79912b7ec0878b4824cb4f885a96fec148ae728d746de601b493" + "sha256": "0af9d522f713554dd7996401992cffddf372ade320c11d7950bdcd5888aa1a03" }, "pipfile-spec": 6, "requires": { @@ -180,20 +180,20 @@ }, "boto3": { "hashes": [ - "sha256:39957eabdce009353d72d131046489fbbfa15891865d5f069f1e8bfa414e6b81", - "sha256:768c8a4d4a6227fe2258105efa086f1424cba5ca915a5eb2305b2cd979306ad1" + "sha256:777ec08a6fe0ad77fa0607b431542c51d2d2e4145fecd512bee9f383ee4184f2", + "sha256:c9055fe6a33f79c43053c06db432092cfcf88f4b4181950f5ca8f2f0cb6abb87" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.22" + "version": "==1.36.24" }, "botocore": { "hashes": [ - "sha256:59520247d5a479731724f97c995d5a1c2aae3b303b324f39d99efcfad1d3019e", - "sha256:75d6b34acb0686ee4d54ff6eb285e78ccfe318407428769d1e3e13351714d890" + "sha256:7d35ba92ccbed7aa7e1563b12bb339bde612d5f845c89bfdd79a6db8c26b9f2e", + "sha256:b8b2ad60e6545aaef3a40163793c39555fcfd67fb081a38695018026c4f4db25" ], "markers": "python_version >= '3.8'", - "version": "==1.36.22" + "version": "==1.36.24" }, "certifi": { "hashes": [ @@ -421,9 +421,9 @@ }, "dbrepo": { "hashes": [ - "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], - "path": "./lib/dbrepo-1.6.5.tar.gz" + "path": "./lib/dbrepo-1.7.0.tar.gz" }, "events": { "hashes": [ @@ -847,11 +847,11 @@ }, "mistune": { "hashes": [ - "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a", - "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c" + "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319", + "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff" ], "markers": "python_version >= '3.8'", - "version": "==3.1.1" + "version": "==3.1.2" }, "multidict": { "hashes": [ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl deleted file mode 100644 index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000 Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz deleted file mode 100644 index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000 Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz and /dev/null differ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl deleted file mode 100644 index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000 Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz deleted file mode 100644 index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000 Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 Binary files /dev/null and b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl differ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323 Binary files /dev/null and b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz differ diff --git a/dbrepo-auth-service/init/.coveragerc b/dbrepo-auth-service/init/.coveragerc index 5951051c8d9d6377182ca2b4090cb9008691dfba..a387be84259ecf1c8b1387a407e3cfc528960a30 100644 --- a/dbrepo-auth-service/init/.coveragerc +++ b/dbrepo-auth-service/init/.coveragerc @@ -1,4 +1,9 @@ [report] +omit = + # omit tests + ./tests/* + # omit ext lib + ./omlib/* -exclude_lines = - if __name__ == .__main__.: \ No newline at end of file +[html] +directory = htmlcov diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index f370c8825750a431296ef68c3d482a2e4eee9389..8da93ba40f621cea1db4e46414fd28ef77856fc4 100644 Binary files a/dbrepo-auth-service/listeners/target/create-event-listener.jar and b/dbrepo-auth-service/listeners/target/create-event-listener.jar differ diff --git a/dbrepo-dashboard-service/.coverage b/dbrepo-dashboard-service/.coverage deleted file mode 100644 index 506ffe7fba86b0e70757d0f15ea4bb6516472b50..0000000000000000000000000000000000000000 Binary files a/dbrepo-dashboard-service/.coverage and /dev/null differ diff --git a/dbrepo-dashboard-service/Dockerfile b/dbrepo-dashboard-service/Dockerfile index 00fc60339b15b2e1ebeda9dbbf7849c96bd7a401..e4d9d8f5056d01714c0fc15c3840f8bf05cac921 100644 --- a/dbrepo-dashboard-service/Dockerfile +++ b/dbrepo-dashboard-service/Dockerfile @@ -1,9 +1,9 @@ -FROM docker.io/bitnami/grafana:10.4.9-debian-12-r0 AS runtime +FROM docker.io/bitnami/grafana:11.5.1 AS runtime LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" WORKDIR /app -COPY --chown=grafana:grafana ./dashboards /app/dashboards -COPY --chown=grafana:grafana ./provisioning /etc/grafana/provisioning -COPY --chown=grafana:grafana ./grafana.ini /etc/grafana/grafana.ini -COPY --chown=grafana:grafana ./ldap.toml /etc/grafana/ldap.toml +COPY --chown=grafana:grafana ./dashboards /app/dashboards +COPY --chown=grafana:grafana ./provisioning /etc/grafana/provisioning +COPY --chown=grafana:grafana ./grafana.ini /etc/grafana/grafana.ini +COPY --chown=grafana:grafana ./ldap.toml /etc/grafana/ldap.toml diff --git a/dbrepo-dashboard-service/access.py b/dbrepo-dashboard-service/access.py deleted file mode 100644 index 2f576db368e0f898c64b5a2cd3dd35f22f2384f2..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/access.py +++ /dev/null @@ -1,41 +0,0 @@ -import logging - -from grafana_client.client import GrafanaException -from werkzeug.exceptions import NotFound - -from api.dto import Permission -from clients import grafana_client - -statistics_row_title = '${table_id}' - - -def remove_anonymous_read_access(uid: str) -> None: - grafana = grafana_client.connect() - permissions = grafana.dashboard.get_permissions_by_uid(uid) - viewer_role = [permission for permission in permissions if - 'permissionName' in permission and permission['permissionName'] != 'View'] - if len(viewer_role) == 0: - logging.warning(f'Failed to find permissionName=View') - return None - try: - response = grafana_client.generic_post(f'/api/access-control/dashboards/{uid}/builtInRoles/Viewer', - Permission(permission='').model_dump()) - if response.status_code != 200: - raise OSError(f'Failed to remove anonymous read access: {response.content}') - except GrafanaException as e: - raise OSError(f'Failed to remove anonymous read access: {e.message}') - logging.info(f"Removed anonymous read access from dashboard with uid: {uid}") - - -def update_access(uid: str, username: str, permission: Permission) -> None: - try: - response = grafana_client.generic_get(f'/api/users/lookup?loginOrEmail={username}') - if response.status_code == 404: - raise NotFound(f"Failed to find user: {username}") - if response.status_code != 200: - raise OSError(f"Failed to add access to user: {username}") - grafana_client.generic_post(f"/api/access-control/dashboards/{uid}/users/{response.json()['id']}", - permission.model_dump()) - except GrafanaException as e: - logging.error(f'Failed to add access: {e.message}') - logging.info(f"Add access for dashboard with uid: {uid}") diff --git a/dbrepo-dashboard-service/api/dto.py b/dbrepo-dashboard-service/api/dto.py deleted file mode 100644 index e2dab237d52e9aa7a29b93081f20d76c97fabd19..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/api/dto.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -from typing import Optional - -from pydantic import BaseModel - - -class Datasource(BaseModel): - uid: str - type: str - id: Optional[int] = None - orgId: Optional[int] = None - name: Optional[str] = None - typeLogoUrl: Optional[str] = None - access: Optional[str] = None - url: Optional[str] = None - user: Optional[str] = None - basicAuth: Optional[bool] = None - withCredentials: Optional[bool] = None - isDefault: Optional[bool] = None - version: Optional[int] = None - readOnly: Optional[bool] = None - jsonData: Optional[dict] = None - secureJsonFields: Optional[dict] = None - basicAuthUser: Optional[str] = None - basicAuthPassword: Optional[str] = None - password: Optional[str] = None - - -class CreateDatasource(BaseModel): - name: str - type: str - access: str - url: str - basicAuth: bool - version: int - readOnly: bool - jsonData: Optional[dict] = None - secureJsonData: Optional[dict] = None - basicAuthUser: Optional[str] = None - - -class Permission(BaseModel): - permission: str - - -class CreateDatasourceRequest(BaseModel): - database_internal_name: str - readonly: bool - type: str diff --git a/dbrepo-dashboard-service/clients/grafana_client.py b/dbrepo-dashboard-service/clients/grafana_client.py deleted file mode 100644 index 8f7d5aab0f3b28b702cf83cfd51e98bf1bc3c98e..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/clients/grafana_client.py +++ /dev/null @@ -1,27 +0,0 @@ -import logging -import os - -import requests -from requests import Response - -from grafana_client import GrafanaApi - -url = os.getenv('DASHBOARD_UI_ENDPOINT', 'http://localhost:3000') -username = os.getenv('SYSTEM_USERNAME', 'admin') -password = os.getenv('SYSTEM_PASSWORD', 'admin') - - -def connect() -> GrafanaApi: - return GrafanaApi.from_url(url=f'{url}', credential=(username, password)) - - -def generic_get(api_url: str) -> Response: - request_url = url + api_url - logging.debug(f'generic get url={request_url}, auth=({username}, <reacted>)') - return requests.get(request_url, auth=(username, password)) - - -def generic_post(api_url: str, payload: dict) -> Response: - request_url = url + api_url - logging.debug(f'generic post url={request_url}, payload={payload}, auth=({username}, <reacted>)') - return requests.post(request_url, json=payload, auth=(username, password)) diff --git a/dbrepo-dashboard-service/clients/keycloak_client.py b/dbrepo-dashboard-service/clients/keycloak_client.py deleted file mode 100644 index a04998e90986c7ede455454935e4b9c1cfe16b5a..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/clients/keycloak_client.py +++ /dev/null @@ -1,36 +0,0 @@ -import logging -import requests -from dataclasses import dataclass -from typing import List - -from flask import current_app -from jwt import jwk_from_pem, JWT - - -@dataclass(init=True, eq=True) -class User: - username: str - roles: List[str] - - -class KeycloakClient: - - def obtain_user_token(self, username: str, password: str) -> str: - response = requests.post( - f"{current_app.config['AUTH_SERVICE_ENDPOINT']}/realms/dbrepo/protocol/openid-connect/token", - data={ - "username": username, - "password": password, - "grant_type": "password", - "client_id": current_app.config["AUTH_SERVICE_CLIENT"], - "client_secret": current_app.config["AUTH_SERVICE_CLIENT_SECRET"] - }) - body = response.json() - if "access_token" not in body: - raise AssertionError(f"Failed to obtain user token(s): {response.status_code}") - return response.json()["access_token"] - - def verify_jwt(self, access_token: str) -> User: - public_key = jwk_from_pem(str(current_app.config["JWT_PUBKEY"]).encode('utf-8')) - payload = JWT().decode(message=access_token, key=public_key, do_time_check=True) - return User(username=payload.get('client_id'), roles=payload.get('realm_access')["roles"]) diff --git a/dbrepo-dashboard-service/coverage.txt b/dbrepo-dashboard-service/coverage.txt deleted file mode 100644 index 5436bf1f29acf58ee8eec467fbf34cc949d912d3..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/coverage.txt +++ /dev/null @@ -1,7 +0,0 @@ -Name Stmts Miss Cover --------------------------------------------------- -app.py 210 29 86% -clients/keycloak_client.py 36 9 75% -clients/opensearch_client.py 179 51 72% --------------------------------------------------- -TOTAL 425 89 79% diff --git a/dbrepo-dashboard-service/dashboard.py b/dbrepo-dashboard-service/dashboard.py deleted file mode 100644 index c77c1834ccf5a50340b09ff30ad82821dbad3c0a..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/dashboard.py +++ /dev/null @@ -1,273 +0,0 @@ -import logging -import os - -from dbrepo.api.dto import Database, Table -from grafana_client.client import GrafanaException - -from clients import grafana_client - -statistics_row_title = '${table_id}' - -base_url = os.getenv('BASE_URL', 'http://localhost') -datasource_uid = os.getenv('JSON_DATASOURCE_NAME', 'dbrepojson0') - - -def map_link(title: str, url: str) -> dict: - return dict(targetBlank=True, - asDropdown=False, - includeVars=False, - keepTime=False, - tags=[], - type='link', - icon='info', - title=title, - url=url) - - -def map_statistics_row(dashboard: dict) -> dict | None: - filtered_panels = [panel for panel in dashboard['panels'] if - panel['type'] == 'row' and panel['title'] == statistics_row_title and 'id' in panel] - if len(filtered_panels) > 0 and filtered_panels[0]['id'] is not None: - return filtered_panels[0] - logging.warning(f'Failed to find statistics row id') - return None - - -def map_links(database: Database) -> [dict]: - links = [] - if len(database.identifiers) > 0: - links.append(map_link('Database', f"{base_url}/pid/{database.identifiers[0].id}")) - else: - links.append(map_link('Database', f"{base_url}/database/{database.id}")) - return links - - -def map_templating(database: Database) -> dict: - options = [dict(selected=False, - text=table.name, - value=str(table.id)) for table in database.tables] - selected = dict(selected=True, - text=[table.name for table in database.tables], - value=[str(table.id) for table in database.tables]) - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - return dict(list=[dict(description='', - name='table_id', - hide=0, - includeAll=True, - multi=True, - datasource=datasource, - refresh=1, - regex='', - sort=0, - definition='dbrepo-json- (infinity) json', - query=dict(queryType='infinity', - query='', - infinityQuery=dict(format='table', - filters=[], - parser='backend', - refId='variable', - root_selector='', - source='url', - type='json', - url=f"/api/database/{database.id}/table", - columns=[dict(selector='id', - text='value', - type='number'), - dict( - selector='internal_name', - text='name', - type='string')], - url_options=dict(data='', - method='GET'))), - label='Table ID', - skipUrlSync=False, - type='query', - current=selected, - options=options)]) - - -def map_timeseries_panel(database: Database, table: Table) -> dict: - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - return dict( - title=table['name'], - type='timeseries', - datasource=datasource, - targets=[dict(datasource=datasource, - format='table', - global_query_id='', - hide=False, - refId='A', - root_selector='', - source='url', - type='json', - url=f"/api/database/{database['id']}/table/{table['id']}", - url_options=dict(data='', - method='GET'))], - gridPos=dict(h=8, - w=12, - x=0, - y=0), - options=dict(legend=dict(displayMode='list', - placement='bottom', - showLegend=True), - tooltip=dict(mode='single', - sort='none')), - fieldConfig=dict( - defaults=dict(color=dict(mode='palette-classic'), - custom=dict( - axisBorderShow=False, - axisCenteredZero=False, - axisColorMode='text', - axisLabel='', - axisPlacement='auto', - barAlignment=0, - drawStyle='line', - fillOpacity=0, - gradientMode='none', - hideFrom=dict(legend=False, - tooltip=False, - viz=False), - insertNulls=False, - lineInterpolation='linear', - lineWidth=1, - pointSize=5, - scaleDistribution=dict(type='linear'), - showPoints='auto', - spanNulls=False, - stacking=dict(group='A', - mode='none'), - thresholdsStyle=dict(mode='absolute'))))) - - -def map_panels(dashboard: dict, database_id: int | None = None) -> [dict]: - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - if map_statistics_row(dashboard) is None: - dashboard['panels'].append(dict(collapsed=False, - repeat='table_id', - repeatDirection='h', - title=statistics_row_title, - type='row', - panels=[], - targets=[dict(refId='A', - datasource=datasource)], - gridPos=dict(h=1, - w=24, - x=0, - y=0))) - dashboard['panels'].append(dict(title='Sample', - type='table', - fieldConfig=dict( - defaults=dict( - color=dict(mode='palette-classic'), - custom=dict(axisBorderShow=False, - axisCenteredZero=False, - axisColorMode='text', - axisLabel='', - axisPlacement='auto', - barAlignment=0, - drawStyle='line', - fillOpacity=0, - gradientMode='none', - hideFrom=dict( - legend=False, - tooltip=False, - viz=False), - insertNulls=False, - lineInterpolation='linear', - lineWidth=1, - pointSize=5, - scaleDistribution=dict( - type='linear'), - showPoints='auto', - spanNulls=False, - stacking=dict(group='A', - mode='none'), - thresholdsStyle=dict( - mode='off'))), - overrides=[]), - options=dict(legend=dict(displayMode='list', - placement='bottom', - showLegend=True, - calcs=[]), - tooltip=dict(mode='single', - sort='none')), - targets=[dict(format='json', - columns=[], - datasource=datasource, - filters=[], - global_query_id='', - refId='A', - root_selector='', - source='url', - type='json', - url='/api/database/' + str( - database_id) + '/table/${table_id}/data', - url_options=dict(data='', - method='GET'))], - datasource=datasource, - gridPos=dict(h=4, - w=12, - x=0, - y=0))) - return dashboard['panels'] - - -def find(uid: str): - grafana = grafana_client.connect() - try: - return grafana.dashboard.get_dashboard(uid) - except GrafanaException: - return None - - -def create(database_name: str, uid: str = '') -> dict: - grafana = grafana_client.connect() - dashboard = dict(uid=uid, - title=f'{database_name} Overview', - tags=['generated', 'dbrepo'], - timezone='browser', - fiscalYearStartMonth=1, - panels=[]) - dashboard['panels'] = map_panels(dashboard) - payload = dict(folderUid='', - overwrite=False, - dashboard=dashboard) - dashboard = grafana.dashboard.update_dashboard(payload) - logging.info(f"Created dashboard with uid: {dashboard['uid']}") - return dashboard - - -def find(uid: str) -> dict | None: - grafana = grafana_client.connect() - try: - return grafana.dashboard.get_dashboard(uid)['dashboard'] - except GrafanaException: - return None - - -def delete(uid: str) -> None: - grafana = grafana_client.connect() - grafana.dashboard.delete_dashboard(uid) - - -def update(database: Database) -> dict: - grafana = grafana_client.connect() - dashboard = find(database.dashboard_uid) - # update metadata - if len(database.identifiers) > 0 and len(database.identifiers[0].titles) > 0: - dashboard['title'] = database.identifiers[0].titles[0].title - if len(database.identifiers) > 0 and len(database.identifiers[0].descriptions) > 0: - dashboard['description'] = database.identifiers[0].descriptions[0].description - dashboard['links'] = map_links(database) - dashboard['templating'] = map_templating(database) - # update panels - dashboard['panels'] = map_panels(dashboard, database.id) - payload = dict(folderUid='', - overwrite=True, - dashboard=dashboard) - dashboard = grafana.dashboard.update_dashboard(payload) - logging.info(f"Updated dashboard with uid: {dashboard['uid']}") - return dashboard diff --git a/dbrepo-dashboard-service/report.xml b/dbrepo-dashboard-service/report.xml deleted file mode 100644 index 202b3db684cda7c928023ebabbfa21b929ab63df..0000000000000000000000000000000000000000 --- a/dbrepo-dashboard-service/report.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="48" time="25.604" timestamp="2025-01-29T15:46:14.797988+01:00" hostname="medusa"><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_auth_fails" time="11.131" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_role_fails" time="0.317" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_not_found_fails" time="0.370" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_succeeds" time="0.524" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_fails" time="0.154" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_succeeds" time="0.218" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_no_query_fails" time="0.173" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_succeeds" time="0.283" /><testcase classname="test.test_app.JwtTest" name="test_get_index_fails" time="0.240" /><testcase classname="test.test_app.JwtTest" name="test_get_index_succeeds" time="0.190" /><testcase classname="test.test_app.JwtTest" name="test_health_succeeds" time="0.160" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_column_succeeds" time="0.386" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_concept_succeeds" time="0.341" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_identifier_succeeds" time="0.312" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_media_type_fails" time="0.140" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_no_body_fails" time="0.134" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_succeeds" time="0.284" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_table_succeeds" time="0.336" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_unit_succeeds" time="0.246" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_view_succeeds" time="0.281" /><testcase classname="test.test_app.JwtTest" name="test_update_database_empty_body_fails" time="0.177" /><testcase classname="test.test_app.JwtTest" name="test_update_database_malformed_body_fails" time="0.180" /><testcase classname="test.test_app.JwtTest" name="test_update_database_media_type_fails" time="0.231" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_auth_fails" time="0.119" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_body_fails" time="0.150" /><testcase classname="test.test_app.JwtTest" name="test_update_database_succeeds" time="0.243" /><testcase classname="test.test_jwt.JwtTest" name="test_get_user_roles_succeeds" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_password_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_username_fails" time="0.127" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_password_fails" time="0.142" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_username_fails" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_succeeds" time="0.152" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_empty_token_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_malformed_token_fails" time="0.143" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_no_token_fails" time="0.130" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_succeeds" time="0.212" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_fails" time="0.120" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_succeeds" time="0.172" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_fuzzy_search_succeeds" time="0.190" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_database_succeeds" time="0.201" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_user_succeeds" time="0.202" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_unit_independent_search_fails" time="0.208" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_create_succeeds" time="0.205" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_malformed_fails" time="0.237" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_succeeds" time="0.214" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_malformed_fails" time="0.112" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_succeeds" time="0.149" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_verify_jwt_succeeds" time="0.684" /></testsuite></testsuites> \ No newline at end of file diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml index 3f049bd040829373491e3991f7443f31f08c5299..697e9ece1b5e0fda90a8a10ddfcb551736c8f109 100644 --- a/dbrepo-data-service/pom.xml +++ b/dbrepo-data-service/pom.xml @@ -11,7 +11,7 @@ <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service</artifactId> <name>dbrepo-data-service</name> - <version>1.6.5</version> + <version>1.7.0</version> <description>Service that manages the data</description> @@ -23,7 +23,7 @@ <module>report</module> </modules> - <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url> <developers> <developer> <name>Martin Weise</name> diff --git a/dbrepo-data-service/querystore/pom.xml b/dbrepo-data-service/querystore/pom.xml index 6270990971c7d35275152c3c27dc07d8543f276c..1aa138f611c7fa5ec2fc4f6dc98beb8a177f24b5 100644 --- a/dbrepo-data-service/querystore/pom.xml +++ b/dbrepo-data-service/querystore/pom.xml @@ -6,12 +6,12 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-data-service-querystore</artifactId> <name>dbrepo-data-service-querystore</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies/> diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml index b78405d9de1c4b93dcaa5fac40f505797cd9209f..98536501d3beb70b5c05f632e673a401b03ae2cd 100644 --- a/dbrepo-data-service/report/pom.xml +++ b/dbrepo-data-service/report/pom.xml @@ -6,12 +6,12 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>report</artifactId> <name>dbrepo-data-service-report</name> - <version>1.6.5</version> + <version>1.7.0</version> <description> This module is only intended for the pipeline coverage report. See the detailed report in the respective modules diff --git a/dbrepo-data-service/rest-service/pom.xml b/dbrepo-data-service/rest-service/pom.xml index 4ac7c352a08ddab420e340d13726ed3be9d7a3d1..434c423ef056566305e2d72db984781e7b1429fc 100644 --- a/dbrepo-data-service/rest-service/pom.xml +++ b/dbrepo-data-service/rest-service/pom.xml @@ -6,18 +6,18 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>rest-service</artifactId> <name>dbrepo-data-service-rest-service</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </dependency> </dependencies> diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java index 4d3803a1e1c7159903ae090515edf5d9f353b068..84d04971e3bbeb376ea77277cdb52ef279a6954b 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java @@ -74,7 +74,7 @@ public class AccessEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> create(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @Valid @RequestBody CreateAccessDto data) throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, @@ -130,7 +130,7 @@ public class AccessEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @Valid @RequestBody CreateAccessDto access) throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, @@ -162,7 +162,7 @@ public class AccessEndpoint extends RestEndpoint { @ApiResponse(responseCode = "202", description = "Invalidated access cache succeeded") }) - public ResponseEntity<Void> invalidateAccess(@NotNull @PathVariable("databaseId") Long databaseId) { + public ResponseEntity<Void> invalidateAccess(@NotNull @PathVariable("databaseId") UUID databaseId) { log.debug("endpoint empty access cache for database, databaseId={}", databaseId); credentialService.invalidateAccess(databaseId); return ResponseEntity.accepted() @@ -203,7 +203,7 @@ public class AccessEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId) throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseMalformedException, MetadataServiceException { diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java index 27848cf517ca0187f8ccd69d5ec894a4a6121304..0d12384dfa8842197d20bb608b87434d30cad1c7 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java @@ -28,6 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.sql.SQLException; +import java.util.UUID; @Log4j2 @RestController @@ -128,7 +129,7 @@ public class DatabaseEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody UpdateUserPasswordDto data) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, DatabaseMalformedException, MetadataServiceException { diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java index 7f1f516495dd1d337a0ae98e5960362a3cef7a11..245774726f3725252ddb4d834af6ff2b3171ee25 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java @@ -100,7 +100,7 @@ public class SubsetEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<QueryDto>> list(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<List<QueryDto>> list(@NotNull @PathVariable("databaseId") UUID databaseId, @RequestParam(name = "persisted", required = false) Boolean filterPersisted, Principal principal) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, @@ -157,8 +157,8 @@ public class SubsetEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<?> findById(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("subsetId") Long subsetId, + public ResponseEntity<?> findById(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("subsetId") UUID subsetId, @NotNull @RequestHeader("Accept") String accept, @RequestParam(required = false) Instant timestamp, Principal principal) @@ -181,7 +181,7 @@ public class SubsetEndpoint extends RestEndpoint { timestamp = Instant.now(); log.debug("timestamp not set: default to {}", timestamp); } - if (accept == null || accept.isEmpty() || accept.isBlank()) { + if (accept == null || accept.isBlank()) { accept = MediaType.APPLICATION_JSON_VALUE; log.debug("accept header not set: default to {}", accept); } @@ -192,7 +192,7 @@ public class SubsetEndpoint extends RestEndpoint { case "text/csv": log.trace("accept header matches csv"); final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, null, null); - final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, null, null, null, null); + final Dataset<Row> dataset = subsetService.getData(database, query); metricsService.countSubsetGetData(databaseId, subsetId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); @@ -247,7 +247,7 @@ public class SubsetEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<Map<String, Object>>> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<List<Map<String, Object>>> create(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody ExecuteStatementDto data, Principal principal, @NotNull HttpServletRequest request, @@ -288,7 +288,7 @@ public class SubsetEndpoint extends RestEndpoint { final DatabaseDto database = credentialService.getDatabase(databaseId); endpointValidator.validateOnlyPrivateSchemaAccess(database, principal); try { - final Long subsetId = subsetService.create(database, data.getStatement(), timestamp, userId); + final UUID subsetId = subsetService.create(database, data.getStatement(), timestamp, userId); return getData(databaseId, subsetId, principal, request, timestamp, page, size); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); @@ -304,9 +304,9 @@ public class SubsetEndpoint extends RestEndpoint { @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Retrieved subset data", - headers = {@Header(name = "X-Count", description = "Number of rows", schema = @Schema(implementation = Long.class)), + headers = {@Header(name = "X-Count", description = "Number of rows", schema = @Schema(implementation = UUID.class)), @Header(name = "X-Headers", description = "The list of headers separated by comma", schema = @Schema(implementation = String.class)), - @Header(name = "X-Id", description = "The subset id", schema = @Schema(implementation = Long.class), required = true), + @Header(name = "X-Id", description = "The subset id", schema = @Schema(implementation = UUID.class), required = true), @Header(name = "Access-Control-Expose-Headers", description = "Reverse proxy exposing of custom headers", schema = @Schema(implementation = String.class), required = true)}, content = {@Content( mediaType = "application/json", @@ -332,8 +332,8 @@ public class SubsetEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("subsetId") Long subsetId, + public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("subsetId") UUID subsetId, Principal principal, @NotNull HttpServletRequest request, @RequestParam(required = false) Instant timestamp, @@ -381,7 +381,7 @@ public class SubsetEndpoint extends RestEndpoint { .build(); } final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, page, size); - final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, page, size, null, null); + final Dataset<Row> dataset = subsetService.getData(database, query); metricsService.countSubsetGetData(databaseId, subsetId); final String viewName = metadataMapper.queryDtoToViewName(subset); databaseService.createView(database, CreateViewDto.builder() @@ -440,8 +440,8 @@ public class SubsetEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<QueryDto> persist(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("queryId") Long queryId, + public ResponseEntity<QueryDto> persist(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("queryId") UUID queryId, @NotNull @Valid @RequestBody QueryPersistDto data, @NotNull Principal principal) throws NotAllowedException, RemoteUnavailableException, DatabaseNotFoundException, QueryStorePersistException, diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 82ed0a96f7596e025301f11e6ebceed2cd393acc..fc7dd5be7909eb412bdc07df53645d73f0a35c34 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -41,6 +41,7 @@ import java.sql.SQLException; import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.UUID; @Log4j2 @RestController @@ -106,7 +107,7 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody TableCreateDto data) throws DatabaseNotFoundException, RemoteUnavailableException, TableMalformedException, DatabaseUnavailableException, TableExistsException, TableNotFoundException, QueryMalformedException, MetadataServiceException, ContainerNotFoundException { @@ -155,8 +156,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @Valid @RequestBody TableUpdateDto data) throws RemoteUnavailableException, TableMalformedException, DatabaseUnavailableException, TableNotFoundException, MetadataServiceException { log.debug("endpoint update table, databaseId={}, data.description={}", databaseId, data.getDescription()); @@ -199,8 +200,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, QueryMalformedException, MetadataServiceException { log.debug("endpoint delete table, databaseId={}, tableId={}", databaseId, tableId); @@ -249,8 +250,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @RequestParam(required = false) Instant timestamp, @RequestParam(required = false) Long page, @RequestParam(required = false) Long size, @@ -296,7 +297,7 @@ public class TableEndpoint extends RestEndpoint { final String query = mariaDbMapper.defaultRawSelectQuery(table.getDatabase().getInternalName(), table.getInternalName(), timestamp, page, size); final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(table.getTdbid()), - query, timestamp, page, size, null, null); + query); metricsService.countTableGetData(databaseId, tableId); return ResponseEntity.ok() .headers(headers) @@ -337,8 +338,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> insertRawTuple(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> insertRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @Valid @RequestBody TupleDto data, @NotNull Principal principal, @RequestHeader("Authorization") String authorization) @@ -390,8 +391,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> updateRawTuple(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> updateRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @Valid @RequestBody TupleUpdateDto data, @NotNull Principal principal, @RequestHeader("Authorization") String authorization) @@ -443,8 +444,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> deleteRawTuple(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> deleteRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @Valid @RequestBody TupleDeleteDto data, @NotNull Principal principal, @RequestHeader("Authorization") String authorization) @@ -498,8 +499,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<TableHistoryDto>> getHistory(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<List<TableHistoryDto>> getHistory(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @RequestParam(value = "size", required = false) Long size, Principal principal) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, NotAllowedException, MetadataServiceException, @@ -567,7 +568,7 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<TableDto>> getSchema(@NotNull @PathVariable("databaseId") Long databaseId) + public ResponseEntity<List<TableDto>> getSchema(@NotNull @PathVariable("databaseId") UUID databaseId) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, DatabaseMalformedException, TableNotFoundException, MetadataServiceException { log.debug("endpoint inspect table schemas, databaseId={}", databaseId); @@ -612,8 +613,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @RequestParam(required = false) Instant timestamp, Principal principal) throws RemoteUnavailableException, TableNotFoundException, NotAllowedException, StorageUnavailableException, @@ -635,7 +636,7 @@ public class TableEndpoint extends RestEndpoint { final String query = mariaDbMapper.defaultRawSelectQuery(table.getDatabase().getInternalName(), table.getInternalName(), timestamp, null, null); final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(table.getTdbid()), - query, timestamp, null, null, null, null); + query); metricsService.countTableGetData(databaseId, tableId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); @@ -676,8 +677,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> importDataset(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> importDataset(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @Valid @RequestBody ImportDto data, @NotNull Principal principal, @RequestHeader("Authorization") String authorization) @@ -730,8 +731,8 @@ public class TableEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId) + public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, MetadataServiceException, TableMalformedException { log.debug("endpoint generate table statistic, databaseId={}, tableId={}", databaseId, tableId); diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java index 25dfd50dd434df444a45c4f7850fcdd803f0e9de..47b4bb81db2371e42eefd546937af97314bfef5d 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java @@ -37,6 +37,7 @@ import java.sql.SQLException; import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.UUID; @Log4j2 @RestController @@ -45,7 +46,6 @@ import java.util.Map; public class ViewEndpoint extends RestEndpoint { private final ViewService viewService; - private final TableService tableService; private final MariaDbMapper mariaDbMapper; private final SubsetService subsetService; private final MetricsService metricsService; @@ -55,12 +55,10 @@ public class ViewEndpoint extends RestEndpoint { private final EndpointValidator endpointValidator; @Autowired - public ViewEndpoint(ViewService viewService, TableService tableService, MariaDbMapper mariaDbMapper, - SubsetService subsetService, MetricsService metricsService, StorageService storageService, - DatabaseService databaseService, CredentialService credentialService, - EndpointValidator endpointValidator) { + public ViewEndpoint(ViewService viewService, MariaDbMapper mariaDbMapper, SubsetService subsetService, + MetricsService metricsService, StorageService storageService, DatabaseService databaseService, + CredentialService credentialService, EndpointValidator endpointValidator) { this.viewService = viewService; - this.tableService = tableService; this.mariaDbMapper = mariaDbMapper; this.subsetService = subsetService; this.metricsService = metricsService; @@ -107,7 +105,7 @@ public class ViewEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<ViewDto>> getSchema(@NotNull @PathVariable("databaseId") Long databaseId) + public ResponseEntity<List<ViewDto>> getSchema(@NotNull @PathVariable("databaseId") UUID databaseId) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, DatabaseMalformedException, MetadataServiceException, ViewNotFoundException { log.debug("endpoint inspect view schemas, databaseId={}", databaseId); @@ -152,7 +150,7 @@ public class ViewEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ViewDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<ViewDto> create(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody CreateViewDto data) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, ViewMalformedException, MetadataServiceException { log.debug("endpoint create view, databaseId={}, data.name={}", databaseId, data.getName()); @@ -195,8 +193,8 @@ public class ViewEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId) throws DatabaseUnavailableException, RemoteUnavailableException, ViewNotFoundException, ViewMalformedException, MetadataServiceException { log.debug("endpoint delete view, databaseId={}, viewId={}", databaseId, viewId); @@ -250,8 +248,8 @@ public class ViewEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, + public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId, @RequestParam(required = false) Long page, @RequestParam(required = false) Long size, @RequestParam(required = false) Instant timestamp, @@ -297,7 +295,7 @@ public class ViewEndpoint extends RestEndpoint { final String query = mariaDbMapper.defaultRawSelectQuery(view.getDatabase().getInternalName(), view.getInternalName(), timestamp, page, size); final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(databaseId), - query, timestamp, page, size, null, null); + query); metricsService.countViewGetData(databaseId, viewId); return ResponseEntity.ok() .headers(headers) @@ -340,8 +338,8 @@ public class ViewEndpoint extends RestEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, + public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId, @RequestParam(required = false) Instant timestamp, Principal principal) throws RemoteUnavailableException, ViewNotFoundException, NotAllowedException, MetadataServiceException, @@ -364,7 +362,7 @@ public class ViewEndpoint extends RestEndpoint { final String query = mariaDbMapper.defaultRawSelectQuery(view.getDatabase().getInternalName(), view.getInternalName(), timestamp, null, null); final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(databaseId), - query, timestamp, null, null, null, null); + query); metricsService.countViewGetData(databaseId, viewId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java index d4daa90741fa306a2d5c19093d5ad9ebe0d6ba2a..709e3893867dd12eaddde505cb80e4667de14d8c 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java @@ -141,11 +141,11 @@ public class MariaDbConfig { } } - public static void insertQueryStore(DatabaseDto database, QueryDto query, UUID userId) throws SQLException { + public static UUID insertQueryStore(DatabaseDto database, QueryDto query, UUID userId) throws SQLException { final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName(); log.trace("connect to database: {}", jdbc); try (Connection connection = DriverManager.getConnection(jdbc, database.getContainer().getUsername(), database.getContainer().getPassword())) { - final PreparedStatement prepareStatement = connection.prepareStatement( + PreparedStatement prepareStatement = connection.prepareStatement( "INSERT INTO qs_queries (created_by, query, query_normalized, is_persisted, query_hash, result_hash, result_number, created, executed) VALUES (?,?,?,?,?,?,?,?,?)"); prepareStatement.setString(1, String.valueOf(userId)); prepareStatement.setString(2, query.getQuery()); @@ -158,6 +158,13 @@ public class MariaDbConfig { prepareStatement.setTimestamp(9, Timestamp.from(query.getExecution())); log.trace("prepared statement: {}", prepareStatement); prepareStatement.executeUpdate(); + /* select */ + prepareStatement = connection.prepareStatement("SELECT id FROM qs_queries WHERE query_hash = ? LIMIT 1"); + prepareStatement.setString(1, query.getQueryHash()); + final ResultSet result = prepareStatement.executeQuery(); + UUID queryId; + result.next(); + return UUID.fromString(result.getString(1)); } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java index 8837ccb0d1c96f3dff61c0826fcabb956ecdc914..f29226406040247bd274c0562d4d2d99dff9d278 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java @@ -34,6 +34,7 @@ import java.sql.SQLException; import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -147,7 +148,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME) public void findById_privateDataPrivateSchema_succeeds() throws DatabaseNotFoundException, SQLException, - RemoteUnavailableException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseUnavailableException, TableNotFoundException, StorageUnavailableException, NotAllowedException, ViewMalformedException, QueryMalformedException, FormatNotAvailableException { + RemoteUnavailableException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, + DatabaseUnavailableException, TableNotFoundException, StorageUnavailableException, NotAllowedException, + QueryMalformedException, FormatNotAvailableException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) @@ -164,8 +167,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void findById_publicDataPrivateSchema_succeeds() throws DatabaseNotFoundException, SQLException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException, - FormatNotAvailableException, TableNotFoundException, MetadataServiceException, - ViewMalformedException { + FormatNotAvailableException, TableNotFoundException, MetadataServiceException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) @@ -199,7 +201,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void findById_privateDataPrivateSchemaAcceptCsv_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException, FormatNotAvailableException, SQLException, MetadataServiceException, - TableNotFoundException, ViewMalformedException, NotAllowedException { + TableNotFoundException, NotAllowedException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ @@ -207,7 +209,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -243,7 +245,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -303,10 +305,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); - when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), any(UUID.class))) .thenReturn(QUERY_5_DTO); + when(subsetService.create(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), any(UUID.class))) + .thenReturn(QUERY_5_ID); when(databaseService.inspectView(any(DatabaseDto.class), anyString())) .thenReturn(QUERY_5_VIEW_DTO); when(httpServletRequest.getMethod()) @@ -353,7 +357,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_ID); when(subsetService.findById(any(DatabaseDto.class), eq(QUERY_5_ID))) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(databaseService.createView(any(DatabaseDto.class), any(CreateViewDto.class))) .thenReturn(QUERY_5_VIEW_DTO); @@ -402,9 +406,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_4_ID)) .thenReturn(DATABASE_4_PRIVILEGED_DTO); - when(subsetService.findById(eq(DATABASE_4_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_4_PRIVILEGED_DTO), any(UUID.class))) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.create(eq(DATABASE_4_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(null))) + .thenReturn(QUERY_5_ID); + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(databaseService.inspectView(any(DatabaseDto.class), anyString())) .thenReturn(QUERY_5_VIEW_DTO); @@ -430,9 +436,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(eq(DATABASE_1_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_1_PRIVILEGED_DTO), any(UUID.class))) .thenReturn(QUERY_1_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.create(eq(DATABASE_1_PRIVILEGED_DTO), eq(QUERY_1_STATEMENT), any(Instant.class), any(UUID.class))) + .thenReturn(QUERY_1_ID); + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(databaseService.inspectView(any(DatabaseDto.class), anyString())) .thenReturn(QUERY_1_VIEW_DTO); @@ -456,9 +464,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_2_ID)) .thenReturn(DATABASE_2_PRIVILEGED_DTO); - when(subsetService.findById(eq(DATABASE_2_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_2_PRIVILEGED_DTO), any(UUID.class))) .thenReturn(QUERY_2_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -483,7 +491,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_DTO); when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(databaseService.inspectView(any(DatabaseDto.class), anyString())) .thenReturn(QUERY_5_VIEW_DTO); @@ -535,7 +543,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_1_DTO); when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(databaseService.inspectView(any(DatabaseDto.class), anyString())) .thenReturn(QUERY_1_VIEW_DTO); @@ -705,7 +713,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { }); } - protected List<QueryDto> generic_list(Long databaseId, DatabaseDto database, Principal principal) + protected List<QueryDto> generic_list(UUID databaseId, DatabaseDto database, Principal principal) throws NotAllowedException, DatabaseUnavailableException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { @@ -725,11 +733,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { return response.getBody(); } - protected void generic_findById(Long databaseId, Long subsetId, String accept, Instant timestamp, + protected void generic_findById(UUID databaseId, UUID subsetId, String accept, Instant timestamp, Principal principal) throws UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, NotAllowedException, QueryMalformedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException, FormatNotAvailableException, - MetadataServiceException, TableNotFoundException, ViewMalformedException { + MetadataServiceException, TableNotFoundException { /* test */ final ResponseEntity<?> response = subsetEndpoint.findById(databaseId, subsetId, accept, timestamp, principal); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java index b37007a0108946429481c7fa229eb575bc6e98f0..57e6ede962cec6fa7f97721bc0089604ee900eff 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java @@ -290,7 +290,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -313,7 +313,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_PRIVILEGED_DTO); when(tableService.getCount(eq(TABLE_8_PRIVILEGED_DTO), any(Instant.class))) .thenReturn(3L); - when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -373,7 +373,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(QueryMalformedException.class) .when(subsetService) - .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); + .getData(any(DatabaseDto.class), anyString()); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -416,7 +416,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -1159,7 +1159,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); /* test */ @@ -1182,7 +1182,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(access); when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); /* test */ diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java index b003ebfb4fd427c0b6bd92aef0595915f5c2bdbd..3421ed6124c284099eca5b72796ebdfd54c928f5 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java @@ -274,8 +274,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"view-database-view-data"}) public void getData_privateDataPrivateSchema_succeeds() throws RemoteUnavailableException, ViewNotFoundException, - SQLException, DatabaseUnavailableException, QueryMalformedException, PaginationException, - NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { + DatabaseUnavailableException, QueryMalformedException, PaginationException, NotAllowedException, + MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ @@ -285,7 +285,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID)) .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java index affb56208032bc818ce5f1dbe1d99008613ffa32..664e504248bb2136206817f8fabc8964fae0fdaf 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java @@ -54,6 +54,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); + headers.set("X-Jdbc-Method", IMAGE_1_JDBC); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) @@ -158,6 +159,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); + headers.set("X-Jdbc-Method", IMAGE_1_JDBC); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) @@ -256,6 +258,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); + headers.set("X-Jdbc-Method", IMAGE_1_JDBC); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(ContainerDto.class))) @@ -354,6 +357,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); + headers.set("X-Jdbc-Method", IMAGE_1_JDBC); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(ViewDto.class))) diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java index 74042aa5788c38205d8b73abff31aadf162999e3..120f5936808a7bafab30f28a7b21149077a7954f 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java @@ -78,7 +78,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { @Test public void onMessage_messageMalformed_fails(CapturedOutput output) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException { - final Message request = buildMessage("dbrepo.1.1", "{,}", new HashMap<>()); + final Message request = buildMessage(TABLE_1_ROUTING_KEY, "{,}", new HashMap<>()); /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) @@ -92,7 +92,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { @Test public void onMessage_tableNotFound_fails(CapturedOutput output) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException { - final Message request = buildMessage("dbrepo.1.1", "{\"id\":1}", new HashMap<>()); + final Message request = buildMessage(TABLE_1_ROUTING_KEY, "{\"id\": 1}", new HashMap<>()); /* mock */ doThrow(TableNotFoundException.class) diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java index 120fe49d8f98f61e36840b69d8c33fa00bc27053..dacc80acceec164a6c61f50ec3d9a069b5807aad 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java @@ -7,17 +7,14 @@ import at.tuwien.api.database.table.TupleDeleteDto; import at.tuwien.api.database.table.TupleDto; import at.tuwien.api.database.table.TupleUpdateDto; import at.tuwien.config.MetricsConfig; -import at.tuwien.endpoints.*; +import at.tuwien.endpoints.SubsetEndpoint; +import at.tuwien.endpoints.TableEndpoint; +import at.tuwien.endpoints.ViewEndpoint; import at.tuwien.listener.DefaultListener; import at.tuwien.test.AbstractUnitTest; -import io.micrometer.observation.annotation.Observed; import io.micrometer.observation.tck.TestObservationRegistry; -import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.log4j.Log4j2; -import org.apache.commons.io.FileUtils; -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; @@ -31,14 +28,11 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.*; +import java.util.HashMap; +import java.util.List; import static at.tuwien.utils.RabbitMqUtils.buildMessage; import static io.micrometer.observation.tck.TestObservationRegistryAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -63,12 +57,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { @Autowired private HttpServletRequest httpServletRequest; - @Autowired - private AccessEndpoint accessEndpoint; /* no metrics */ - - @Autowired - private DatabaseEndpoint databaseEndpoint; /* no metrics */ - @Autowired private SubsetEndpoint subsetEndpoint; @@ -78,8 +66,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { @Autowired private ViewEndpoint viewEndpoint; - private static final Map<String, String> metrics = new TreeMap<>(); /* sorted */ - @TestConfiguration static class ObservationTestConfiguration { @@ -89,16 +75,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } } - @BeforeAll - public static void beforeAll() { - FileUtils.deleteQuietly(new File("../metrics.txt")); - } - - @AfterAll - public static void afterAll() throws IOException { - saveObservedMetrics(metrics); - } - @Test public void prometheus_succeeds() throws Exception { @@ -121,7 +97,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* test */ assertThat(registry) .hasObservationWithNameEqualTo("dbrepo_message_receive"); - generic_openApiDocs(DefaultListener.class); } @Test @@ -161,7 +136,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(SubsetEndpoint.class); } @Test @@ -212,7 +186,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(TableEndpoint.class); } @Test @@ -229,21 +202,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* test */ assertThat(registry) .hasObservationWithNameEqualTo("dbrepo_view_data"); - generic_openApiDocs(ViewEndpoint.class); - } - - private static void generic_openApiDocs(Class<?> endpoint) { - final List<Method> methods = Arrays.stream(endpoint.getMethods()) - .filter(m -> m.getDeclaringClass().equals(endpoint)) - .toList(); - methods.forEach(m -> { - final Observed observed = m.getDeclaredAnnotation(Observed.class); - final Operation operation = m.getDeclaredAnnotation(Operation.class); - if (observed != null) { - assertNotNull(operation); - metrics.put(observed.name(), operation.summary()); - } - }); } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index e1579fbe95d8d04cbdbe41f87f5dc066b874b26c..ef4f8713c87058268bdf86c653248c425113a7b8 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -79,7 +79,7 @@ public class ContainerServiceIntegrationTest extends AbstractUnitTest { } @Test - public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException, InterruptedException { + public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException { /* test */ createQueryStore_generic(DATABASE_1_INTERNALNAME); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java index 07e283640a92bd68a774158d196578a0ab9fd23d..764dd92af3be5ea185b7e7ef319fde19a5e794af 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java @@ -127,7 +127,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { InterruptedException, ContainerNotFoundException { /* mock */ - when(metadataServiceGateway.getContainerById(DATABASE_1_ID)) + when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) .thenReturn(CONTAINER_2_PRIVILEGED_DTO) /* needs to be different id for test case */ .thenReturn(CONTAINER_1_PRIVILEGED_DTO); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java index 6663a71d135033e5fb4a3b3810d04d54130e270a..8fd4a26c5ea83f66b6f8f3e2d55d3a6589dd7ee5 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java @@ -39,6 +39,7 @@ import java.sql.SQLException; import java.util.LinkedList; import java.util.List; import java.util.Set; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; @@ -709,21 +710,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { assertEquals(TABLE_1_COLUMNS.size(), response.getColumns().size()); } - protected static void assertViewColumn(ViewColumnDto column, ViewColumnDto other) { - assertNotNull(column); - assertNotNull(other); - assertEquals(column.getId(), other.getId()); - assertEquals(column.getDatabaseId(), other.getDatabaseId()); - assertEquals(column.getName(), other.getName()); - assertEquals(column.getInternalName(), other.getInternalName()); - assertEquals(column.getColumnType(), other.getColumnType()); - assertEquals(column.getSize(), other.getSize()); - assertEquals(column.getD(), other.getD()); - assertEquals(column.getIsNullAllowed(), other.getIsNullAllowed()); - assertEquals(column.getDescription(), other.getDescription()); - } - - protected static void assertColumn(ColumnDto column, Long id, Long tableId, Long databaseId, String name, + protected static void assertColumn(ColumnDto column, UUID id, UUID tableId, UUID databaseId, String name, String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed, String description) { log.trace("assert column: {}", internalName); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java index 56115690b503ce3c71bb241fdd84704710a0bb0b..cd92d5579c0f66297c10661ad3c0a2a0201141f0 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java @@ -21,6 +21,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.sql.SQLException; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; @@ -55,8 +56,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ final List<QueryDto> response = findAll_generic(null); assertEquals(2, response.size()); - assertEquals(1L, response.get(0).getId()); - assertEquals(2L, response.get(1).getId()); + assertNotNull(response.get(0).getId()); + assertNotNull(response.get(1).getId()); } @Test @@ -66,7 +67,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ final List<QueryDto> response = findAll_generic(true); assertEquals(1, response.size()); - assertEquals(1L, response.get(0).getId()); + assertNotNull(response.get(0).getId()); } @Test @@ -76,15 +77,18 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ final List<QueryDto> response = findAll_generic(false); assertEquals(1, response.size()); - assertEquals(2L, response.get(0).getId()); + assertNotNull(response.get(0).getId()); } @Test public void findById_succeeds() throws SQLException, QueryNotFoundException, UserNotFoundException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { + /* mock */ + final UUID queryId = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); + /* test */ - findById_generic(QUERY_1_ID); + findById_generic(queryId); } @Test @@ -92,7 +96,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(QueryNotFoundException.class, () -> { - findById_generic(9999L); + findById_generic(UUID.randomUUID()); }); } @@ -102,13 +106,14 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { InterruptedException { /* mock */ + final UUID queryId2 = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID); when(metadataServiceGateway.getUserById(USER_1_ID)) .thenReturn(USER_1_DTO); /* test */ - persist_generic(QUERY_2_ID, List.of(IDENTIFIER_5_BRIEF_DTO), true); - final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_2_ID); - assertEquals(2L, response.getId()); + persist_generic(queryId2, List.of(IDENTIFIER_5_BRIEF_DTO), true); + final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId2); + assertEquals(queryId2, response.getId()); assertTrue(response.getIsPersisted()); } @@ -118,17 +123,18 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { InterruptedException { /* mock */ + final UUID queryId1 = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); when(metadataServiceGateway.getUserById(USER_1_ID)) .thenReturn(USER_1_DTO); /* test */ - persist_generic(QUERY_1_ID, List.of(IDENTIFIER_2_BRIEF_DTO), false); - final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID); - assertEquals(1L, response.getId()); + persist_generic(queryId1, List.of(IDENTIFIER_2_BRIEF_DTO), false); + final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId1); + assertEquals(queryId1, response.getId()); assertFalse(response.getIsPersisted()); } - protected void findById_generic(Long queryId) throws RemoteUnavailableException, SQLException, + protected void findById_generic(UUID queryId) throws RemoteUnavailableException, SQLException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { @@ -136,15 +142,14 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, QUERY_1_ID)) + when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, queryId)) .thenReturn(List.of(IDENTIFIER_2_BRIEF_DTO)); when(metadataServiceGateway.getUserById(USER_1_ID)) .thenReturn(USER_1_DTO); - MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); /* test */ final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId); - assertEquals(QUERY_1_ID, response.getId()); + assertEquals(queryId, response.getId()); } protected List<QueryDto> findAll_generic(Boolean filterPersisted) throws SQLException, QueryNotFoundException, @@ -164,7 +169,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { return queryService.findAll(DATABASE_1_PRIVILEGED_DTO, filterPersisted); } - protected void persist_generic(Long queryId, List<IdentifierBriefDto> identifiers, Boolean persist) + protected void persist_generic(UUID queryId, List<IdentifierBriefDto> identifiers, Boolean persist) throws RemoteUnavailableException, SQLException, QueryStorePersistException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { @@ -174,8 +179,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, queryId)) .thenReturn(identifiers); - MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); - MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID); /* test */ queryService.persist(DATABASE_1_PRIVILEGED_DTO, queryId, persist); diff --git a/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql b/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql index 3e7471df3e1eb3a1bb79db7246ecb805a06f495c..c5cb8d31dcee26afba046ca79cae129265baaef8 100644 --- a/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql +++ b/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql @@ -1,5 +1,5 @@ CREATE SEQUENCE `qs_queries_seq` NOCACHE; -CREATE TABLE `qs_queries` ( `id` bigint not null primary key default nextval(`qs_queries_seq`), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint ) WITH SYSTEM VERSIONING; +CREATE TABLE `qs_queries` ( `id` varchar(36) not null primary key default uuid(), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint ) WITH SYSTEM VERSIONING; CREATE PROCEDURE hash_table(IN name VARCHAR(255), OUT hash VARCHAR(255), OUT count BIGINT) BEGIN DECLARE _sql TEXT; SELECT CONCAT('SELECT SHA2(GROUP_CONCAT(CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') SEPARATOR \',\'), 256) AS hash, COUNT(*) AS count FROM `', name, '` INTO @hash, @count;') FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = name INTO _sql; PREPARE stmt FROM _sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET hash = @hash; SET count = @count; END; -CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END; -CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END; \ No newline at end of file +CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId varchar(36)) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END; +CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId varchar(36)) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END; \ No newline at end of file diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml index 3b1ea7b0e925cc60074d23407d8be6b1eba5abbb..5252e6a3d30439671d085b9ac2d6bca81bf462c0 100644 --- a/dbrepo-data-service/services/pom.xml +++ b/dbrepo-data-service/services/pom.xml @@ -6,18 +6,18 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>services</artifactId> <name>dbrepo-data-service-services</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service-querystore</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </dependency> </dependencies> diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java index c798537b5b378822a82119b2ffcb7ec4c7bf1384..6fc7e7250cad33f8d2b9f81f3e2ec95f9fa934b9 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java @@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit; public class CacheConfig { @Value("${dbrepo.credentialCacheTimeout}") - private Long credentialCacheTimeout; + private Integer credentialCacheTimeout; @Bean public Cache<UUID, UserDto> userCache() { @@ -27,28 +27,28 @@ public class CacheConfig { } @Bean - public Cache<Long, ViewDto> viewCache() { - return new ExpiryCache<Long, ViewDto>().build(); + public Cache<UUID, ViewDto> viewCache() { + return new ExpiryCache<UUID, ViewDto>().build(); } @Bean - public Cache<Long, DatabaseAccessDto> accessCache() { - return new ExpiryCache<Long, DatabaseAccessDto>().build(); + public Cache<UUID, DatabaseAccessDto> accessCache() { + return new ExpiryCache<UUID, DatabaseAccessDto>().build(); } @Bean - public Cache<Long, TableDto> tableCache() { - return new ExpiryCache<Long, TableDto>().build(); + public Cache<UUID, TableDto> tableCache() { + return new ExpiryCache<UUID, TableDto>().build(); } @Bean - public Cache<Long, DatabaseDto> databaseCache() { - return new ExpiryCache<Long, DatabaseDto>().build(); + public Cache<UUID, DatabaseDto> databaseCache() { + return new ExpiryCache<UUID, DatabaseDto>().build(); } @Bean - public Cache<Long, ContainerDto> containerCache() { - return new ExpiryCache<Long, ContainerDto>().build(); + public Cache<UUID, ContainerDto> containerCache() { + return new ExpiryCache<UUID, ContainerDto>().build(); } class ExpiryCache<K, T> { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java index f7fe2f207512791b17144cea27cedcc5f7bfd2b9..38b28ebcac140827059fa0e510d5250755eaaf37 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java @@ -24,7 +24,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, + ContainerDto getContainerById(UUID containerId) throws RemoteUnavailableException, ContainerNotFoundException, MetadataServiceException; /** @@ -36,7 +36,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + DatabaseDto getDatabaseById(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -49,7 +49,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, RemoteUnavailableException, + TableDto getTableById(UUID databaseId, UUID id) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -62,7 +62,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, ViewNotFoundException, + ViewDto getViewById(UUID databaseId, UUID id) throws RemoteUnavailableException, ViewNotFoundException, MetadataServiceException; /** @@ -86,7 +86,7 @@ public interface MetadataServiceGateway { * @throws NotAllowedException The access to this database is denied for the given user. * @throws MetadataServiceException The remote service returned invalid data. */ - DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException, NotAllowedException, + DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException, NotAllowedException, MetadataServiceException; /** @@ -99,7 +99,7 @@ public interface MetadataServiceGateway { * @throws DatabaseNotFoundException The database was not found. * @throws MetadataServiceException The remote service returned invalid data. */ - List<IdentifierBriefDto> getIdentifiers(@NotNull Long databaseId, Long subsetId) throws MetadataServiceException, + List<IdentifierBriefDto> getIdentifiers(@NotNull UUID databaseId, UUID subsetId) throws MetadataServiceException, RemoteUnavailableException, DatabaseNotFoundException; /** @@ -112,6 +112,6 @@ public interface MetadataServiceGateway { * @throws TableNotFoundException The table was not found. * @throws MetadataServiceException The remote service returned invalid data. */ - void updateTableStatistics(Long databaseId, Long tableId, String authorization) throws TableNotFoundException, + void updateTableStatistics(UUID databaseId, UUID tableId, String authorization) throws TableNotFoundException, MetadataServiceException, RemoteUnavailableException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java index 7b02192b7ed0209bae55614808e5c236d03da6ef..d90250f0287806b8c8a659268eb0c81ff1a4bd2f 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java @@ -44,11 +44,11 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, + public ContainerDto getContainerById(UUID containerId) throws RemoteUnavailableException, ContainerNotFoundException, MetadataServiceException { final ResponseEntity<ContainerDto> response; final String url = "/api/container/" + containerId; - log.debug("get container info from metadata service: {}", url); + log.debug("get container info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, ContainerDto.class); @@ -63,7 +63,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find container with id {}: service responded unsuccessful: {}", containerId, response.getStatusCode()); throw new MetadataServiceException("Failed to find container: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all container headers"); log.debug("expected headers: {}", expectedHeaders); @@ -77,16 +77,17 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final ContainerDto container = metadataMapper.containerDtoToContainerDto(response.getBody()); container.setUsername(response.getHeaders().get("X-Username").get(0)); container.setPassword(response.getHeaders().get("X-Password").get(0)); + container.getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); container.setLastRetrieved(Instant.now()); return container; } @Override - public DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + public DatabaseDto getDatabaseById(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { final ResponseEntity<DatabaseDto> response; final String url = "/api/database/" + id; - log.debug("get database info from metadata service: {}", url); + log.debug("get database info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, DatabaseDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { @@ -100,7 +101,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find database with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find database: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all database headers"); log.debug("expected headers: {}", expectedHeaders); @@ -114,16 +115,17 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final DatabaseDto database = response.getBody(); database.getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); database.getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + database.getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); database.setLastRetrieved(Instant.now()); return database; } @Override - public TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, + public TableDto getTableById(UUID databaseId, UUID id) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException { final ResponseEntity<TableDto> response; final String url = "/api/database/" + databaseId + "/table/" + id; - log.debug("get table info from metadata service: {}", url); + log.debug("get table info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, TableDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { @@ -137,7 +139,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find table with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find table: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all table headers"); log.debug("expected headers: {}", expectedHeaders); @@ -151,12 +153,13 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody()); table.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); table.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + table.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); table.setLastRetrieved(Instant.now()); return table; } @Override - public ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, + public ViewDto getViewById(UUID databaseId, UUID id) throws RemoteUnavailableException, ViewNotFoundException, MetadataServiceException { final ResponseEntity<ViewDto> response; final String url = "/api/database/" + databaseId + "/view/" + id; @@ -174,7 +177,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find view with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find view: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all view headers"); log.debug("expected headers: {}", expectedHeaders); @@ -188,6 +191,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody()); view.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); view.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + view.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); view.setLastRetrieved(Instant.now()); return view; } @@ -230,7 +234,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException, + public DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException, NotAllowedException, MetadataServiceException { final ResponseEntity<DatabaseAccessDto> response; final String url = "/api/database/" + databaseId + "/access/" + userId; @@ -256,7 +260,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public List<IdentifierBriefDto> getIdentifiers(@NotNull Long databaseId, Long subsetId) throws MetadataServiceException, + public List<IdentifierBriefDto> getIdentifiers(@NotNull UUID databaseId, UUID subsetId) throws MetadataServiceException, RemoteUnavailableException, DatabaseNotFoundException { final ResponseEntity<IdentifierBriefDto[]> response; final String url = "/api/identifier?dbid=" + databaseId + (subsetId != null ? ("&qid=" + subsetId) : ""); @@ -282,7 +286,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public void updateTableStatistics(Long databaseId, Long tableId, String authorization) throws TableNotFoundException, + public void updateTableStatistics(UUID databaseId, UUID tableId, String authorization) throws TableNotFoundException, MetadataServiceException, RemoteUnavailableException { final ResponseEntity<Void> response; final String url = "/api/database/" + databaseId + "/table/" + tableId + "/statistic"; diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java b/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java index d2a66ab548d44192638801189f0bd36294f6c321..336a48311739f15ec95c3546ebbeaee4130a8cde 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; +import java.util.UUID; @Log4j2 @Component @@ -53,8 +54,8 @@ public class DefaultListener implements MessageListener { log.error("Failed to map database and table names from routing key: is not 3-part"); return; } - final Long databaseId = Long.parseLong(parts[1]); - final Long tableId = Long.parseLong(parts[2]); + final UUID databaseId = UUID.fromString(parts[1]); + final UUID tableId = UUID.fromString(parts[2]); log.trace("received message for table with id {} of database id {}: {} bytes", tableId, databaseId, message.getMessageProperties().getContentLength()); final Map<String, Object> body; try { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java index 3fedaedc66dd7864258fb7593efa02328df42df7..65cf82bfcb10004cdb677577b09461f5b6e10923 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java @@ -17,7 +17,6 @@ import at.tuwien.api.database.table.constraints.foreign.ReferenceTypeDto; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; import at.tuwien.api.user.UserBriefDto; -import at.tuwien.config.QueryConfig; import at.tuwien.exception.TableNotFoundException; import org.apache.hadoop.shaded.com.google.common.hash.Hashing; import org.apache.hadoop.shaded.org.apache.commons.io.FileUtils; @@ -171,7 +170,7 @@ public interface DataMapper { return table; } - default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view, QueryConfig queryConfig) throws SQLException { + default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view) throws SQLException { final ViewColumnDto column = ViewColumnDto.builder() .ordinalPosition(resultSet.getInt(1) - 1) /* start at zero */ .isNullAllowed(resultSet.getString(3).equals("YES")) @@ -191,14 +190,13 @@ public interface DataMapper { } view.getColumns() .add(column); - log.trace("parsed view column: {}.{}", view.getInternalName(), column.getInternalName()); return view; } default QueryDto resultSetToQueryDto(@NotNull ResultSet data) throws SQLException { /* note that next() is called outside this mapping function */ final QueryDto subset = QueryDto.builder() - .id(data.getLong(1)) + .id(UUID.fromString(data.getString(1))) .query(data.getString(4)) .queryHash(data.getString(5)) .resultHash(data.getString(6)) diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java index 8be9ef68e3dff7246a061664d10273eee95d24f0..4e48c02786ba60cfed541c80048e921fc39d6b61 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java @@ -112,14 +112,8 @@ public interface MariaDbMapper { return statement.toString(); } - default String queryStoreCreateSequenceRawQuery() { - final String statement = "CREATE SEQUENCE `qs_queries_seq` NOCACHE;"; - log.trace("mapped create query store sequence statement: {}", statement); - return statement; - } - default String queryStoreCreateTableRawQuery() { - final String statement = "CREATE TABLE `qs_queries` ( `id` bigint not null primary key default nextval(`qs_queries_seq`), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint) WITH SYSTEM VERSIONING;"; + final String statement = "CREATE TABLE `qs_queries` ( `id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT UUID(), `created` datetime NOT NULL DEFAULT NOW(), `executed` datetime NOT NULL default now(), `created_by` VARCHAR(36), `query` text NOT NULL, `query_normalized` text NOT NULL, `is_persisted` boolean NOT NULL, `query_hash` VARCHAR(255) NOT NULL, `result_hash` VARCHAR(255), `result_number` bigint) WITH SYSTEM VERSIONING;"; log.trace("mapped create query store table statement: {}", statement); return statement; } @@ -131,13 +125,13 @@ public interface MariaDbMapper { } default String queryStoreCreateStoreQueryProcedureRawQuery() { - final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; + final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _username VARCHAR(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; log.trace("mapped create query store store_query procedure statement: {}", statement); return statement; } default String queryStoreCreateInternalStoreQueryProcedureRawQuery() { - final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; + final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; log.trace("mapped create query store _store_query procedure statement: {}", statement); return statement; } @@ -307,7 +301,7 @@ public interface MariaDbMapper { final StringBuilder stringBuilder = new StringBuilder("CREATE TABLE `") .append(nameToInternalName(data.getName())) .append("` ("); - log.trace("primary key column(s) exist: {}", data.getConstraints().getPrimaryKey()); + log.trace("PRIMARY KEY column(s) exist: {}", data.getConstraints().getPrimaryKey()); final int[] idx = {0}; for (CreateTableColumnDto column : data.getColumns()) { stringBuilder.append(idx[0]++ > 0 ? ", " : "") @@ -326,11 +320,11 @@ public interface MariaDbMapper { } } - /* create primary key index */ + /* create PRIMARY KEY index */ if (data.getConstraints() != null) { log.trace("constraints are {}", data.getConstraints()); if (data.getConstraints().getPrimaryKey() != null && !data.getConstraints().getPrimaryKey().isEmpty()) { - /* create primary key index */ + /* create PRIMARY KEY index */ stringBuilder.append(", PRIMARY KEY (") .append(String.join(",", data.getConstraints() .getPrimaryKey() diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java index 116737e2ed01bbcfb890174881d9abb14f5e1614..803116e6029f0e540519832dbb4865f9964957d8 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java @@ -18,6 +18,8 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import java.util.UUID; + @Mapper(componentModel = "spring", imports = {DatabaseDto.class, ContainerDto.class, ImageDto.class}) public interface MetadataMapper { @@ -52,7 +54,7 @@ public interface MetadataMapper { IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data); - default String metricToUri(String baseUrl, Long databaseId, Long tableId, Long subsetId, Long viewId) { + default String metricToUri(String baseUrl, UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) { final StringBuilder uri = new StringBuilder(baseUrl) .append("/database/") .append(databaseId); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java index fe3df343dba29ca489a8559e1cc741b7cc03359c..543e84ab51d03fa3c4c2a9992ce84700219efc01 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java @@ -22,7 +22,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - DatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + DatabaseDto getDatabase(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -35,7 +35,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - ContainerDto getContainer(Long id) throws ContainerNotFoundException, RemoteUnavailableException, + ContainerDto getContainer(UUID id) throws ContainerNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -49,7 +49,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - TableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException, + TableDto getTable(UUID databaseId, UUID tableId) throws RemoteUnavailableException, MetadataServiceException, TableNotFoundException; /** @@ -63,7 +63,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, + ViewDto getView(UUID databaseId, UUID viewId) throws RemoteUnavailableException, MetadataServiceException, ViewNotFoundException; /** @@ -90,7 +90,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException, + DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException, MetadataServiceException, NotAllowedException; /** @@ -98,5 +98,5 @@ public interface CredentialService { * * @param databaseId The database id. */ - void invalidateAccess(Long databaseId); + void invalidateAccess(UUID databaseId); } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java index 131bae7287292192931ea09e70cc8709512c9029..2beed4b773fea686aa3b9262e063acca82863667 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java @@ -1,10 +1,12 @@ package at.tuwien.service; +import java.util.UUID; + public interface MetricsService { - void countTableGetData(Long databaseId, Long tableId); + void countTableGetData(UUID databaseId, UUID tableId); - void countSubsetGetData(Long databaseId, Long subsetId); + void countSubsetGetData(UUID databaseId, UUID subsetId); - void countViewGetData(Long databaseId, Long viewId); + void countViewGetData(UUID databaseId, UUID viewId); } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java index e2fc56002799d26e75fc05ca496cb76d330cdb07..49bd560c7a6a247461a273815e6b9ed0913f1d5f 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java @@ -1,6 +1,5 @@ package at.tuwien.service; -import at.tuwien.api.SortTypeDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.exception.*; @@ -25,7 +24,7 @@ public interface SubsetService { * @throws QueryStoreInsertException The query store refused to insert the query. * @throws SQLException The connection to the database could not be established. */ - Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId) + UUID create(DatabaseDto database, String statement, Instant timestamp, UUID userId) throws QueryStoreInsertException, SQLException; /** @@ -45,15 +44,11 @@ public interface SubsetService { * * @param database The database. * @param query The query statements. - * @param page The page number. - * @param size Te result size. * @return The data. * @throws QueryMalformedException The mapped query produced a database error. * @throws TableNotFoundException The database table is malformed. */ - Dataset<Row> getData(DatabaseDto database, String query, Instant timestamp, Long page, Long size, - SortTypeDto sortDirection, String sortColumn) throws QueryMalformedException, - TableNotFoundException; + Dataset<Row> getData(DatabaseDto database, String query) throws QueryMalformedException, TableNotFoundException; /** * Finds all queries in the query store of the given database id and query id. @@ -97,7 +92,7 @@ public interface SubsetService { * @throws DatabaseNotFoundException The database metadata was not found in the Metadata Service. * @throws MetadataServiceException Communication with the Metadata Service failed. */ - QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, + QueryDto findById(DatabaseDto database, UUID queryId) throws QueryNotFoundException, SQLException, RemoteUnavailableException, UserNotFoundException, DatabaseNotFoundException, MetadataServiceException; /** @@ -110,7 +105,7 @@ public interface SubsetService { * @throws SQLException The connection to the database could not be established. * @throws QueryStoreInsertException The query store failed to insert the query. */ - Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, + UUID storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, QueryStoreInsertException; /** @@ -122,7 +117,7 @@ public interface SubsetService { * @throws SQLException The connection to the database could not be established. * @throws QueryStorePersistException The query store failed to persist/unpersist the query. */ - void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException, + void persist(DatabaseDto database, UUID queryId, Boolean persist) throws SQLException, QueryStorePersistException; /** diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java index aedba1aed2902b35b424832d117e200dcc02aca9..9e35574d8ddb1eb21b9fd566d009abceecf49043 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java @@ -71,10 +71,6 @@ public class ContainerServiceMariaDbImpl extends DataConnector implements Contai try { /* create query store */ long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.queryStoreCreateSequenceRawQuery()) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - start = System.currentTimeMillis(); connection.prepareStatement(mariaDbMapper.queryStoreCreateTableRawQuery()) .execute(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java index fbc800bf4719bee556dc597ad593de93b8e9e0be..8f3553515f386afcc91627a0cecd11a05d263f27 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java @@ -22,29 +22,28 @@ public class CredentialServiceImpl implements CredentialService { private final MetadataServiceGateway gateway; private final Cache<UUID, UserDto> userCache; - private final Cache<Long, ViewDto> viewCache; - private final Cache<Long, DatabaseAccessDto> accessCache; - private final Cache<Long, TableDto> tableCache; - private final Cache<Long, DatabaseDto> databaseCache; - private final Cache<Long, ContainerDto> containerCache; + private final Cache<UUID, ViewDto> viewCache; + private final Cache<UUID, TableDto> tableCache; + private final Cache<UUID, DatabaseDto> databaseCache; + private final Cache<UUID, ContainerDto> containerCache; + private final Cache<UUID, DatabaseAccessDto> accessCache; @Autowired public CredentialServiceImpl(MetadataServiceGateway gateway, Cache<UUID, UserDto> userCache, - Cache<Long, ViewDto> viewCache, Cache<Long, DatabaseAccessDto> accessCache, - Cache<Long, TableDto> tableCache, - Cache<Long, DatabaseDto> databaseCache, - Cache<Long, ContainerDto> containerCache) { + Cache<UUID, ViewDto> viewCache, Cache<UUID, TableDto> tableCache, + Cache<UUID, DatabaseAccessDto> accessCache, Cache<UUID, DatabaseDto> databaseCache, + Cache<UUID, ContainerDto> containerCache) { this.gateway = gateway; this.userCache = userCache; this.viewCache = viewCache; - this.accessCache = accessCache; this.tableCache = tableCache; + this.accessCache = accessCache; this.databaseCache = databaseCache; this.containerCache = containerCache; } @Override - public DatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + public DatabaseDto getDatabase(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { final DatabaseDto cacheDatabase = databaseCache.getIfPresent(id); if (cacheDatabase != null) { @@ -58,7 +57,7 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public TableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException, + public TableDto getTable(UUID databaseId, UUID tableId) throws RemoteUnavailableException, MetadataServiceException, TableNotFoundException { final TableDto cacheTable = tableCache.getIfPresent(tableId); if (cacheTable != null) { @@ -72,13 +71,13 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public void invalidateAccess(Long databaseId) { + public void invalidateAccess(UUID databaseId) { accessCache.invalidate(databaseId); log.debug("invalidated access for database with id {} in cache", databaseId); } @Override - public ContainerDto getContainer(Long id) throws RemoteUnavailableException, MetadataServiceException, + public ContainerDto getContainer(UUID id) throws RemoteUnavailableException, MetadataServiceException, ContainerNotFoundException { final ContainerDto cacheContainer = containerCache.getIfPresent(id); if (cacheContainer != null) { @@ -92,7 +91,7 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, + public ViewDto getView(UUID databaseId, UUID viewId) throws RemoteUnavailableException, MetadataServiceException, ViewNotFoundException { final ViewDto cacheView = viewCache.getIfPresent(viewId); if (cacheView != null) { @@ -120,7 +119,7 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException, + public DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException, MetadataServiceException, NotAllowedException { final DatabaseAccessDto cacheAccess = accessCache.getIfPresent(databaseId); if (cacheAccess != null) { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java index 4d899c99782f99813c3618dd4c051a2a2a0f2da8..f7e12c69f6d2937850d0e2d9a2973b1e6e7dadf2 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java @@ -7,7 +7,6 @@ import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; -import at.tuwien.config.QueryConfig; import at.tuwien.exception.*; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; @@ -32,15 +31,13 @@ import java.util.List; public class DatabaseServiceMariaDbImpl extends DataConnector implements DatabaseService { private final DataMapper dataMapper; - private final QueryConfig queryConfig; private final MariaDbMapper mariaDbMapper; private final MetadataMapper metadataMapper; @Autowired - public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, MariaDbMapper mariaDbMapper, + public DatabaseServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper) { this.dataMapper = dataMapper; - this.queryConfig = queryConfig; this.mariaDbMapper = mariaDbMapper; this.metadataMapper = metadataMapper; } @@ -151,7 +148,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas statement2.setString(2, view.getInternalName()); final ResultSet resultSet2 = statement2.executeQuery(); while (resultSet2.next()) { - view = dataMapper.resultSetToTable(resultSet2, view, queryConfig); + view = dataMapper.resultSetToTable(resultSet2, view); } connection.commit(); } catch (SQLException e) { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java index 73754c9f5f2183d24f2576548b57a3f8a672b7a7..0b49804c31a8b486ccbc3878220776726909bea2 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java @@ -8,6 +8,8 @@ import io.micrometer.core.instrument.Metrics; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; +import java.util.UUID; + @Log4j2 @Service public class MetricsServicePrometheusImpl implements MetricsService { @@ -21,21 +23,21 @@ public class MetricsServicePrometheusImpl implements MetricsService { } @Override - public void countTableGetData(Long databaseId, Long tableId) { + public void countTableGetData(UUID databaseId, UUID tableId) { countGetData(databaseId, tableId, null, null); } @Override - public void countSubsetGetData(Long databaseId, Long subsetId) { + public void countSubsetGetData(UUID databaseId, UUID subsetId) { countGetData(databaseId, null, subsetId, null); } @Override - public void countViewGetData(Long databaseId, Long viewId) { + public void countViewGetData(UUID databaseId, UUID viewId) { countGetData(databaseId, null, null, viewId); } - public void countGetData(Long databaseId, Long tableId, Long subsetId, Long viewId) { + public void countGetData(UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) { Counter.builder("dbrepo.datasource.data.get") .tag("uri", metadataMapper.metricToUri(metricsConfig.getBaseUrl(), databaseId, tableId, subsetId, viewId)) .tag("protocol", "http") diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java index bdfdb14838a608ce87b40a94faebe52a27546a63..8adaae9c6a065296fd42ea66e5cad8328cc6e06a 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java @@ -1,6 +1,5 @@ package at.tuwien.service.impl; -import at.tuwien.api.SortTypeDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.IdentifierBriefDto; @@ -44,9 +43,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } @Override - public Dataset<Row> getData(DatabaseDto database, String query, Instant timestamp, Long page, Long size, - SortTypeDto sortDirection, String sortColumn) - throws QueryMalformedException, TableNotFoundException { + public Dataset<Row> getData(DatabaseDto database, String query) throws QueryMalformedException, TableNotFoundException { try { return sparkSession.read() .format("jdbc") @@ -68,7 +65,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } @Override - public Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId) + public UUID create(DatabaseDto database, String statement, Instant timestamp, UUID userId) throws QueryStoreInsertException, SQLException { return storeQuery(database, statement, timestamp, userId); } @@ -133,14 +130,14 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } @Override - public QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, + public QueryDto findById(DatabaseDto database, UUID queryId) throws QueryNotFoundException, SQLException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException { final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { final long start = System.currentTimeMillis(); final PreparedStatement preparedStatement = connection.prepareStatement(mariaDbMapper.queryStoreFindQueryRawQuery()); - preparedStatement.setLong(1, queryId); + preparedStatement.setString(1, String.valueOf(queryId)); final ResultSet resultSet = preparedStatement.executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); if (!resultSet.next()) { @@ -160,10 +157,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } @Override - public Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, + public UUID storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, QueryStoreInsertException { /* save */ - final Long queryId; + final UUID queryId; final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { @@ -177,10 +174,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } callableStatement.setString(2, query); callableStatement.setTimestamp(3, Timestamp.from(timestamp)); - callableStatement.registerOutParameter(4, Types.BIGINT); + callableStatement.registerOutParameter(4, Types.VARCHAR); callableStatement.executeUpdate(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - queryId = callableStatement.getLong(4); + queryId = UUID.fromString(callableStatement.getString(4)); callableStatement.close(); log.info("Stored query with id {} in database with name {}", queryId, database.getInternalName()); connection.commit(); @@ -195,7 +192,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } @Override - public void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException, + public void persist(DatabaseDto database, UUID queryId, Boolean persist) throws SQLException, QueryStorePersistException { final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); @@ -204,7 +201,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer final long start = System.currentTimeMillis(); final PreparedStatement preparedStatement = connection.prepareStatement(mariaDbMapper.queryStoreUpdateQueryRawQuery()); preparedStatement.setBoolean(1, persist); - preparedStatement.setLong(2, queryId); + preparedStatement.setString(2, String.valueOf(queryId)); preparedStatement.executeUpdate(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); } catch (SQLException e) { diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index 60348a8197261ce82e73cdf8b81553ba6a4ffdac..94109cf9cc991f81643a6af439d5a177bda67c77 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -52,7 +52,7 @@ server { listen 8080 default_server; server_name _; - location /dashboard/ { + location /dashboard { rewrite ^/dashboard/(.*) /$1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -63,7 +63,7 @@ server { } # Proxy Grafana Live WebSocket connections. - location /dashboard/api/live/ { + location /dashboard/api/live { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -129,7 +129,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export) { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/table/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|history|export)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -138,7 +138,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/view/([0-9]+)/(data|export) { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|export)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -147,7 +147,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/view { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -156,7 +156,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/subset { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/subset" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -165,7 +165,7 @@ server { proxy_read_timeout 600; } - location ~ /api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user) { + location ~ "/api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -174,7 +174,7 @@ server { proxy_read_timeout 90; } - location ~ /pid/([0-9]+) { + location ~ "/pid/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})" { rewrite /pid/(.*) /api/identifier/$1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index 99f5fe2c3b9da1cd57d30d64a16cdbd54073d7dd..b9055cf884bdb3d310310c52a17471504cdc6fac 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -2,390 +2,341 @@ BEGIN; CREATE TABLE IF NOT EXISTS `mdb_users` ( - id character varying(36) NOT NULL, - keycloak_id character varying(36) NOT NULL, - username character varying(255) NOT NULL, - firstname character varying(255), - lastname character varying(255), - orcid character varying(255), - affiliation character varying(255), - is_internal BOOLEAN NOT NULL DEFAULT FALSE, - mariadb_password character varying(255) NOT NULL, - theme character varying(255) NOT NULL default ('light'), - language character varying(3) NOT NULL default ('en'), - PRIMARY KEY (id), - UNIQUE (keycloak_id), - UNIQUE (username) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + keycloak_id VARCHAR(36) NOT NULL, + username VARCHAR(255) NOT NULL, + firstname VARCHAR(255), + lastname VARCHAR(255), + orcid VARCHAR(255), + affiliation VARCHAR(255), + is_internal BOOLEAN NOT NULL DEFAULT FALSE, + mariadb_password VARCHAR(255) NOT NULL, + theme VARCHAR(255) NOT NULL DEFAULT ('light'), + language VARCHAR(3) NOT NULL DEFAULT ('en'), + PRIMARY KEY (`id`), + UNIQUE (`keycloak_id`), + UNIQUE (`username`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_images` ( - id SERIAL, - registry character varying(255) NOT NULL DEFAULT 'docker.io', - name character varying(255) NOT NULL, - version character varying(255) NOT NULL, - default_port integer NOT NULL, - dialect character varying(255) NOT NULL, - driver_class character varying(255) NOT NULL, - jdbc_method character varying(255) NOT NULL, - is_default BOOLEAN NOT NULL DEFAULT FALSE, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - PRIMARY KEY (id), - UNIQUE (name, version), - UNIQUE (is_default) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + registry VARCHAR(255) NOT NULL DEFAULT 'docker.io', + name VARCHAR(255) NOT NULL, + version VARCHAR(255) NOT NULL, + DEFAULT_port INT NOT NULL, + dialect VARCHAR(255) NOT NULL, + driver_class VARCHAR(255) NOT NULL, + jdbc_method VARCHAR(255) NOT NULL, + is_DEFAULT BOOLEAN NOT NULL DEFAULT FALSE, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE (`name`, `version`), + UNIQUE (`is_DEFAULT`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_containers` ( - id SERIAL, - internal_name character varying(255) NOT NULL, - name character varying(255) NOT NULL, - host character varying(255) NOT NULL, - port integer NOT NULL default 3306, - ui_host character varying(255) NOT NULL default host, - ui_port integer NOT NULL default port, - ui_additional_flags text, - sidecar_host character varying(255), - sidecar_port integer, - image_id bigint NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - privileged_username character varying(255) NOT NULL, - privileged_password character varying(255) NOT NULL, - quota integer NOT NULL DEFAULT 50, - PRIMARY KEY (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_data` -( - ID SERIAL, - PROVENANCE text, - FileEncoding text, - FileType character varying(100), - Version text, - Seperator text, - PRIMARY KEY (ID) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + internal_name VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL, + host VARCHAR(255) NOT NULL, + port INT NOT NULL DEFAULT 3306, + ui_host VARCHAR(255) NOT NULL DEFAULT host, + ui_port INT NOT NULL DEFAULT port, + ui_additional_flags TEXT, + image_id VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + privileged_username VARCHAR(255) NOT NULL, + privileged_password VARCHAR(255) NOT NULL, + quota INT, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES mdb_images (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_licenses` ( - identifier character varying(255) NOT NULL, - uri text NOT NULL, - description text NOT NULL, - PRIMARY KEY (identifier), + identifier VARCHAR(255) NOT NULL, + uri TEXT NOT NULL, + description TEXT NOT NULL, + PRIMARY KEY (`identifier`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_databases` ( - id SERIAL, - cid BIGINT UNSIGNED NOT NULL, - name character varying(255) NOT NULL, - internal_name character varying(255) NOT NULL, - exchange_name character varying(255) NOT NULL, - description text, - engine character varying(20), - is_public boolean NOT NULL DEFAULT TRUE, - is_schema_public boolean NOT NULL DEFAULT TRUE, - image longblob, - owned_by character varying(36), - contact_person character varying(36), - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - PRIMARY KEY (id), - FOREIGN KEY (cid) REFERENCES mdb_containers (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id), - FOREIGN KEY (contact_person) REFERENCES mdb_users (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_databases_subjects` -( - dbid BIGINT NOT NULL, - subjects character varying(255) NOT NULL, - PRIMARY KEY (dbid, subjects) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cid VARCHAR(36) NOT NULL, + name VARCHAR(255) NOT NULL, + internal_name VARCHAR(255) NOT NULL, + exchange_name VARCHAR(255) NOT NULL, + description TEXT, + engine VARCHAR(20), + is_public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + image LONGBLOB, + owned_by VARCHAR(36) NOT NULL, + contact_person VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + PRIMARY KEY (`id`), + FOREIGN KEY (`cid`) REFERENCES mdb_containers (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`), + FOREIGN KEY (`contact_person`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_tables` ( - ID SERIAL, - tDBID BIGINT UNSIGNED NOT NULL, - tName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - queue_name VARCHAR(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tDBID VARCHAR(36) NOT NULL, + tName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + queue_name VARCHAR(255) NOT NULL, routing_key VARCHAR(255), tDescription VARCHAR(2048), num_rows BIGINT, data_length BIGINT, max_data_length BIGINT, avg_row_length BIGINT, - `separator` CHAR(1), - quote CHAR(1), - element_null VARCHAR(50), - skip_lines BIGINT, - element_true VARCHAR(50), - element_false VARCHAR(50), - Version TEXT, - created timestamp NOT NULL DEFAULT NOW(), - versioned boolean not null default true, - is_public boolean not null default true, - is_schema_public boolean not null default true, - owned_by character varying(36) NOT NULL, - last_modified timestamp, - PRIMARY KEY (ID), - UNIQUE (tDBID, internal_name), - FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + created TIMESTAMP NOT NULL DEFAULT NOW(), + versioned BOOLEAN NOT NULL DEFAULT TRUE, + is_public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + owned_by VARCHAR(36) NOT NULL DEFAULT UUID(), + last_modified TIMESTAMP, + PRIMARY KEY (`ID`), + UNIQUE (`tDBID`, `internal_name`), + FOREIGN KEY (`tDBID`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns` ( - ID SERIAL, - tID BIGINT UNSIGNED NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, cName VARCHAR(64), internal_name VARCHAR(64) NOT NULL, Datatype ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','SERIAL','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), length BIGINT UNSIGNED NULL, - ordinal_position INTEGER NOT NULL, + ordinal_position INT NOT NULL, index_length BIGINT UNSIGNED NULL, description VARCHAR(2048), size BIGINT UNSIGNED, d BIGINT UNSIGNED, - is_null_allowed BOOLEAN NOT NULL DEFAULT true, + is_null_allowed BOOLEAN NOT NULL DEFAULT TRUE, val_min NUMERIC NULL, val_max NUMERIC NULL, mean NUMERIC NULL, median NUMERIC NULL, std_dev Numeric NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE, - PRIMARY KEY (ID), - UNIQUE (tID, internal_name) + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`ID`), + UNIQUE (`tID`, `internal_name`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_enums` ( - id SERIAL, - column_id BIGINT UNSIGNED NOT NULL, - value CHARACTER VARYING(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, + value VARCHAR(255) NOT NULL, + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_sets` ( - id SERIAL, - column_id BIGINT UNSIGNED NOT NULL, - value CHARACTER VARYING(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_columns_nom` -( - cID BIGINT UNSIGNED, - tID BIGINT UNSIGNED, - maxlength INTEGER, - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_columns_cat` -( - cID BIGINT UNSIGNED, - tID BIGINT UNSIGNED, - num_cat INTEGER, - -- cat_array TEXT[], - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, + value VARCHAR(255) NOT NULL, + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key` ( - fkid SERIAL, - tid BIGINT UNSIGNED NOT NULL, - rtid BIGINT UNSIGNED NOT NULL, - name VARCHAR(255) NOT NULL, - on_update VARCHAR(50) NULL, - on_delete VARCHAR(50) NULL, - position INT NULL, - PRIMARY KEY (fkid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (rtid) REFERENCES mdb_tables (id) + fkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, + rtid VARCHAR(36) NOT NULL, + name VARCHAR(255) NOT NULL, + on_update VARCHAR(50) NULL, + on_delete VARCHAR(50) NULL, + position INT NULL, + PRIMARY KEY (`fkid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`rtid`) REFERENCES mdb_tables (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key` ( - pkid SERIAL, - tID BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (pkid), - FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + pkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`pkid`), + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference` ( - id SERIAL, - fkid BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - rcid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (id), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + fkid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + rcid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), UNIQUE (fkid, cid, rcid), - FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id), - FOREIGN KEY (rcid) REFERENCES mdb_columns (id) + FOREIGN KEY (`fkid`) REFERENCES mdb_constraints_foreign_key (`fkid`) ON UPDATE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`), + FOREIGN KEY (`rcid`) REFERENCES mdb_columns (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_unique` ( - uid SERIAL, - name VARCHAR(255) NOT NULL, - tid BIGINT UNSIGNED NOT NULL, - position INT NULL, - PRIMARY KEY (uid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + uid VARCHAR(36) NOT NULL DEFAULT UUID(), + name VARCHAR(255) NOT NULL, + tid VARCHAR(36) NOT NULL, + position INT NULL, + PRIMARY KEY (`uid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns` ( - id SERIAL, - uid BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid), - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`uid`) REFERENCES mdb_constraints_unique (`uid`), + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_checks` ( - id SERIAL, - tid BIGINT UNSIGNED NOT NULL, - checks VARCHAR(255) NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, + checks VARCHAR(255) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_concepts` ( - id SERIAL, - uri text not null, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_units` ( - id SERIAL, - uri text not null, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_concepts` ( - id BIGINT UNSIGNED NOT NULL, - cID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cid), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_units` ( - id BIGINT UNSIGNED NOT NULL, - cID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view` ( - id SERIAL, - vdbid BIGINT UNSIGNED NOT NULL, - vName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - Query TEXT NOT NULL, - query_hash VARCHAR(255) NOT NULL, - Public BOOLEAN NOT NULL DEFAULT TRUE, - is_schema_public boolean NOT NULL DEFAULT TRUE, - InitialView BOOLEAN NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - owned_by character varying(36) NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_banner_messages` -( - id SERIAL, - type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL default 'INFO', + id VARCHAR(36) NOT NULL DEFAULT UUID(), + vdbid VARCHAR(36) NOT NULL, + vName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + Query TEXT NOT NULL, + query_hash VARCHAR(255) NOT NULL, + Public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + InitialView BOOLEAN NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + owned_by VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`vdbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_messages` +( + id VARCHAR(36) NOT NULL DEFAULT UUID(), + type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL DEFAULT 'INFO', message TEXT NOT NULL, link TEXT NULL, - link_text VARCHAR(255) NULL, - display_start timestamp NULL, - display_end timestamp NULL, - PRIMARY KEY (id) + link_TEXT VARCHAR(255) NULL, + display_start TIMESTAMP NULL, + display_end TIMESTAMP NULL, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_ontologies` ( - id SERIAL, - prefix VARCHAR(8) NOT NULL, - uri TEXT NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + prefix VARCHAR(8) NOT NULL, + uri TEXT NOT NULL, uri_pattern TEXT, - sparql_endpoint TEXT NULL, - rdf_path TEXT NULL, - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - UNIQUE (prefix), + sparql_endpoint TEXT NULL, + rdf_path TEXT NULL, + last_modified TIMESTAMP, + created TIMESTAMP NOT NULL DEFAULT NOW(), + UNIQUE (`prefix`), UNIQUE (uri(200)), - PRIMARY KEY (id) + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view_columns` ( - id SERIAL, - view_id BIGINT UNSIGNED NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + view_id VARCHAR(36) NOT NULL, name VARCHAR(64), - internal_name VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, column_type ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), - ordinal_position INTEGER NOT NULL, + ordinal_position INT NOT NULL, size BIGINT UNSIGNED, d BIGINT UNSIGNED, - is_null_allowed BOOLEAN NOT NULL DEFAULT true, - PRIMARY KEY (id), - FOREIGN KEY (view_id) REFERENCES mdb_view (id) ON DELETE CASCADE, + is_null_allowed BOOLEAN NOT NULL DEFAULT TRUE, + PRIMARY KEY (`id`), + FOREIGN KEY (`view_id`) REFERENCES mdb_view (`id`) ON DELETE CASCADE, UNIQUE (view_id, internal_name) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifiers` ( - id SERIAL, - dbid BIGINT UNSIGNED NOT NULL, - qid BIGINT UNSIGNED, - vid BIGINT UNSIGNED, - tid BIGINT UNSIGNED, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + dbid VARCHAR(36) NOT NULL, + qid VARCHAR(36) NOT NULL, + vid VARCHAR(36) NOT NULL, + tid VARCHAR(36) NOT NULL, publisher VARCHAR(255) NOT NULL, language VARCHAR(2), - publication_year INTEGER NOT NULL, - publication_month INTEGER, - publication_day INTEGER, + publication_year INT NOT NULL, + publication_month INT, + publication_day INT, identifier_type ENUM ('DATABASE', 'SUBSET', 'VIEW', 'TABLE') NOT NULL, status ENUM ('DRAFT', 'PUBLISHED') NOT NULL DEFAULT ('PUBLISHED'), query TEXT, @@ -398,153 +349,146 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers` created TIMESTAMP NOT NULL DEFAULT NOW(), owned_by VARCHAR(36) NOT NULL, last_modified TIMESTAMP, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (dbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`dbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses` ( - pid BIGINT UNSIGNED NOT NULL, - license_id VARCHAR(255) NOT NULL, + pid VARCHAR(36) NOT NULL DEFAULT UUID(), + license_id VARCHAR(255) NOT NULL, PRIMARY KEY (pid, license_id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), - FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier) + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), + FOREIGN KEY (`license_id`) REFERENCES mdb_licenses (`identifier`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_titles` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - title text NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + title TEXT NOT NULL, title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_funders` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - funder_name VARCHAR(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + funder_name VARCHAR(255) NOT NULL, funder_identifier TEXT, funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'), - scheme_uri text, + scheme_uri TEXT, award_number VARCHAR(255), - award_title text, + award_title TEXT, language VARCHAR(255), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - description text NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + description TEXT NOT NULL, description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; -CREATE TABLE IF NOT EXISTS `mdb_related_identifiers` +CREATE TABLE IF NOT EXISTS `mdb_identifier_related` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - value varchar(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL DEFAULT UUID(), + value VARCHAR(255) NOT NULL, type ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID') NOT NULL, relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), UNIQUE (pid, value) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_creators` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - given_names text, - family_name text, - creator_name VARCHAR(255) NOT NULL, - name_type ENUM ('PERSONAL', 'ORGANIZATIONAL') default 'PERSONAL', - name_identifier text, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + given_names TEXT, + family_name TEXT, + creator_name VARCHAR(255) NOT NULL, + name_type ENUM ('PERSONAL', 'ORGANIZATIONAL') DEFAULT 'PERSONAL', + name_identifier TEXT, name_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI', 'ORCID'), - name_identifier_scheme_uri text, + name_identifier_scheme_uri TEXT, affiliation VARCHAR(255), - affiliation_identifier text, + affiliation_identifier TEXT, affiliation_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI'), - affiliation_identifier_scheme_uri text, - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_update` -( - uUserID character varying(255) NOT NULL, - uDBID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (uUserID, uDBID), - FOREIGN KEY (uDBID) REFERENCES mdb_databases (id) + affiliation_identifier_scheme_uri TEXT, + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_access` ( - aUserID character varying(255) NOT NULL, - aDBID BIGINT UNSIGNED REFERENCES mdb_databases (id), + aUserID VARCHAR(255) NOT NULL, + aDBID VARCHAR(36) NOT NULL, attime TIMESTAMP, download BOOLEAN, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (aUserID, aDBID) + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (aUserID, aDBID), + FOREIGN KEY (`aDBID`) REFERENCES mdb_databases (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_have_access` ( - user_id character varying(36) NOT NULL, - database_id BIGINT UNSIGNED REFERENCES mdb_databases (id), + user_id VARCHAR(36) NOT NULL, + database_id VARCHAR(36) NOT NULL, access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (user_id, database_id), - FOREIGN KEY (user_id) REFERENCES mdb_users (id) + FOREIGN KEY (`database_id`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`user_id`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_types` ( - id SERIAL, - image_id BIGINT UNSIGNED NOT NULL, - display_name varchar(255) NOT NULL, - value varchar(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, + display_name VARCHAR(255) NOT NULL, + value VARCHAR(255) NOT NULL, size_min INT UNSIGNED, size_max INT UNSIGNED, - size_default INT UNSIGNED, - size_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no size', + size_DEFAULT INT UNSIGNED, + size_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no size', size_step INT UNSIGNED, d_min INT UNSIGNED, d_max INT UNSIGNED, - d_default INT UNSIGNED, - d_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no d', + d_DEFAULT INT UNSIGNED, + d_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no d', d_step INT UNSIGNED, type_hint TEXT, data_hint TEXT, - documentation TEXT NOT NULL, - is_generated BOOLEAN NOT NULL, - is_quoted BOOLEAN NOT NULL, - is_buildable BOOLEAN NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), - UNIQUE (value) + documentation TEXT NOT NULL, + is_generated BOOLEAN NOT NULL, + is_quoted BOOLEAN NOT NULL, + is_buildable BOOLEAN NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), + UNIQUE (`value`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_operators` ( - id SERIAL, - image_id BIGINT UNSIGNED NOT NULL, - display_name varchar(255) NOT NULL, - value varchar(255) NOT NULL, - documentation TEXT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, + display_name VARCHAR(255) NOT NULL, + value VARCHAR(255) NOT NULL, + documentation TEXT NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), UNIQUE (image_id, value) ) WITH SYSTEM VERSIONING; @@ -558,110 +502,121 @@ VALUES ('CC0-1.0', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode' ('CC-BY-4.0', 'https://creativecommons.org/licenses/by/4.0/legalcode', 'The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.'); -INSERT INTO `mdb_images` (name, registry, version, default_port, dialect, driver_class, jdbc_method) -VALUES ('mariadb', 'docker.io', '11.1.3', 3306, 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', - 'mariadb'); +INSERT INTO `mdb_images` (id, name, registry, version, DEFAULT_port, dialect, driver_class, jdbc_method) +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'mariadb', 'docker.io', '11.1.3', 3306, + 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', 'mariadb'); -INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_default, size_required, - size_step, d_min, d_max, d_default, d_required, d_step, type_hint, data_hint, +INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_DEFAULT, size_required, + size_step, d_min, d_max, d_DEFAULT, d_required, d_step, type_hint, data_hint, documentation, is_quoted, is_buildable, is_generated) -VALUES (1, 'BIGINT(size)', 'bigint', 0, null, null, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bigint/', false, true, false), - (1, 'BINARY(size)', 'binary', 0, 255, 255, true, 1, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/binary/', false, true, false), - (1, 'BIT(size)', 'bit', 0, 64, null, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bit/', false, true, false), - (1, 'BLOB(size)', 'blob', 0, 65535, null, false, 1, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/blob/', false, false, false), - (1, 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bool/', false, true, false), - (1, 'CHAR(size)', 'char', 0, 255, 255, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/char/', false, true, false), - (1, 'DATE', 'date', null, null, null, null, null, null, null, null, null, null, - 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD', - 'https://mariadb.com/kb/en/date/', true, true, false), - (1, 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, null, null, - 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9', +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIGINT(size)', 'bigint', 0, null, null, FALSE, 1, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/bigint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BINARY(size)', 'binary', 0, 255, 255, TRUE, 1, null, null, null, null, + null, 'size in Bytes', null, 'https://mariadb.com/kb/en/binary/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIT(size)', 'bit', 0, 64, null, FALSE, 1, null, null, null, null, null, + null, null, 'https://mariadb.com/kb/en/bit/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BLOB(size)', 'blob', 0, 65535, null, FALSE, 1, null, null, null, null, + null, 'size in Bytes', null, 'https://mariadb.com/kb/en/blob/', FALSE, FALSE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, + null, null, null, 'https://mariadb.com/kb/en/bool/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'CHAR(size)', 'char', 0, 255, 255, FALSE, 1, null, null, null, null, + null, null, null, 'https://mariadb.com/kb/en/char/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATE', 'date', null, null, null, null, null, null, null, null, null, + null, 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD', + 'https://mariadb.com/kb/en/date/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, + null, null, 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9', 'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD', - 'https://mariadb.com/kb/en/datetime/', true, true, false), - (1, 'DECIMAL(size, d)', 'decimal', 0, 65, null, false, 1, 0, 38, null, false, null, null, null, - 'https://mariadb.com/kb/en/decimal/', false, true, false), - (1, 'DOUBLE(size, d)', 'double', null, null, null, false, null, null, null, null, false, null, null, null, - 'https://mariadb.com/kb/en/double/', false, true, false), - (1, 'ENUM(v1,v2,...)', 'enum', null, null, null, null, null, null, null, null, null, null, null, - 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/enum/', true, true, false), - (1, 'FLOAT(size)', 'float', null, null, null, false, null, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/float/', false, true, false), - (1, 'INT(size)', 'int', null, null, null, false, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/int/', false, true, false), - (1, 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null, - 'https://mariadb.com/kb/en/longblob/', false, true, false), - (1, 'LONGTEXT', 'longtext', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null, - 'https://mariadb.com/kb/en/longtext/', true, true, false), - (1, 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, null, null, null, 'max. 15.999 MiB', - null, 'https://mariadb.com/kb/en/mediumblob/', false, true, false), - (1, 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/mediumint/', false, true, false), - (1, 'MEDIUMTEXT', 'mediumtext', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', - null, 'https://mariadb.com/kb/en/mediumtext/', true, true, false), - (1, 'SERIAL', 'serial', null, null, null, null, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/bigint/', true, true, true), - (1, 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, null, null, null, - 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', true, true, false), - (1, 'SMALLINT(size)', 'smallint', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', - null, 'https://mariadb.com/kb/en/smallint/', false, true, false), - (1, 'TEXT(size)', 'text', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/text/', true, true, false), - (1, 'TIME(fsp)', 'time', 0, 6, 0, false, null, null, null, null, null, null, + 'https://mariadb.com/kb/en/datetime/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DECIMAL(size, d)', 'decimal', 0, 65, null, FALSE, 1, 0, 38, null, + FALSE, null, null, null, 'https://mariadb.com/kb/en/decimal/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DOUBLE(size, d)', 'double', null, null, null, FALSE, null, null, null, + null, FALSE, null, null, null, 'https://mariadb.com/kb/en/double/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ENUM(v1,v2,...)', 'ENUM', null, null, null, null, null, null, null, + null, null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/ENUM/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'FLOAT(size)', 'float', null, null, null, FALSE, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/float/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'INT(size)', 'int', null, null, null, FALSE, null, null, null, null, + null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/int/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, + null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longblob/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGTEXT', 'longTEXT', null, null, null, null, null, null, null, null, + null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, + null, null, null, 'max. 15.999 MiB', null, 'https://mariadb.com/kb/en/mediumblob/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMTEXT', 'mediumTEXT', null, null, null, null, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SERIAL', 'serial', null, null, null, null, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/bigint/', TRUE, TRUE, TRUE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, + null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SMALLINT(size)', 'smallint', 0, null, null, FALSE, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/smallint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TEXT(size)', 'TEXT', 0, null, null, FALSE, null, null, null, null, + null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/TEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIME(fsp)', 'time', 0, 6, 0, FALSE, null, null, null, null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S', - 'https://mariadb.com/kb/en/time/', true, true, false), - (1, 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, false, null, null, null, null, null, null, - 'fsp=microsecond precision, min. 0, max. 6', + 'https://mariadb.com/kb/en/time/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, FALSE, null, null, null, null, + null, null, 'fsp=microsecond precision, min. 0, max. 6', 'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD', - 'https://mariadb.com/kb/en/timestamp/', true, true, false), - (1, 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, null, null, null, - 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', false, true, false), - (1, 'TINYINT(size)', 'tinyint', 0, null, null, false, null, null, null, null, null, null, null, - 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', false, true, false), - (1, 'TINYTEXT', 'tinytext', null, null, null, null, null, null, null, null, null, null, null, - 'max. 255 characters', 'https://mariadb.com/kb/en/tinytext/', true, true, false), - (1, 'YEAR', 'year', 2, 4, null, false, 2, null, null, null, null, null, 'min. 1901, max. 2155', 'e.g. YYYY, YY', - 'https://mariadb.com/kb/en/year/', false, true, false), - (1, 'VARBINARY(size)', 'varbinary', 0, null, null, true, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/varbinary/', false, true, false), - (1, 'VARCHAR(size)', 'varchar', 0, 65532, 255, true, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/varchar/', false, true, false); + 'https://mariadb.com/kb/en/timestamp/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, + null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', FALSE, + TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYINT(size)', 'tinyint', 0, null, null, FALSE, null, null, null, + null, null, null, null, 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYTEXT', 'tinyTEXT', null, null, null, null, null, null, null, null, + null, null, null, 'max. 255 characters', 'https://mariadb.com/kb/en/tinyTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'YEAR', 'year', 2, 4, null, FALSE, 2, null, null, null, null, null, + 'min. 1901, max. 2155', 'e.g. YYYY, YY', 'https://mariadb.com/kb/en/year/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARBINARY(size)', 'varbinary', 0, null, null, TRUE, null, null, null, + null, null, null, null, null, 'https://mariadb.com/kb/en/varbinary/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARCHAR(size)', 'VARCHAR', 0, 65532, 255, TRUE, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/VARCHAR/', FALSE, TRUE, FALSE); + INSERT INTO `mdb_image_operators` (image_id, display_name, value, documentation) -VALUES (1, 'Equal operator', '=', 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'), - (1, 'NULL-safe equal operator', '<=>', 'https://mariadb.com/kb/en/null-safe-equal/'), - (1, 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'), - (1, 'Less than or equal operator', '<=', 'https://mariadb.com/kb/en/less-than-or-equal/'), - (1, 'Greater-than operator', '>', 'https://mariadb.com/kb/en/greater-than/'), - (1, 'Greater than or equal operator', '>=', 'https://mariadb.com/kb/en/greater-than-or-equal/'), - (1, 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'), - (1, 'Addition operator', '+', 'https://mariadb.com/kb/en/addition-operator/'), - (1, 'Division operator', '/', 'https://mariadb.com/kb/en/division-operator/'), - (1, 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'), - (1, 'Multiplication operator', '*', 'https://mariadb.com/kb/en/multiplication-operator/'), - (1, 'Subtraction operator', '-', 'https://mariadb.com/kb/en/subtraction-operator-/'), - (1, 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'), - (1, 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'), - (1, 'IN', 'IN', 'https://mariadb.com/kb/en/in/'), - (1, 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'), - (1, 'IS', 'IS', 'https://mariadb.com/kb/en/is/'), - (1, 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'), - (1, 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'), - (1, 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'), - (1, 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'), - (1, 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'), - (1, 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'), - (1, 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'), - (1, 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'), - (1, 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'), - (1, 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'), - (1, 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'), - (1, 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/'); +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Equal operator', '=', + 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NULL-safe equal operator', '<=>', + 'https://mariadb.com/kb/en/null-safe-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less than or equal operator', '<=', + 'https://mariadb.com/kb/en/less-than-or-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater-than operator', '>', + 'https://mariadb.com/kb/en/greater-than/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater than or equal operator', '>=', + 'https://mariadb.com/kb/en/greater-than-or-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Addition operator', '+', + 'https://mariadb.com/kb/en/addition-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Division operator', '/', + 'https://mariadb.com/kb/en/division-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Multiplication operator', '*', + 'https://mariadb.com/kb/en/multiplication-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Subtraction operator', '-', + 'https://mariadb.com/kb/en/subtraction-operator-/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IN', 'IN', 'https://mariadb.com/kb/en/in/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS', 'IS', 'https://mariadb.com/kb/en/is/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/'); INSERT INTO `mdb_ontologies` (prefix, uri, uri_pattern, sparql_endpoint, rdf_path) diff --git a/dbrepo-metadata-db/2_setup-data.sql b/dbrepo-metadata-db/2_setup-data.sql index e806e1e181dbdcc3f0e4e29f837bffac7123317c..dc4917cd8bd1ce95be2159bb225b1524383081e7 100644 --- a/dbrepo-metadata-db/2_setup-data.sql +++ b/dbrepo-metadata-db/2_setup-data.sql @@ -1,8 +1,8 @@ BEGIN; -INSERT INTO `mdb_containers` (name, internal_name, image_id, host, port, ui_host, ui_port, sidecar_host, sidecar_port, - privileged_username, privileged_password) -VALUES ('mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', 1, 'data-db', 3306, 'localhost', 3306, 'data-db-sidecar', 8080, - 'root', 'dbrepo'); +INSERT INTO `mdb_containers` (id, name, internal_name, image_id, host, port, ui_host, ui_port, privileged_username, + privileged_password) +VALUES ('6cfb3b8e-1792-4e46-871a-f3d103527203', 'mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', + 'd79cb089-363c-488b-9717-649e44d8fcc5', 'data-db', 3306, 'localhost', 3306, 'root', 'dbrepo'); COMMIT; diff --git a/dbrepo-metadata-service/api/pom.xml b/dbrepo-metadata-service/api/pom.xml index 37e8bec63f5b772f35dc97529c899edea14200fe..6c3b1aa13fbe0ccac21e0e0ce1ede0a78e6f340d 100644 --- a/dbrepo-metadata-service/api/pom.xml +++ b/dbrepo-metadata-service/api/pom.xml @@ -6,18 +6,18 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-api</artifactId> <name>dbrepo-metadata-service-api</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service-entities</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java deleted file mode 100644 index a9f95ad04d9c5e2ca8c953dc5169f5f0d9250bb0..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package at.tuwien.api.auth; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class CredentialDto { - - @NotBlank - @Schema(example = "password") - private String type; - - @NotBlank - @Schema(example = "abc123") - private String value; - - @NotNull - @Schema(example = "false") - private Boolean temporary; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java deleted file mode 100644 index 93d562ca77a81caf86f93a9ec6e96184f706d7ae..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package at.tuwien.api.auth; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -import java.util.List; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class JwtResponseDto { - - @NotNull - @ToString.Exclude - private String token; - - private String type; - - private Long id; - - @Schema(example = "user") - private String username; - - @Schema(example = "user@example.com") - private String email; - - private List<String> roles; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java deleted file mode 100644 index 01c0a2d0348a2facf9009d9b865fd52338f2bab9..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package at.tuwien.api.auth; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -import java.io.Serializable; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class KeycloakErrorDto implements Serializable { - - @NotNull - @Schema(example = "invalid_grant") - private String error; - - @NotNull - @JsonProperty("error_description") - private String errorDescription; - - private String errorMessage; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java deleted file mode 100644 index 809de9881bc424fefe1da8937df03217facb1456..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package at.tuwien.api.auth; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class LoginRequestDto { - - @NotNull - @Schema(example = "user") - private String username; - - @NotNull - @ToString.Exclude - private String password; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java deleted file mode 100644 index 05b8dfd3b5f51007011ea2f2f0d87e34181aeae4..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java +++ /dev/null @@ -1,24 +0,0 @@ -package at.tuwien.api.auth; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class RefreshTokenRequestDto { - - @NotNull - @JsonProperty("refresh_token") - @Schema(example = "refresh_token") - private String refreshToken; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java deleted file mode 100644 index 8a2fa624b5794a36304949c3269ac3958beeaee1..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java +++ /dev/null @@ -1,83 +0,0 @@ -package at.tuwien.api.auth; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class TokenIntrospectDto { - - @NotNull - @Schema(description = "expiration timestamp", example = "1679602372") - private Long exp; - - @NotNull - @Schema(example = "1679602072") - private Long iat; - - @NotNull - @Schema(example = "6aa375aa-d5bb-4b1e-9f89-347084a739e3") - private String jti; - - @NotNull - @Schema(description = "issuer", example = "6aa375aa-d5bb-4b1e-9f89-347084a739e3") - private String iss; - - @NotNull - @Schema(description = "user id", example = "9670828b-8159-4642-be19-e77ca018e644") - private String sub; - - @NotNull - @Schema(description = "type", example = "Bearer") - private String typ; - - @NotNull - @Schema(example = "0170887f-4ffc-4bb7-9292-9334132cd430") - private String azp; - - @NotNull - @Schema(example = "0170887f-4ffc-4bb7-9292-9334132cd430") - @JsonProperty("session_state") - private String sessionState; - - @NotNull - @Schema(example = "1") - private Integer acr; - - @NotNull - @JsonProperty("allowed-origins") - @Schema(example = "[\"*\"]") - private String[] allowedOrigins; - - @NotNull - @JsonProperty("realm_access") - private RealmAccessDto realmAccess; - - @NotNull - @JsonProperty("client_id") - @Schema(example = "dbrepo-client") - private String clientId; - - @NotNull - @JsonProperty("preferred_username") - @Schema(example = "jdoe") - private String username; - - @NotNull - @Schema(example = "openid email profile") - private String scope; - - @NotNull - @Schema(example = "true") - private Boolean active; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java index 71e7601b164bbda3a1efd21557d9695322ad0715..91253b12baaefc02c0b078bf31fd832a01f29864 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java @@ -10,6 +10,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; +import java.util.UUID; @Getter @Setter @@ -22,8 +23,8 @@ import java.time.Instant; public class ContainerBriefDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "7ddb7e87-b965-43a2-9a24-4fa406d998f4") + private UUID id; @NotNull @Schema(example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50") 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 913ab26d9d4469fb3335d5dc1da8463c9afc0bd6..35bfafdf464d0876e96924b2d98605e41ba14bda 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 @@ -10,6 +10,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; +import java.util.UUID; @Getter @Setter @@ -22,8 +23,8 @@ import java.time.Instant; public class ContainerDto extends CacheableDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "7ddb7e87-b965-43a2-9a24-4fa406d998f4") + private UUID id; @NotBlank @Schema(example = "Air Quality") @@ -51,7 +52,6 @@ public class ContainerDto extends CacheableDto { @NotNull private ImageDto image; - @NotNull @Schema(example = "50") private Long quota; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java index 23062ffd9082098f13524ddd283b39310ecf39d5..f2ac7df46abb989797bc1bab23d8145d71ee5687 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -22,8 +24,8 @@ public class CreateContainerDto { @NotNull @JsonProperty("image_id") - @Schema(example = "1", description = "Image ID") - private Long imageId; + @Schema(example = "2360f3c4-85e0-4fac-a7c6-73b296b9dde2", description = "Image ID") + private UUID imageId; @NotBlank @Schema(example = "data-db2", description = "Hostname of container") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java index 6a9a970c0f5b3931bbcab7f53be099138d568c12..ecbd050966f43c6f8fbe8a04b6f458570448fd59 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized; public class ImageBriefDto { @NotNull - @Schema(example = "5") - private Long id; + @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dcce") + private UUID id; @NotBlank @Schema(example = "mariadb") @@ -29,11 +31,6 @@ public class ImageBriefDto { @Schema(example = "10.5") private String version; - @NotBlank - @JsonProperty("jdbc_method") - @Schema(example = "mariadb") - private String jdbcMethod; - @NotNull @JsonProperty("default") @Schema(example = "false") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java index a9c37fb8485db0e90b4b5d56b91b53ad4ec47940..ec4b0ad4894bcb220d03d4bb86828ba3b25bfc63 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.container.image; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -8,6 +9,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -20,12 +22,8 @@ import java.util.List; public class ImageDto { @NotNull - @Schema(example = "1") - private Long id; - - @NotBlank - @Schema(example = "docker.io/library") - private String registry; + @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dcce") + private UUID id; @NotBlank @Schema(example = "mariadb") @@ -36,16 +34,7 @@ public class ImageDto { private String version; @NotBlank - @JsonProperty("driver_class") - @Schema(example = "org.mariadb.jdbc.Driver") - private String driverClass; - - @NotBlank - @Schema(example = "org.hibernate.dialect.MariaDBDialect") - private String dialect; - - @NotBlank - @JsonProperty("jdbc_method") + @JsonIgnore @Schema(example = "mariadb") private String jdbcMethod; @@ -54,11 +43,6 @@ public class ImageDto { @Schema(example = "false") private Boolean isDefault; - @NotNull - @JsonProperty("default_port") - @Schema(example = "3306") - private Integer defaultPort; - @NotNull @JsonProperty("data_types") private List<DataTypeDto> dataTypes; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java index 96113b5347e6fcd8d99878154686927da9c978ac..b4b9061354aaa40d6588af7dd53bc7916e719424 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -17,7 +19,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class OperatorDto { - private Long id; + private UUID id; @NotBlank @JsonProperty("display_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java index c10d6b0b5e2618a6c3854e591d99e477be952035..e7fd08e771176346fb13d361f2c436ce3aaf6627 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,8 +21,8 @@ public class CreateDatabaseDto { @NotNull @JsonProperty("container_id") - @Schema(example = "1") - private Long cid; + @Schema(example = "0888e108-d521-46e2-9d3e-82099185305b") + private UUID cid; @NotBlank @Schema(example = "Air Quality") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java index d065a5892afb0cb342c12975f562820d1eeb6b10..7e393561f844b3f10f8fc450b04a29158e3e3cbd 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java @@ -26,7 +26,7 @@ public class DatabaseAccessDto { @NotNull @JsonIgnore - private Long hdbid; + private UUID hdbid; @NotNull private UserBriefDto user; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java index 4cff48db18b1b337de7ae9d3a50c986e4c329028..4bb262b781d3c18013cf3ae65401e39f2469c3e1 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java @@ -23,8 +23,8 @@ import java.util.UUID; public class DatabaseBriefDto { @NotNull - @Schema(example = "3") - private Long id; + @Schema(example = "fc29f89c-86a8-4020-9e36-4d954736c6cc") + private UUID id; @NotBlank @Schema(example = "Air Quality") 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 d6ea2bff9e2203439891e3a1a6aec6f17afc86a6..5ecca1bebc980e9ba7d436206fc2c9b19e059df6 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 @@ -14,6 +14,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -26,8 +27,8 @@ import java.util.List; public class DatabaseDto extends CacheableDto { @NotNull - @Schema(example = "3") - private Long id; + @Schema(example = "fc29f89c-86a8-4020-9e36-4d954736c6cc") + private UUID id; @NotBlank @Schema(example = "Air Quality") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java deleted file mode 100644 index a82f6669ed62eac5402e0141d2bf414d01dbc462..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java +++ /dev/null @@ -1,24 +0,0 @@ -package at.tuwien.api.database; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class SubjectModifyDto { - - private Long id; - - @NotNull - @Schema(example = "air") - private String name; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java index f68067e8a870f01b402b23a3b27bd0a065e186fd..47107ac54fe042b026e3a0ac954e5be2650b59d8 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java @@ -20,13 +20,13 @@ import java.util.UUID; public class ViewBriefDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "787439d0-e85e-400c-a7e6-996a023bfad9") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long vdbid; + @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4") + private UUID vdbid; @NotBlank @Schema(example = "Air Quality") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java index 24cca8e4cc7325904c83845d42d060814753d171..766fbfd32103992a8af744c1c105948ebc02f09a 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java @@ -9,6 +9,8 @@ import jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -20,13 +22,13 @@ import lombok.extern.jackson.Jacksonized; public class ViewColumnDto { @NotNull - @Schema(example = "12") - private Long id; + @Schema(example = "6aec3a91-2e0b-4e92-a16a-9c3c5e892da1") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4") + private UUID databaseId; @NotNull @JsonProperty("ord") 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 82a7081e16f08a2cc2c3a7c02a28760adc7ef9d1..7abd47121591e2ad5611c61dde9b6712df56dbc3 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 @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -24,13 +25,13 @@ import java.util.List; public class ViewDto extends CacheableDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "787439d0-e85e-400c-a7e6-996a023bfad9") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long vdbid; + @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4") + private UUID vdbid; @NotBlank @Schema(example = "Air Quality") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java index b2efa7567e6e33b30664cd35adf652c7531a3026..76ee117931565173e94b4eb8684bc9a7ecd6d0d1 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java @@ -20,8 +20,8 @@ public class CreateDatabaseDto { @NotNull @JsonProperty("container_id") - @Schema(example = "1") - private Long containerId; + @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7") + private UUID containerId; @NotBlank @JsonProperty("internal_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java deleted file mode 100644 index 1cc1d501c825d99c564564b71b268f76f431cf56..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java +++ /dev/null @@ -1,21 +0,0 @@ -package at.tuwien.api.database.query; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class ExecuteInternalQueryDto { - - @JsonProperty("container_id") - private String containerId; - - private String query; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java index 90a1af28bcf14d64d51eca1db1cc6b46760079fb..c55a108cfcb215bca68e2d826ab09be39283cccf 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @@ -25,11 +26,13 @@ import java.util.List; public class QueryBriefDto { @NotNull - private Long id; + @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7") + private UUID id; @NotNull @JsonProperty("database_id") - private Long databaseId; + @Schema(example = "1a6fb0c0-49c3-4a22-a515-35f7a3dd8e62") + private UUID databaseId; @NotNull private UserBriefDto owner; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java index 41cb641a5d8cdf8ccc6187c2f083447e4cdb4714..3b0f17086aaadb9ec5c91b2c0e54f9f207811056 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -24,13 +25,13 @@ import java.util.List; public class QueryDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "1a6fb0c0-49c3-4a22-a515-35f7a3dd8e62") + private UUID databaseId; @NotNull private UserBriefDto owner; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java index 98932f30a294febdc3df41290888c0d6d3ae7e5d..3ba910b97950253569a080246cd603ccec6d9854 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java @@ -20,13 +20,13 @@ import java.util.UUID; public class TableBriefDto { @NotNull - @Schema(example = "3") - private Long id; + @Schema(example = "41ed10e0-687b-4e18-8521-810f5cffbce1") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "2") - private Long databaseId; + @Schema(example = "a8fec026-dfaf-4b1d-8f6c-f01720d91705") + private UUID databaseId; @NotBlank @Schema(example = "Air Quality") 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 1021d167ca1364eb63b06d321040e708c4f7d6e2..3104794394e360ae23ebc82ab29364654b2ee992 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 @@ -18,6 +18,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -30,13 +31,13 @@ import java.util.List; public class TableDto extends CacheableDto { @NotNull - @Schema(example = "3") - private Long id; + @Schema(example = "d346f844-b84c-490f-9aec-725a2dc8f820") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "2") - private Long tdbid; + @Schema(example = "692511b6-5af3-4043-8b9b-626af8756d92") + private UUID tdbid; @NotBlank @Schema(example = "Air Quality") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java deleted file mode 100644 index 010bc68af285bb9fadd741355687e1a9218d1448..0000000000000000000000000000000000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java +++ /dev/null @@ -1,24 +0,0 @@ -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-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java index bc13700bdd83dfac5fe23c133509c0184834b7a9..08ee40caa46f977fe3b7bd81055d94ab18d410c5 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java @@ -8,6 +8,8 @@ import jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,18 +21,18 @@ import lombok.extern.jackson.Jacksonized; public class ColumnBriefDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "a453e444-e00d-41ca-902c-11e9c54b39f1") + private UUID id; @NotNull - @Schema(example = "2") @JsonProperty("database_id") - private Long databaseId; + @Schema(example = "911f9052-c58c-4e1c-b3f2-66af2107be16") + private UUID databaseId; @NotNull - @Schema(example = "3") @JsonProperty("table_id") - private Long tableId; + @Schema(example = "bfffa915-a547-4466-9c65-ddc0d38fdb08") + private UUID tableId; @NotBlank @Size(max = 64) diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java index 462821b53c0a8a01a7acb36f15a25641ac895cd8..d50945740e9a42a8081abab7cd1188dd23a03b13 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java @@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized; import java.math.BigDecimal; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -25,18 +26,18 @@ import java.util.List; public class ColumnDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "a453e444-e00d-41ca-902c-11e9c54b39f1") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "2") - private Long databaseId; + @Schema(example = "911f9052-c58c-4e1c-b3f2-66af2107be16") + private UUID databaseId; @NotNull @JsonProperty("table_id") - @Schema(example = "3") - private Long tableId; + @Schema(example = "bfffa915-a547-4466-9c65-ddc0d38fdb08") + private UUID tableId; @NotNull @JsonProperty("ord") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java index 3cc1231c7452aa809ef7ecf4d85244d0c9f400e0..160807e7aaf1e7c59e33dc7813a4d4691fd06ba3 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java @@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized; public class ConceptBriefDto { @NotNull - @Schema(example = "23") - private Long id; + @Schema(example = "8cabc011-4bdf-44d4-9d33-b2648e2ddbf1") + private UUID id; @NotBlank @Schema(example = "http://www.wikidata.org/entity/Q202444") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java index da00e64e8362ed298ba2bb9e2e98a596af716431..13595569439bc999e40c58a2be29469883631909 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java @@ -1,12 +1,14 @@ package at.tuwien.api.database.table.columns.concepts; import at.tuwien.api.database.table.columns.ColumnBriefDto; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -19,7 +21,8 @@ import java.util.List; public class ConceptDto { @NotNull - private Long id; + @Schema(example = "8cabc011-4bdf-44d4-9d33-b2648e2ddbf1") + private UUID id; @NotBlank private String uri; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java index 15d9ae90823e05491b692932af518a768cfc1305..789f3de1500900848205e0598e8fab89f9a50c11 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java @@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized; public class UnitBriefDto { @NotNull - @Schema(example = "34") - private Long id; + @Schema(example = "ba1935e8-6817-488f-af0a-f54389af9000") + private UUID id; @NotBlank @Schema(example = "http://www.wikidata.org/entity/Q1422583") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java index 48c7180c067123ec4ea09b0eb1b6cd167c4c9d7b..ca3899f7cc1f7d858d4e85fa0aa3107e6633dbf7 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java @@ -1,12 +1,14 @@ package at.tuwien.api.database.table.columns.concepts; import at.tuwien.api.database.table.columns.ColumnBriefDto; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -19,7 +21,8 @@ import java.util.List; public class UnitDto { @NotNull - private Long id; + @Schema(example = "ba1935e8-6817-488f-af0a-f54389af9000") + private UUID id; @NotBlank private String uri; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java index 56dd9863245a51219c1604c43636dd27adea2bd8..4acc205efdebaec4b6e82c322a539d9fb945a30c 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -13,6 +15,6 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ForeignKeyBriefDto { - @Schema(example = "8") - private Long id; + @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a") + private UUID id; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java index 254666f9eb6b056501bc08ecebb745c5eac61345..94063c77dc579a13aad2c52af5ac32739fdf89d0 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java @@ -10,6 +10,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -20,8 +21,8 @@ import java.util.List; @ToString public class ForeignKeyDto { - @Schema(example = "4") - private Long id; + @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a") + private UUID id; @NotNull @Schema(example = "fk_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java index f0d5b249cdbc41222a5c71c6d41855f1aa5cc5df..2423b92a624042f6b638b8baa1b1dbe818b14235 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -16,8 +18,8 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ForeignKeyReferenceDto { - @Schema(example = "8") - private Long id; + @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a") + private UUID id; @NotNull @JsonProperty("foreign_key") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java index 86d1d49960d2c9496ce5d23e26fa99edadec344e..59117a579576e86cd9b01828695de57aaece9fd7 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -16,8 +18,8 @@ import lombok.extern.jackson.Jacksonized; @ToString public class PrimaryKeyDto { - @Schema(example = "8") - private Long id; + @Schema(example = "d984f9d7-e8a7-4b81-b59a-862db1871f18") + private UUID id; @NotNull private TableBriefDto table; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java index 755f3a31b7a9634bff74c8992bb384719297c256..64db6dfde0b0ce6d8de017a0cba9f61c7e64d304 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java @@ -8,6 +8,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -19,8 +20,8 @@ import java.util.List; public class UniqueDto { @NotNull - @Schema(example = "5") - private Long id; + @Schema(example = "d984f9d7-e8a7-4b81-b59a-862db1871f13") + private UUID id; @NotNull @Schema(example = "uk_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java index db55272383828e1bfc0c870f086ecc2c27ecba03..5f2e73fc07badf436c3527fc8423b21d641967b7 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java @@ -11,6 +11,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -23,20 +24,20 @@ public class CreateIdentifierDto { @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "d002e8d5-8db4-4ff7-ab3a-bc3f52d9ec44") + private UUID databaseId; @JsonProperty("query_id") @Schema(example = "null") - private Long queryId; + private UUID queryId; @JsonProperty("view_id") @Schema(example = "null") - private Long viewId; + private UUID viewId; @JsonProperty("table_id") @Schema(example = "null") - private Long tableId; + private UUID tableId; @NotNull @Schema(example = "database") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java index 8265a1106bc8daef632f887e9c38c148d765fb01..95b0d588f7bccc0c812c3bd823f94022d3da9d38 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @@ -19,8 +21,8 @@ import lombok.extern.jackson.Jacksonized; public class CreatorBriefDto { @NotNull - @Schema(example = "11") - private Long id; + @Schema(example = "e41f94a6-2b94-4a12-ac0e-678684e1c070") + private UUID id; @NotBlank @JsonProperty("creator_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java index a3a2976901aee60e60162788dd10df239206e826..1382baec51d8f3de1b048fafc8d8f564aecc6e4f 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java @@ -9,6 +9,8 @@ import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; import org.springframework.data.annotation.Id; +import java.util.UUID; + @Getter @Setter @@ -21,8 +23,8 @@ import org.springframework.data.annotation.Id; public class CreatorDto { @NotNull - @Schema(example = "11") - private Long id; + @Schema(example = "e41f94a6-2b94-4a12-ac0e-678684e1c070") + private UUID id; @Schema(example = "Josiah") private String firstname; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java index f94edc2cf75421855a8bcd761252e6aba249bb27..43e32b8ae083ee154f221e0667ad3a2e10706071 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java @@ -20,25 +20,25 @@ import java.util.UUID; public class IdentifierBriefDto { @NotNull - @Schema(example = "2") - private Long id; + @Schema(example = "b97cd56b-66ca-4354-9e6c-f47210cfaaec") + private UUID id; @NotNull @JsonProperty("database_id") @Schema(example = "1") - private Long databaseId; + private UUID databaseId; @JsonProperty("query_id") @Schema(example = "1") - private Long queryId; + private UUID queryId; @JsonProperty("table_id") @Schema(example = "1") - private Long tableId; + private UUID tableId; @JsonProperty("view_id") @Schema(example = "1") - private Long viewId; + private UUID viewId; @NotNull @Schema(example = "database") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java index fbcbb3afe7b6cb9ca27aee16b2875c5ed5d03c1b..32ff2455ccde07b8d8ce39ad674245d65dd21174 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java @@ -8,6 +8,8 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import org.springframework.data.annotation.Id; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id; public class IdentifierDescriptionDto { @NotNull - @Schema(example = "3") - private Long id; + @Schema(example = "e0e9692c-910b-4b60-b53a-fc7c358a917d") + private UUID id; @Schema(example = "Air quality reports at Stephansplatz, Vienna") private String description; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java index 53d40ecd781169f531a6cf215d370fd69be9d2b0..57ecb5ad625017fec1571a1da53a83cbd5fcf852 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java @@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -25,25 +26,25 @@ import java.util.List; public class IdentifierDto { @NotNull - @Schema(example = "2") - private Long id; + @Schema(example = "b97cd56b-66ca-4354-9e6c-f47210cfaaec") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "null") + private UUID databaseId; @JsonProperty("query_id") - @Schema(example = "1") - private Long queryId; + @Schema(example = "null") + private UUID queryId; @JsonProperty("table_id") - @Schema(example = "1") - private Long tableId; + @Schema(example = "null") + private UUID tableId; @JsonProperty("view_id") - @Schema(example = "1") - private Long viewId; + @Schema(example = "null") + private UUID viewId; @NotNull @Schema(example = "database") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java index 93084d2d17679b94d825600761c1aa03c3b1bdde..4184f2cf2afade6121711cca63a629b047156120 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java @@ -8,6 +8,8 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import org.springframework.data.annotation.Id; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id; public class IdentifierFunderDto { @NotNull - @Schema(example = "2") - private Long id; + @Schema(example = "39693413-e0ce-46da-ad5e-029c0556d439") + private UUID id; @NotBlank @JsonProperty("funder_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java index ed4d445de0ffd2686a84331981d3d5899a4a9b65..f63c3ae79cdc84c9c4ec85edb62917282e06c815 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java @@ -11,6 +11,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -22,25 +23,25 @@ import java.util.List; public class IdentifierSaveDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "68e11675-1e0f-4d24-a6d9-887ad1c4445d") + private UUID id; @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "null") + private UUID databaseId; @JsonProperty("query_id") @Schema(example = "null") - private Long queryId; + private UUID queryId; @JsonProperty("view_id") @Schema(example = "null") - private Long viewId; + private UUID viewId; @JsonProperty("table_id") @Schema(example = "null") - private Long tableId; + private UUID tableId; @NotNull @Schema(example = "database") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java index 27e3b323eaca7d9ab481af61059a05fbe576c42d..d995527d88d281e22f96b220cd0566e05811dbbc 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java @@ -8,6 +8,8 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import org.springframework.data.annotation.Id; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id; public class IdentifierTitleDto { @NotNull - @Schema(example = "4") - private Long id; + @Schema(example = "70ce5164-fd74-413f-8712-f996b91defbf") + private UUID id; @Schema(example = "Airquality Demonstrator") private String title; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java index 6ff5d9aed1297f5a12755d76d03cc668a273e0e5..7205bc6e0b76e823bb3d2405aced77dd41b9adb5 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import org.springframework.data.annotation.Id; import java.time.Instant; +import java.util.UUID; @Getter @Setter @@ -24,8 +25,8 @@ import java.time.Instant; public class RelatedIdentifierDto { @NotNull - @Schema(example = "8") - private Long id; + @Schema(example = "ce9d11f0-60a2-448d-a3e4-44719a443e8a") + private UUID id; @NotNull @Schema(example = "10.70124/dc4zh-9ce78") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java index c87ff81d3c058edd475d89102c8e29468dae211e..0866a5cb3b5dc36f7ad0484dddf860c7371816d9 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java @@ -8,6 +8,8 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized; public class SaveIdentifierCreatorDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "da9dd034-00a8-4517-b93d-d1b2adfee418") + private UUID id; @Schema(example = "Josiah") private String firstname; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java index 1d251db634d4f1a6cb0b369013c113aae69f1968..bc1ad4f3dfd98fbbbd4c2edc1d73f562cc1f0d23 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java @@ -8,6 +8,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized; public class SaveIdentifierDescriptionDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "35bd84d8-b181-43c8-b786-4d024e4f843c") + private UUID id; @NotBlank @Schema(example = "Air quality reports at Stephansplatz, Vienna") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java index 89bea57a1cf5c69a4184fae5edc3d77f8062bb39..1709c109b28a9aa3c57c10bcea1589d445d91c6c 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized; public class SaveIdentifierFunderDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "1c6b9212-a315-44b9-946c-3682a7a0e517") + private UUID id; @NotBlank @JsonProperty("funder_name") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java index 0832a77cee0323db7220cf88ff295982fee2c0a1..07ebc35e2ca6ce2458746ee9253dbf9dc296a337 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java @@ -8,6 +8,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized; public class SaveIdentifierTitleDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "2af9f40e-eaf5-4ea1-861a-1a696587bf29") + private UUID id; @NotBlank @Schema(example = "Airquality Demonstrator") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java index b3a95eee06fe4cc0cb91fb8df822e52c3f507221..d22c8216e366d602e119abe824af6f543a5fac8f 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java @@ -6,6 +6,8 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotNull; +import java.util.UUID; + @Getter @Setter @Builder @@ -16,8 +18,8 @@ import jakarta.validation.constraints.NotNull; public class SaveRelatedIdentifierDto { @NotNull - @Schema(example = "1") - private Long id; + @Schema(example = "5bb272c7-7421-4f74-83ac-0486812d0f44") + private UUID id; @NotNull @Schema(example = "10.70124/dc4zh-9ce78") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java index e9c15c212e100f997e6c4afc6c585a4726e92feb..d344ccd6b461460d77b7f865ab03e44d84fc6956 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java @@ -9,6 +9,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; +import java.util.UUID; @Getter @Setter @@ -21,9 +22,11 @@ import java.time.Instant; public class BannerMessageDto { @NotNull - private Long id; + @Schema(example = "ae3f795b-a3da-4ebe-bdc4-21a8ce631e6f") + private UUID id; @NotNull + @Schema(example = "WARNING") private BannerMessageTypeDto type; @NotBlank diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java index b908b6e09e26ea5938b7eb0b44554db0a746d22e..29d5116a70bfe3b59c1223534616eebb80b9c57e 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,7 +20,8 @@ import lombok.extern.jackson.Jacksonized; public class OntologyBriefDto { @NotNull - private Long id; + @Schema(example = "7c491e40-082a-47b8-b82c-51d03c520466") + private UUID id; @NotBlank @Schema(example = "http://www.wikidata.org/") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java index 686cd9f030c952ace5d85a0eecb3f049bcd1a2a9..a3e7c46d014d5de6c06ec5ed3608f51cb8700de3 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java @@ -10,6 +10,7 @@ import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; +import java.util.UUID; @Getter @Setter @@ -22,7 +23,8 @@ import java.time.Instant; public class OntologyDto { @NotNull - private Long id; + @Schema(example = "7c491e40-082a-47b8-b82c-51d03c520466") + private UUID id; @NotBlank @Schema(example = "http://www.wikidata.org/") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java index 79ea8d6a5a511a5794df53c455dddd912678219e..f4a2147a29cbdb1f0ee7aa03a26fa500eb370d91 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java @@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -19,18 +21,18 @@ public class TableColumnEntityDto { @NotNull @JsonProperty("database_id") - @Schema(example = "1") - private Long databaseId; + @Schema(example = "475b4107-a64d-4495-a7ef-3cb0dadd4804") + private UUID databaseId; @NotNull @JsonProperty("table_id") - @Schema(example = "1") - private Long tableId; + @Schema(example = "9a9208af-90ea-4382-9a11-0c8f6d89bd1f") + private UUID tableId; @NotNull @JsonProperty("column_id") - @Schema(example = "1") - private Long columnId; + @Schema(example = "297860e3-3b29-451c-ae8a-a85ed5941018") + private UUID columnId; @NotBlank @Schema(example = "https://www.wikidata.org/entity/Q1686799") diff --git a/dbrepo-metadata-service/entities/pom.xml b/dbrepo-metadata-service/entities/pom.xml index b73a11050c8d9ea55bf8649a1694bfc1c00c7600..313309e18831501558a149cab52920bb90e89e91 100644 --- a/dbrepo-metadata-service/entities/pom.xml +++ b/dbrepo-metadata-service/entities/pom.xml @@ -6,12 +6,12 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-entities</artifactId> <name>dbrepo-metadata-service-entity</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies/> 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 a2fb1264cc360f0de0d5502306b215d79a442a70..458dcec7ebb282ff5abc703668aa8010ca3e5d97 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 @@ -5,14 +5,14 @@ import at.tuwien.entities.database.Database; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; import java.util.List; - -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -26,9 +26,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Container { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false) private String name; @@ -48,8 +48,8 @@ public class Container { @Column private Integer uiPort; - @Column(nullable = false, columnDefinition = "INT DEFAULT 50") - private Integer quota = 50; + @Column + private Integer quota; @Column private String uiAdditionalFlags; @@ -84,4 +84,11 @@ public class Container { @Column private String privilegedPassword; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java index 7e04ce2086c3b4e9e677548b106cc28ddc9756ee..336a278d7d8ff6f2f4d2b56ebbde1f156e198659 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 @@ -4,14 +4,14 @@ import at.tuwien.entities.container.Container; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; import java.util.List; - -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -28,9 +28,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ContainerImage { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - public Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false) private String name; @@ -79,4 +79,11 @@ public class ContainerImage { @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST}, mappedBy = "image") private List<Operator> operators; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java index 5f4ddbfb8c6dd8a657a88432d4606fa6f9c56f7e..347ca47e960e74f846eea32b3ddc166e3a0efc0e 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 @@ -2,9 +2,10 @@ package at.tuwien.entities.container.image; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -18,9 +19,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class DataType { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - public Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(name = "display_name", nullable = false) private String displayName; @@ -75,4 +76,11 @@ public class DataType { }) private ContainerImage image; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java index 1ecedc5e16cef533008a28db7d022acab336c8d7..adeb6dd8ef7c977222021d3c1b0fdb54fb304a17 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 @@ -2,9 +2,10 @@ package at.tuwien.entities.container.image; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -18,9 +19,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Operator { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - public Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(name = "display_name", nullable = false) private String displayName; @@ -39,4 +40,11 @@ public class Operator { }) private ContainerImage image; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index d90a702db33c759a511480fa0e89c37efc2773fc..41e161dbe4def45425b1dfdffa677729f5306d78 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 @@ -42,9 +42,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Database implements Serializable { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") @@ -56,8 +56,8 @@ public class Database implements Serializable { }) private User owner; - @Column(nullable = false) - private Long cid; + @Column(nullable = false, columnDefinition = "VARCHAR(36)") + private UUID cid; @ToString.Exclude @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @@ -131,4 +131,11 @@ public class Database implements Serializable { @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java index 6a2622be3e7137c97b68ab9ad91e24edd4fae293..e5f7dd3012d9d5b510f7e072dfadf255297e4a8e 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 @@ -42,8 +42,9 @@ public class DatabaseAccess { private User user; @Id - @Column(name = "database_id", updatable = false) - private Long hdbid; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(name = "database_id", nullable = false, columnDefinition = "VARCHAR(36)") + private UUID hdbid; @ToString.Exclude @EqualsAndHashCode.Exclude diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java index 83806068525ef9073e0bb18ca01b1a933f74a090..b6963c290c38186fc7d78af149b07622804e7301 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java @@ -10,5 +10,5 @@ public class DatabaseAccessKey implements Serializable { private UUID huserid; - private Long hdbid; + private UUID hdbid; } 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 67e6d6d18ac26a1cb2641ed45ae9e969c7393164..3fd8fd06c8e1488b2d69e3add3dbac6277478f7e 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 @@ -17,8 +17,6 @@ import java.time.Instant; import java.util.List; import java.util.UUID; -import static jakarta.persistence.GenerationType.IDENTITY; - @Data @Entity @Builder @@ -37,13 +35,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class View { @Id - @org.springframework.data.annotation.Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; - - @Column(updatable = false, nullable = false) - private Long vdbid; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @ToString.Exclude @JdbcTypeCode(java.sql.Types.VARCHAR) @@ -114,4 +108,11 @@ public class View { @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java index 7ef6e8b9d63c30e05313514c78ad562306318185..2b18132e8cca75d05ee203143a5dbba40eabf21f 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 @@ -3,8 +3,11 @@ package at.tuwien.entities.database; import at.tuwien.entities.database.table.columns.TableColumnType; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.util.UUID; + import static jakarta.persistence.GenerationType.IDENTITY; @Data @@ -21,9 +24,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ViewColumn implements Comparable<ViewColumn> { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @ToString.Exclude @EqualsAndHashCode.Exclude @@ -59,4 +62,11 @@ public class ViewColumn implements Comparable<ViewColumn> { public int compareTo(ViewColumn viewColumn) { return Integer.compare(this.ordinalPosition, viewColumn.getOrdinalPosition()); } + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index 3cdb01d7d38477cc8a77b4e12ed9af61d04ecfba..1e2aa72b924cdd6c1a37aa5c98f64728ba92fc20 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 @@ -38,12 +38,12 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Table { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "ID", updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(updatable = false, nullable = false) - private Long tdbid; + private UUID tdbid; @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") @@ -128,5 +128,12 @@ public class Table { @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java index 9f4c4e0606802a475e5873e3d0ebc57455a6a0e2..8d169590626f2ee4e07694938d49f0bf17ae36af 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 @@ -4,6 +4,7 @@ import at.tuwien.entities.database.table.Table; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -11,6 +12,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.math.BigDecimal; import java.time.Instant; import java.util.List; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -31,9 +33,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumn implements Comparable<TableColumn> { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @ToString.Exclude @EqualsAndHashCode.Exclude @@ -129,4 +131,11 @@ public class TableColumn implements Comparable<TableColumn> { public int compareTo(TableColumn tableColumn) { return Integer.compare(this.ordinalPosition, tableColumn.getOrdinalPosition()); } + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java index 5a9e8292be0af3e99050bc87be1ba7b8b9756bf7..edf39d84e36a41fdf9d783fb3c5fdaea4fd920cf 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 @@ -3,11 +3,13 @@ package at.tuwien.entities.database.table.columns; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; import java.util.List; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -29,9 +31,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumnConcept { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(updatable = false, nullable = false, columnDefinition = "TEXT") private String uri; @@ -57,4 +59,11 @@ public class TableColumnConcept { }, joinColumns = @JoinColumn(name = "id", referencedColumnName = "id")) private List<TableColumn> columns; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java index 7e8fe915b3b9de49e53eb0806da1f5ed03608a1d..9d48062d33a3489892fee857b0c06440336e362c 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 @@ -3,11 +3,13 @@ package at.tuwien.entities.database.table.columns; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; import java.util.List; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -29,9 +31,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumnUnit { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(updatable = false, nullable = false, columnDefinition = "TEXT") private String uri; @@ -57,4 +59,11 @@ public class TableColumnUnit { }, joinColumns = @JoinColumn(name = "id", referencedColumnName = "id")) private List<TableColumn> columns; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java index 76de9463cfa37048fb45d2b091b472190124ff1b..92271b32328ed66215311389de57413b722d5ebe 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 @@ -3,11 +3,11 @@ package at.tuwien.entities.database.table.constraints.foreignKey; import at.tuwien.entities.database.table.Table; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.util.List; - -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -21,9 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ForeignKey { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "fkid", updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(name = "fkid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()") + private UUID id; @Column(updatable = false, nullable = false) private String name; @@ -54,4 +54,11 @@ public class ForeignKey { @Column(columnDefinition = "VARCHAR(50)") @Enumerated(EnumType.STRING) private ReferenceType onDelete; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java index ed2691fc524a3de33788ed977b1ba213b18b5bfe..850b25ac5ca3d156600c5c0b5be92663c33f2cca 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 @@ -3,8 +3,11 @@ package at.tuwien.entities.database.table.constraints.foreignKey; import at.tuwien.entities.database.table.columns.TableColumn; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.util.UUID; + import static jakarta.persistence.GenerationType.IDENTITY; @Data @@ -21,9 +24,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ForeignKeyReference { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @ToString.Exclude @EqualsAndHashCode.Exclude @@ -45,4 +48,11 @@ public class ForeignKeyReference { }) private TableColumn referencedColumn; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java index 407e2fb7f3f98b6a8b65d28636c92afaceb3e69c..26e0f132991a5b8bf7a1b2f572575f8f6a48820f 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 @@ -4,9 +4,10 @@ import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -20,9 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class PrimaryKey { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "pkid", updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(name = "pkid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()") + private UUID id; @ToString.Exclude @EqualsAndHashCode.Exclude @@ -41,4 +42,11 @@ public class PrimaryKey { @JoinColumn(name = "cid", referencedColumnName = "id", nullable = false) }) private TableColumn column; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java index c0dfc467109cf794dda89925393b442286254da5..e1ad4c4c4d167bf5ccf21b33d5a22e67d424d988 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 @@ -4,11 +4,11 @@ import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.util.List; - -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -22,9 +22,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Unique { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(name = "uid", updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(name = "uid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()") + private UUID id; @Column(updatable = false, nullable = false) private String name; @@ -51,4 +51,11 @@ public class Unique { } ) private List<TableColumn> columns; + + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java index 1b0692ae50adf8d6ca280a5403908cb3e8d65f42..cdbcf797773cc2d7e9d7dbdecb6dc0fcb0d6afae 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java @@ -2,8 +2,11 @@ package at.tuwien.entities.identifier; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import java.util.UUID; + import static jakarta.persistence.GenerationType.IDENTITY; @Data @@ -18,10 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Creator { @Id - @org.springframework.data.annotation.Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(name = "given_names") private String firstname; @@ -104,4 +106,11 @@ public class Creator { return this.getFirstname().charAt(0) + ". " + this.getLastname(); } + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index b98a1b8c6b7509ef0772f69e2af343b1b63d386e..43dbb849e341c7aba5dbfc4a3097115ef1ce378b 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 @@ -39,18 +39,18 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Identifier implements Serializable { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; - @Column(name = "qid") - private Long queryId; + @Column(name = "qid", columnDefinition = "VARCHAR(36)") + private UUID queryId; - @Column(name = "tid") - private Long tableId; + @Column(name = "tid", columnDefinition = "VARCHAR(36)") + private UUID tableId; - @Column(name = "vid") - private Long viewId; + @Column(name = "vid", columnDefinition = "VARCHAR(36)") + private UUID viewId; /** * Creators are created/updated/deleted by the Identifier entity. @@ -176,6 +176,13 @@ public class Identifier implements Serializable { @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java index af684d2347b20bd54a959040b7b07937fc69952f..32adddccfc7c73750a1fd516edc6c4638d150739 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java @@ -3,9 +3,11 @@ package at.tuwien.entities.identifier; import at.tuwien.entities.database.LanguageType; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.io.Serializable; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -21,10 +23,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierDescription implements Serializable { @Id - @org.springframework.data.annotation.Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false, columnDefinition = "TEXT") private String description; @@ -44,6 +45,13 @@ public class IdentifierDescription implements Serializable { }) private Identifier identifier; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java index c5720223467f5e52ac54354c11dc21baf36fcd0d..5b69b2e8f70a947dad40460609b0ee5ffc530dfa 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java @@ -2,9 +2,11 @@ package at.tuwien.entities.identifier; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.io.Serializable; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -20,9 +22,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierFunder implements Serializable { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false) private String funderName; @@ -50,6 +52,13 @@ public class IdentifierFunder implements Serializable { }) private Identifier identifier; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java index cecc2c5c9804114529be0c6543de1ea69f5668aa..769ff12a678a9f18d10f877e29461585f5cd2b59 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java @@ -3,9 +3,11 @@ package at.tuwien.entities.identifier; import at.tuwien.entities.database.LanguageType; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.io.Serializable; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -21,9 +23,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierTitle implements Serializable { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false, columnDefinition = "TEXT") private String title; @@ -43,6 +45,13 @@ public class IdentifierTitle implements Serializable { }) private Identifier identifier; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java index e8b1acde125265bdda9d94918daf0bf478ff4904..24ac7adb1fe1fabd49491a320b29256f8178a0de 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java @@ -2,9 +2,10 @@ package at.tuwien.entities.identifier; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import static jakarta.persistence.GenerationType.IDENTITY; +import java.util.UUID; @Data @Entity @@ -14,15 +15,15 @@ import static jakarta.persistence.GenerationType.IDENTITY; @NoArgsConstructor @EqualsAndHashCode @EntityListeners(AuditingEntityListener.class) -@Table(name = "mdb_related_identifiers", uniqueConstraints = { +@Table(name = "mdb_identifier_related", uniqueConstraints = { @UniqueConstraint(columnNames = {"id", "pid"}) }) public class RelatedIdentifier { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false) private String value; @@ -42,6 +43,13 @@ public class RelatedIdentifier { }) private Identifier identifier; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java index f22cee71a7a3dc4a97c8294619b5ec8931db1714..8a5f2d76a3d4b73f89d7223af8df88c7ac7efdb9 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java @@ -2,9 +2,11 @@ package at.tuwien.entities.maintenance; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -16,16 +18,16 @@ import static jakarta.persistence.GenerationType.IDENTITY; @NoArgsConstructor @EqualsAndHashCode @EntityListeners(AuditingEntityListener.class) -@Table(name = "mdb_banner_messages") +@Table(name = "mdb_messages") @NamedQueries({ @NamedQuery(name = "BannerMessage.findByActive", query = "select m from BannerMessage m where (m.displayStart = null and m.displayEnd = null) or (m.displayStart = null and m.displayEnd >= NOW()) or (m.displayStart <= NOW() and m.displayEnd >= NOW()) or (m.displayStart <= NOW() and m.displayEnd = null)") }) public class BannerMessage { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false, columnDefinition = "ENUM('ERROR','WARNING','INFO')") @Enumerated(EnumType.STRING) @@ -46,4 +48,11 @@ public class BannerMessage { @Column(columnDefinition = "TIMESTAMP") private Instant displayEnd; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java index 576aab1e375028a9a776ae96cb0ea983f84e7274..664b284c3d087250fee1623a624f77305e19c1eb 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 @@ -2,11 +2,13 @@ package at.tuwien.entities.semantics; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.Instant; +import java.util.UUID; import static jakarta.persistence.GenerationType.IDENTITY; @@ -27,9 +29,9 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Ontology { @Id - @GeneratedValue(strategy = IDENTITY) - @Column(updatable = false, nullable = false) - private Long id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(columnDefinition = "VARCHAR(36)") + private UUID id; @Column(nullable = false, unique = true) private String uri; @@ -56,4 +58,11 @@ public class Ontology { @Column(columnDefinition = "TIMESTAMP") private Instant lastModified; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java index 156fc3b4c8efbd44e4d8389b50a7cb0f65814aac..44d36e5e03c1e38a3fd9ecd807abce21116eb768 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 @@ -27,7 +27,7 @@ public class User { @Id @JdbcTypeCode(java.sql.Types.VARCHAR) - @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") + @Column(name = "ID", columnDefinition = "VARCHAR(36)") private UUID id; @JdbcTypeCode(java.sql.Types.VARCHAR) @@ -68,4 +68,11 @@ public class User { @Column(name = "is_internal", nullable = false, updatable = false, columnDefinition = "bool default false") private Boolean isInternal; + @PrePersist + public void prePersist() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + } diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml index a9c3a1f388e6f1e7e55c6e1ec47f4e3d7acf70fc..54c464b11a31cea0e588f797fa38012c573a1d02 100644 --- a/dbrepo-metadata-service/oai/pom.xml +++ b/dbrepo-metadata-service/oai/pom.xml @@ -6,12 +6,12 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-oai</artifactId> <name>dbrepo-metadata-service-oai</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies/> diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 54115d9e16441c6f651c9dad9579089bee2d6e1e..d294d8583b08b34fc56c835c08bac25229a6a9b7 100644 --- a/dbrepo-metadata-service/pom.xml +++ b/dbrepo-metadata-service/pom.xml @@ -11,7 +11,7 @@ <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service</artifactId> <name>dbrepo-metadata-service</name> - <version>1.6.5</version> + <version>1.7.0</version> <description>Service that manages the metadata</description> @@ -27,7 +27,7 @@ <module>report</module> </modules> - <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url> <developers> <developer> <name>Martin Weise</name> diff --git a/dbrepo-metadata-service/report/pom.xml b/dbrepo-metadata-service/report/pom.xml index f78cb7c2599f35692bbf13b8e001c683eadb01d3..6bcb8d579b67439ad4bcd590cf5af3819f70218e 100644 --- a/dbrepo-metadata-service/report/pom.xml +++ b/dbrepo-metadata-service/report/pom.xml @@ -6,12 +6,12 @@ <parent> <artifactId>dbrepo-metadata-service</artifactId> <groupId>at.tuwien</groupId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-report</artifactId> <name>dbrepo-metadata-service-report</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml index 696b3c223ae7a5ac113efe544b21a6b5ba67f3a0..4d3b5f933d2c39674b2f9e58461387c0a2cffdb8 100644 --- a/dbrepo-metadata-service/repositories/pom.xml +++ b/dbrepo-metadata-service/repositories/pom.xml @@ -6,12 +6,12 @@ <parent> <artifactId>dbrepo-metadata-service</artifactId> <groupId>at.tuwien</groupId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-repositories</artifactId> <name>dbrepo-metadata-service-repositories</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java index cff05b8d6f1d670398703c12f79d86aefe8be1be..ebe69cd7d73efece9c5dc1cf692480cfa0a5a8ac 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java @@ -318,7 +318,7 @@ public interface MetadataMapper { Identifier identifierDtoToIdentifier(IdentifierDto data); @Mappings({ - @Mapping(target = "databaseId", source = "database.id"), + @Mapping(target = "databaseId", source = "database.id") }) IdentifierDto identifierToIdentifierDto(Identifier data); @@ -821,13 +821,14 @@ public interface MetadataMapper { } @Mappings({ + @Mapping(target = "vdbid", source = "database.id"), @Mapping(target = "database.views", ignore = true), @Mapping(target = "database.tables", ignore = true) }) ViewDto viewToViewDto(View data); @Mappings({ - @Mapping(target = "databaseId", source = "view.vdbid"), + @Mapping(target = "databaseId", source = "view.database.id"), }) ViewColumnDto viewColumnToViewColumnDto(ViewColumn data); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java index 8d7aee77e712a3c47f9ebc676457c158a9a13381..c12dc7b83f562ec1237dc7941db60700a78f1a59 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java @@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.UUID; @Repository -public interface BannerMessageRepository extends JpaRepository<BannerMessage, Long> { +public interface BannerMessageRepository extends JpaRepository<BannerMessage, UUID> { List<BannerMessage> findByActive(); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java index c77641200c7856dc3300cbba66f008265f17a60f..1e70cfdfb245c7de9cda405444c6bd43176cca14 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java @@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; +import java.util.UUID; @Repository -public interface ConceptRepository extends JpaRepository<TableColumnConcept, Long> { +public interface ConceptRepository extends JpaRepository<TableColumnConcept, UUID> { Optional<TableColumnConcept> findByUri(String uri); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java index 8155aef9cc3f67eb83c52ed5bb15c4a67c50c208..536802cf4165e746dc8a27ed796c058ed86d44e5 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java @@ -7,9 +7,10 @@ import org.springframework.stereotype.Repository; import java.util.List; import java.util.Optional; +import java.util.UUID; @Repository -public interface ContainerRepository extends JpaRepository<Container, Long> { +public interface ContainerRepository extends JpaRepository<Container, UUID> { Optional<Container> findByInternalName(String internalName); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java index 38a0a8044162cbf3abe9178de26fca4a21e7ee4c..67c0df76ee417054e5ac221754ede3cba3d9c39b 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java @@ -9,7 +9,7 @@ import java.util.Optional; import java.util.UUID; @Repository -public interface DatabaseRepository extends JpaRepository<Database, Long> { +public interface DatabaseRepository extends JpaRepository<Database, UUID> { List<Database> findAllDesc(); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java index 12b309ec521e84c7eaed1bf446442498bfd4c481..9e49f2aa1c5e530dfe60a65aa1e1b4a35fdb0e01 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java @@ -6,9 +6,10 @@ import org.springframework.stereotype.Repository; import java.util.List; import java.util.Optional; +import java.util.UUID; @Repository -public interface IdentifierRepository extends JpaRepository<Identifier, Long> { +public interface IdentifierRepository extends JpaRepository<Identifier, UUID> { /** * Finds identifiers by given database id. @@ -16,7 +17,7 @@ public interface IdentifierRepository extends JpaRepository<Identifier, Long> { * @param databaseId The database id. * @return List of matching identifiers. */ - List<Identifier> findByDatabaseId(Long databaseId); + List<Identifier> findByDatabaseId(UUID databaseId); /** * Finds identifiers by given database id and query id. @@ -25,11 +26,11 @@ public interface IdentifierRepository extends JpaRepository<Identifier, Long> { * @param queryId The query id. * @return List of matching identifiers. */ - List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId); + List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId); - List<Identifier> findDatabaseIdentifier(Long databaseId); + List<Identifier> findDatabaseIdentifier(UUID databaseId); - List<Identifier> findSubsetIdentifier(Long databaseId, Long queryId); + List<Identifier> findSubsetIdentifier(UUID databaseId, UUID queryId); List<Identifier> findAllDatabaseIdentifiers(); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java index 23fa40c5be1fd3a6e9e430fafcaccc896e37970d..6282ed90405ba08a69cadb9a8ec0a7fd01f17888 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java @@ -4,11 +4,11 @@ import at.tuwien.entities.container.image.ContainerImage; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.List; import java.util.Optional; +import java.util.UUID; @Repository -public interface ImageRepository extends JpaRepository<ContainerImage, Long> { +public interface ImageRepository extends JpaRepository<ContainerImage, UUID> { Optional<ContainerImage> findByNameAndVersion(String name, String version); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java index a7fad56076dc454ad1a67a1350ce5d6d2fa926ad..69b4e204be72c14d60f45ff9535fa89bc9de7629 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java @@ -6,9 +6,10 @@ import org.springframework.stereotype.Repository; import java.util.List; import java.util.Optional; +import java.util.UUID; @Repository -public interface OntologyRepository extends JpaRepository<Ontology, Long> { +public interface OntologyRepository extends JpaRepository<Ontology, UUID> { List<Ontology> findAllProcessable(); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java index fda9e78ce537b20201ecf88487171a9bb956ea16..bc126eaa27660e84b9e71d5adea18859e1be4fe7 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java @@ -4,10 +4,12 @@ import at.tuwien.entities.database.table.Table; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.UUID; + /** * TO BE USED READONLY */ @Repository -public interface TableRepository extends JpaRepository<Table, Long> { +public interface TableRepository extends JpaRepository<Table, UUID> { } diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java index 3bcb0c0a49c0d73ff7d20af29fee6a5c17226d3d..6676410730a1f562638e1bc32053b2b8a5fc5c2b 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java @@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; +import java.util.UUID; @Repository -public interface UnitRepository extends JpaRepository<TableColumnUnit, Long> { +public interface UnitRepository extends JpaRepository<TableColumnUnit, UUID> { Optional<TableColumnUnit> findByUri(String uri); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java index de678d90ae99d41a76987be29b1a001929222ceb..50544822e50db796ca862be696640b8edf3c73a1 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java @@ -4,10 +4,12 @@ import at.tuwien.entities.database.View; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.UUID; + /** * TO BE USED READONLY */ @Repository -public interface ViewRepository extends JpaRepository<View, Long> { +public interface ViewRepository extends JpaRepository<View, UUID> { } diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml index f3d420f35ec25fb27dd66a8df3a90561e649b33d..9e9f23d11fdbab4fc2308bead597a7626272ceb1 100644 --- a/dbrepo-metadata-service/rest-service/pom.xml +++ b/dbrepo-metadata-service/rest-service/pom.xml @@ -6,12 +6,12 @@ <parent> <artifactId>dbrepo-metadata-service</artifactId> <groupId>at.tuwien</groupId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-rest-service</artifactId> <name>dbrepo-metadata-service-rest</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java index 9c109c87d68664793b3033d7be123d71a7b02d69..79dc5fd8e987dfad2d8e59dcd14ac156803fab91 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java @@ -38,15 +38,15 @@ public class AccessEndpoint extends AbstractEndpoint { private final UserService userService; private final AccessService accessService; - private final MetadataMapper databaseMapper; + private final MetadataMapper metadataMapper; private final DatabaseService databaseService; @Autowired - public AccessEndpoint(UserService userService, AccessService accessService, MetadataMapper databaseMapper, + public AccessEndpoint(UserService userService, AccessService accessService, MetadataMapper metadataMapper, DatabaseService databaseService) { this.userService = userService; this.accessService = accessService; - this.databaseMapper = databaseMapper; + this.metadataMapper = metadataMapper; this.databaseService = databaseService; } @@ -89,7 +89,7 @@ public class AccessEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseAccessDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseAccessDto> create(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @Valid @RequestBody CreateAccessDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceException, @@ -151,7 +151,7 @@ public class AccessEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @Valid @RequestBody CreateAccessDto data, @NotNull Principal principal) throws NotAllowedException, @@ -203,7 +203,7 @@ public class AccessEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseAccessDto> find(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseAccessDto> find(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @NotNull Principal principal) throws DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, NotAllowedException { @@ -219,7 +219,7 @@ public class AccessEndpoint extends AbstractEndpoint { final Database database = databaseService.findById(databaseId); final User user = userService.findById(userId); final DatabaseAccess access = accessService.find(database, user); - return ResponseEntity.ok(databaseMapper.databaseAccessToDatabaseAccessDto(access)); + return ResponseEntity.ok(metadataMapper.databaseAccessToDatabaseAccessDto(access)); } @DeleteMapping("/{userId}") @@ -258,7 +258,7 @@ public class AccessEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") UUID databaseId, @PathVariable("userId") UUID userId, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java index b5d153318cc9688d13784a80df41c6f28a862de3..dc588c06073144702a5f6c645323a36f611e9505 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java @@ -1,8 +1,8 @@ package at.tuwien.endpoints; import at.tuwien.api.container.ContainerBriefDto; -import at.tuwien.api.container.CreateContainerDto; import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.container.Container; import at.tuwien.exception.ContainerAlreadyExistsException; @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; @@ -129,7 +130,7 @@ public class ContainerEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("containerId") Long containerId, + public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("containerId") UUID containerId, Principal principal) throws ContainerNotFoundException { log.debug("endpoint find container, containerId={}", containerId); @@ -139,7 +140,8 @@ public class ContainerEndpoint extends AbstractEndpoint { log.trace("attach privileged credential information"); headers.set("X-Username", container.getPrivilegedUsername()); headers.set("X-Password", container.getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Jdbc-Method", container.getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"); } return ResponseEntity.ok() .headers(headers) @@ -167,7 +169,7 @@ public class ContainerEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("containerId") Long containerId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("containerId") UUID containerId) throws ContainerNotFoundException { log.debug("endpoint delete container, containerId={}", containerId); containerService.remove(containerService.find(containerId)); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java index ccfd23e1ceda849cef32b6620ea4e21f36458cf0..ec0810b23ca31157fd143cfb402e0cbf148f6528 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java @@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; import java.util.Optional; +import java.util.UUID; @Log4j2 @RestController @@ -160,7 +161,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { ContainerQuotaException { log.debug("endpoint create database, data.name={}", data.getName()); final Container container = containerService.find(data.getCid()); - if (container.getDatabases().size() + 1 > container.getQuota()) { + if (container.getQuota() != null && container.getDatabases().size() + 1 > container.getQuota()) { log.error("Failed to create database: quota of {} exceeded", container.getQuota()); throw new ContainerQuotaException("Failed to create database: quota of " + container.getQuota() + " exceeded"); } @@ -209,7 +210,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") UUID databaseId, @NotNull Principal principal) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, MalformedException, @@ -258,7 +259,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseBriefDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") UUID databaseId, @NotNull Principal principal) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, ViewNotFoundException { @@ -311,7 +312,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> visibility(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseBriefDto> visibility(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody DatabaseModifyVisibilityDto data, @NotNull Principal principal) throws DatabaseNotFoundException, NotAllowedException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { @@ -365,7 +366,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> transfer(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseBriefDto> transfer(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody DatabaseTransferDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, @@ -421,7 +422,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> modifyImage(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseBriefDto> modifyImage(@NotNull @PathVariable("databaseId") UUID databaseId, @Valid @RequestBody DatabaseModifyImageDto data, @NotNull Principal principal) throws NotAllowedException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, @@ -456,7 +457,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}) }) - public ResponseEntity<byte[]> findPreviewImage(@NotNull @PathVariable("databaseId") Long databaseId) + public ResponseEntity<byte[]> findPreviewImage(@NotNull @PathVariable("databaseId") UUID databaseId) throws DatabaseNotFoundException { log.debug("endpoint get database preview image, databaseId={}", databaseId); return ResponseEntity.ok() @@ -490,7 +491,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}) }) - public ResponseEntity<DatabaseDto> findById(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<DatabaseDto> findById(@NotNull @PathVariable("databaseId") UUID databaseId, Principal principal) throws DatabaseNotFoundException, NotAllowedException { log.debug("endpoint find database, databaseId={}", databaseId); @@ -547,7 +548,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { if (isSystem(principal)) { headers.set("X-Username", database.getContainer().getPrivilegedUsername()); headers.set("X-Password", database.getContainer().getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Jdbc-Method", database.getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"); } else { removeInternalData(dto.getContainer()); } diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java index b3d699086ee93b943801a3139a2e2488dc9dcc8c..31dd1e542d53112ff42b49a6e5f6269255088ac6 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java @@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; import java.util.Objects; +import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -90,10 +91,10 @@ public class IdentifierEndpoint extends AbstractEndpoint { }) public ResponseEntity<?> findAll(@Valid @RequestParam(value = "type", required = false) IdentifierTypeDto type, @Valid @RequestParam(value = "status", required = false) IdentifierStatusTypeDto status, - @Valid @RequestParam(value = "dbid", required = false) Long dbid, - @Valid @RequestParam(value = "qid", required = false) Long qid, - @Valid @RequestParam(value = "vid", required = false) Long vid, - @Valid @RequestParam(value = "tid", required = false) Long tid, + @Valid @RequestParam(value = "dbid", required = false) UUID dbid, + @Valid @RequestParam(value = "qid", required = false) UUID qid, + @Valid @RequestParam(value = "vid", required = false) UUID vid, + @Valid @RequestParam(value = "tid", required = false) UUID tid, @RequestHeader(HttpHeaders.ACCEPT) String accept, Principal principal) { log.debug("endpoint find identifiers, type={}, status={}, dbid={}, qid={}, vid={}, tid={}, accept={}", type, @@ -185,7 +186,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<?> find(@Valid @PathVariable("identifierId") Long identifierId, + public ResponseEntity<?> find(@Valid @PathVariable("identifierId") UUID identifierId, @RequestHeader(HttpHeaders.ACCEPT) String accept, Principal principal) throws IdentifierNotFoundException, DataServiceException, DataServiceConnectionException, MalformedException, FormatNotAvailableException, @@ -278,7 +279,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("identifierId") Long identifierId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("identifierId") UUID identifierId) throws IdentifierNotFoundException, NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { @@ -332,7 +333,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<IdentifierDto> publish(@Valid @PathVariable("identifierId") Long identifierId) + public ResponseEntity<IdentifierDto> publish(@Valid @PathVariable("identifierId") UUID identifierId) throws SearchServiceException, DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, DataServiceConnectionException, IdentifierNotFoundException, ExternalServiceException { log.debug("endpoint publish identifier, identifierId={}", identifierId); @@ -380,7 +381,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<IdentifierDto> save(@NotNull @PathVariable("identifierId") Long identifierId, + public ResponseEntity<IdentifierDto> save(@NotNull @PathVariable("identifierId") UUID identifierId, @NotNull @Valid @RequestBody IdentifierSaveDto data, @NotNull Principal principal) throws UserNotFoundException, DatabaseNotFoundException, MalformedException, NotAllowedException, DataServiceException, diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java index 2aaad860a8bbb70e4d7023b00587cc0ad70b7e94..62c00d1ee8d4ef5a395b22e77595859c44774c56 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java @@ -10,7 +10,7 @@ import at.tuwien.exception.ImageAlreadyExistsException; import at.tuwien.exception.ImageInvalidException; import at.tuwien.exception.ImageNotFoundException; import at.tuwien.mapper.MetadataMapper; -import at.tuwien.service.impl.ImageServiceImpl; +import at.tuwien.service.ImageService; import io.micrometer.observation.annotation.Observed; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; +import java.util.UUID; @Log4j2 @RestController @@ -39,11 +40,11 @@ import java.util.List; @RequestMapping(path = "/api/image") public class ImageEndpoint extends AbstractEndpoint { + private final ImageService imageService; private final MetadataMapper metadataMapper; - private final ImageServiceImpl imageService; @Autowired - public ImageEndpoint(ImageServiceImpl imageService, MetadataMapper metadataMapper) { + public ImageEndpoint(ImageService imageService, MetadataMapper metadataMapper) { this.imageService = imageService; this.metadataMapper = metadataMapper; } @@ -119,7 +120,7 @@ public class ImageEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ImageDto> findById(@NotNull @PathVariable("imageId") Long imageId) throws ImageNotFoundException { + public ResponseEntity<ImageDto> findById(@NotNull @PathVariable("imageId") UUID imageId) throws ImageNotFoundException { log.debug("endpoint find image, imageId={}", imageId); return ResponseEntity.ok() .body(metadataMapper.containerImageToImageDto(imageService.find(imageId))); @@ -144,7 +145,7 @@ public class ImageEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ImageDto> update(@NotNull @PathVariable("imageId") Long imageId, + public ResponseEntity<ImageDto> update(@NotNull @PathVariable("imageId") UUID imageId, @RequestBody @Valid ImageChangeDto changeDto) throws ImageNotFoundException { log.debug("endpoint update image, imageId={}, changeDto={}", imageId, changeDto); @@ -170,7 +171,7 @@ public class ImageEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("imageId") Long imageId) throws ImageNotFoundException { + public ResponseEntity<Void> delete(@NotNull @PathVariable("imageId") UUID imageId) throws ImageNotFoundException { log.debug("endpoint delete image, imageId={}", imageId); imageService.delete(imageService.find(imageId)); return ResponseEntity.accepted() diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java index 0aeeac9401c796b82060d363a5e1ed01e6ac0e61..656279a86d680877849d9d2aa6fce327b6ba8ecb 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java @@ -27,6 +27,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.UUID; @Log4j2 @CrossOrigin(origins = "*") @@ -83,7 +84,7 @@ public class MessageEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<BannerMessageDto> find(@NotNull @PathVariable("messageId") Long messageId) + public ResponseEntity<BannerMessageDto> find(@NotNull @PathVariable("messageId") UUID messageId) throws MessageNotFoundException { log.debug("endpoint find one maintenance message, messageId={}", messageId); return ResponseEntity.ok(metadataMapper.bannerMessageToBannerMessageDto( @@ -128,7 +129,7 @@ public class MessageEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<BannerMessageDto> update(@NotNull @PathVariable("messageId") Long messageId, + public ResponseEntity<BannerMessageDto> update(@NotNull @PathVariable("messageId") UUID messageId, @Valid @RequestBody BannerMessageUpdateDto data) throws MessageNotFoundException { log.debug("endpoint update maintenance message, messageId={}, data={}", messageId, data); @@ -154,7 +155,7 @@ public class MessageEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("messageId") Long messageId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("messageId") UUID messageId) throws MessageNotFoundException { log.debug("endpoint delete maintenance message, messageId={}", messageId); final BannerMessage message = bannerMessageService.find(messageId); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java index 7bc6bc037e75501bfd7de5006150550a7a42366b..c723568556ce097c600ece7b8aad9b57d3914b77 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java @@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; +import java.util.UUID; @Log4j2 @CrossOrigin(origins = "*") @@ -83,7 +84,7 @@ public class OntologyEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<OntologyDto> find(@NotNull @PathVariable("ontologyId") Long ontologyId) + public ResponseEntity<OntologyDto> find(@NotNull @PathVariable("ontologyId") UUID ontologyId) throws OntologyNotFoundException { log.debug("endpoint find all ontologies, ontologyId={}", ontologyId); return ResponseEntity.ok(metadataMapper.ontologyToOntologyDto(ontologyService.find(ontologyId))); @@ -127,7 +128,7 @@ public class OntologyEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<OntologyDto> update(@NotNull @PathVariable("ontologyId") Long ontologyId, + public ResponseEntity<OntologyDto> update(@NotNull @PathVariable("ontologyId") UUID ontologyId, @NotNull @Valid @RequestBody OntologyModifyDto data) throws OntologyNotFoundException { log.debug("endpoint update ontology, ontologyId={}, data={}", ontologyId, data); @@ -153,7 +154,7 @@ public class OntologyEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("ontologyId") Long ontologyId) + public ResponseEntity<Void> delete(@NotNull @PathVariable("ontologyId") UUID ontologyId) throws OntologyNotFoundException { log.debug("endpoint delete ontology, ontologyId={}", ontologyId); ontologyService.delete(ontologyService.find(ontologyId)); @@ -194,7 +195,7 @@ public class OntologyEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<EntityDto>> find(@NotNull @PathVariable("ontologyId") Long id, + public ResponseEntity<List<EntityDto>> find(@NotNull @PathVariable("ontologyId") UUID id, @RequestParam(name = "label", required = false) String label, @RequestParam(name = "uri", required = false) String uri) throws OntologyNotFoundException, UriMalformedException, FilterBadRequestException, MalformedException { 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 32075fb5d8ef41d8c36b444a7c645e1ef55c7cbd..c3f4ad1a71cf2d77bcbe9f241bb9150dd709da00 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 @@ -37,6 +37,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; @Log4j2 @@ -89,7 +90,7 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<TableBriefDto>> list(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<List<TableBriefDto>> list(@NotNull @PathVariable("databaseId") UUID databaseId, Principal principal) throws NotAllowedException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException { log.debug("endpoint list tables, databaseId={}", databaseId); @@ -142,8 +143,8 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<EntityDto>> analyseTable(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<List<EntityDto>> analyseTable(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @NotNull Principal principal) throws MalformedException, TableNotFoundException, DatabaseNotFoundException, NotAllowedException { log.debug("endpoint analyse table semantics, databaseId={}, tableId={}, principal.name={}", databaseId, tableId, @@ -194,8 +195,8 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> updateStatistic(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> updateStatistic(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @NotNull Principal principal) throws TableNotFoundException, DatabaseNotFoundException, SearchServiceException, NotAllowedException, SearchServiceConnectionException, MalformedException, DataServiceException, DataServiceConnectionException { @@ -251,9 +252,9 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ColumnDto> updateColumn(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, - @NotNull @PathVariable("columnId") Long columnId, + public ResponseEntity<ColumnDto> updateColumn(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, + @NotNull @PathVariable("columnId") UUID columnId, @NotNull @Valid @RequestBody ColumnSemanticsUpdateDto updateDto, @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, @@ -301,9 +302,9 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<TableColumnEntityDto>> analyseTableColumn(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, - @NotNull @PathVariable("columnId") Long columnId, + public ResponseEntity<List<TableColumnEntityDto>> analyseTableColumn(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, + @NotNull @PathVariable("columnId") UUID columnId, @NotNull Principal principal) throws MalformedException, TableNotFoundException, DatabaseNotFoundException { log.debug("endpoint analyse table column semantics, databaseId={}, tableId={}, columnId={}, principal.name={}", @@ -358,7 +359,7 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") UUID databaseId, @NotNull @Valid @RequestBody CreateTableDto data, @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, @@ -413,8 +414,8 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @NotNull @Valid @RequestBody TableUpdateDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, @@ -458,8 +459,8 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableDto> findById(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<TableDto> findById(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, Principal principal) throws TableNotFoundException, DatabaseNotFoundException, UserNotFoundException, NotAllowedException { log.debug("endpoint find table, databaseId={}, tableId={}", databaseId, tableId); @@ -489,7 +490,8 @@ public class TableEndpoint extends AbstractEndpoint { if (isSystem(principal)) { headers.set("X-Username", table.getDatabase().getContainer().getPrivilegedUsername()); headers.set("X-Password", table.getDatabase().getContainer().getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Jdbc-Method", table.getDatabase().getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"); } else { removeInternalData(dto.getDatabase().getContainer()); } @@ -534,8 +536,8 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, + public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("tableId") UUID tableId, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, TableNotFoundException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java index e8b40de8b2bfa05f9901a01ce0e269fbbffefe41..2214343ee67ae5e8c0d1acca7857e08cb08f275b 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java @@ -35,6 +35,7 @@ import org.springframework.web.bind.annotation.*; import java.security.Principal; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; @Log4j2 @@ -75,7 +76,7 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<List<ViewBriefDto>> findAll(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<List<ViewBriefDto>> findAll(@NotNull @PathVariable("databaseId") UUID databaseId, Principal principal) throws UserNotFoundException, DatabaseNotFoundException { log.debug("endpoint find all views, databaseId={}", databaseId); @@ -136,7 +137,7 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ViewBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + public ResponseEntity<ViewBriefDto> create(@NotNull @PathVariable("databaseId") UUID databaseId, @NotNull @Valid @RequestBody CreateViewDto data, @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, @@ -184,8 +185,8 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ViewDto> find(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, + public ResponseEntity<ViewDto> find(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId, Principal principal) throws DatabaseNotFoundException, ViewNotFoundException { log.debug("endpoint find view, databaseId={}, viewId={}", databaseId, viewId); @@ -200,7 +201,8 @@ public class ViewEndpoint extends AbstractEndpoint { headers.set("X-Type", database.getContainer().getImage().getJdbcMethod()); headers.set("X-Database", database.getInternalName()); headers.set("X-View", view.getInternalName()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View"); + headers.set("X-Jdbc-Method", view.getDatabase().getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method"); } final ViewDto dto = metadataMapper.viewToViewDto(view); if (!isSystem(principal)) { @@ -252,8 +254,8 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, + public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { @@ -305,8 +307,8 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ViewBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, + public ResponseEntity<ViewBriefDto> update(@NotNull @PathVariable("databaseId") UUID databaseId, + @NotNull @PathVariable("viewId") UUID viewId, @NotNull @Valid @RequestBody ViewUpdateDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java index 376769e3c318eaabc93e2a65def2673d85d3e7d2..49b5d48de8602ad79473142a3f05e36c336d97b9 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java @@ -347,7 +347,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { assertNull(response.getBody()); } - protected void generic_find(Long databaseId, Database database, DatabaseAccess access, Principal principal, + protected void generic_find(UUID databaseId, Database database, DatabaseAccess access, Principal principal, User caller, UUID userId, User user) throws UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, NotAllowedException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java index 00185d9ea134c33eba73ba7c24a02ff2d606ab1d..bce95faff57132842796d47e19ba78ae2c2d4921 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java @@ -25,6 +25,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.doNothing; @@ -68,10 +69,11 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { /* test */ final ResponseEntity<ContainerDto> response = findById_generic(CONTAINER_1_ID, CONTAINER_1, USER_LOCAL_ADMIN_PRINCIPAL); - final HttpHeaders headers = response.getHeaders() ; + final HttpHeaders headers = response.getHeaders(); assertEquals(List.of(CONTAINER_1_PRIVILEGED_USERNAME), headers.get("X-Username")); assertEquals(List.of(CONTAINER_1_PRIVILEGED_PASSWORD), headers.get("X-Password")); - assertEquals(List.of("X-Username X-Password"), headers.get("Access-Control-Expose-Headers")); + assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Jdbc-Method")); + assertEquals(List.of("X-Username X-Password X-Jdbc-Method"), headers.get("Access-Control-Expose-Headers")); } @Test @@ -178,7 +180,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - public ResponseEntity<ContainerDto> findById_generic(Long containerId, Container container, Principal principal) + public ResponseEntity<ContainerDto> findById_generic(UUID containerId, Container container, Principal principal) throws ContainerNotFoundException { /* mock */ @@ -192,7 +194,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { return response; } - public void delete_generic(Long containerId, Container container) throws ContainerNotFoundException { + public void delete_generic(UUID containerId, Container container) throws ContainerNotFoundException { /* mock */ when(containerService.find(containerId)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java index 1340d552d1b8ff3da3be847704d3d9ccd328eabc..9978574d156702eabe253c5b785cc56002aa0074 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java @@ -743,7 +743,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { doNothing() .when(messageQueueService) .setVirtualHostPermissions(user); - when(databaseService.findById(anyLong())) + when(databaseService.findById(any(UUID.class))) .thenReturn(DATABASE_1); /* test */ @@ -752,7 +752,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - public void visibility_generic(Long databaseId, Database database, DatabaseModifyVisibilityDto data, + public void visibility_generic(UUID databaseId, Database database, DatabaseModifyVisibilityDto data, Principal principal) throws NotAllowedException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { @@ -774,7 +774,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - public DatabaseDto findById_generic(Long databaseId, Database database, Principal principal) + public DatabaseDto findById_generic(UUID databaseId, Database database, Principal principal) throws DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException, DataServiceException, UserNotFoundException, NotAllowedException { @@ -796,7 +796,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { return body; } - public ResponseEntity<byte[]> findPreviewImage_generic(Long databaseId, Database database) throws DatabaseNotFoundException { + public ResponseEntity<byte[]> findPreviewImage_generic(UUID databaseId, Database database) throws DatabaseNotFoundException { /* mock */ if (database != null) { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java index 419393b485096b84f6495bfcd6ce2910e0c9ae46..1e003041027ed22072d167eae81fab3a5d32c813 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java @@ -41,6 +41,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.security.Principal; import java.util.List; +import java.util.UUID; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -92,32 +93,32 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { public static Stream<Arguments> malformedDatabase_parameters() { return Stream.of( - Arguments.arguments("queryId", 9999L, null, null), - Arguments.arguments("viewId", null, 9999L, null), - Arguments.arguments("tableId", null, null, 9999L) + Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null), + Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null), + Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7") ); } public static Stream<Arguments> malformedSubset_parameters() { return Stream.of( Arguments.arguments("queryId", null, null, null), - Arguments.arguments("viewId", null, 9999L, null), - Arguments.arguments("tableId", null, null, 9999L) + Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null), + Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7") ); } public static Stream<Arguments> malformedView_parameters() { return Stream.of( - Arguments.arguments("queryId", 9999L, null, null), + Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null), Arguments.arguments("viewId", null, null, null), - Arguments.arguments("tableId", null, null, 9999L) + Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7") ); } public static Stream<Arguments> malformedTable_parameters() { return Stream.of( - Arguments.arguments("queryId", 9999L, null, null), - Arguments.arguments("viewId", null, 9999L, null), + Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null), + Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null), Arguments.arguments("tableId", null, null, null) ); } @@ -125,7 +126,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { public static Stream<Arguments> findAll_anonymousFilterDatabase_parameters() { return Stream.of( Arguments.arguments("dbid", DATABASE_1_ID, null, null, null, null, 1), - Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, null, 0), + Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, null, 1), Arguments.arguments("vid", DATABASE_1_ID, null, VIEW_1_ID, null, null, 0), Arguments.arguments("tid", DATABASE_1_ID, null, null, TABLE_1_ID, null, 0), Arguments.arguments("status_published", DATABASE_1_ID, null, null, null, "PUBLISHED", 1), @@ -143,7 +144,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { public static Stream<Arguments> findAll_filterDatabase_parameters() { return Stream.of( Arguments.arguments("database_dbid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL), - Arguments.arguments("database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, USER_1_PRINCIPAL), + Arguments.arguments("database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, USER_1_PRINCIPAL), Arguments.arguments("database_vid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, USER_1_PRINCIPAL), Arguments.arguments("database_tid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, USER_1_PRINCIPAL), Arguments.arguments("subset_dbid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL), @@ -159,7 +160,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { Arguments.arguments("table_vid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, USER_1_PRINCIPAL), Arguments.arguments("table_tid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 1, USER_1_PRINCIPAL), Arguments.arguments("anon_database_dbid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, null, 1, null), - Arguments.arguments("anon_database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, null), + Arguments.arguments("anon_database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, null), Arguments.arguments("anon_database_vid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, null), Arguments.arguments("anon_database_tid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, null), Arguments.arguments("anon_subset_dbid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, null, 1, null), @@ -210,8 +211,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("findAll_anonymousFilterDatabase_parameters") @WithAnonymousUser - public void findAll_anonymousFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, - Long tableId, IdentifierStatusTypeDto status, + public void findAll_anonymousFilterDatabase_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId, + UUID tableId, IdentifierStatusTypeDto status, Integer expectedSize) throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { @@ -239,7 +240,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("findAll_filterSubset_parameters") @WithMockUser(username = USER_2_USERNAME) - public void findAll_filterSubset_succeeds(String name, Long databaseId, Long queryId, Long viewId, Long tableId, + public void findAll_filterSubset_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId, UUID tableId, IdentifierStatusTypeDto status, Integer expectedSize) { /* mock */ @@ -258,8 +259,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("findAll_anonymousFilterDatabase_parameters") @WithAnonymousUser - public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, - Long tableId, IdentifierStatusTypeDto status, + public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId, + UUID tableId, IdentifierStatusTypeDto status, Integer expectedSize) throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { @@ -288,7 +289,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @MethodSource("findAll_filterDatabase_parameters") @WithAnonymousUser public void findAll_filterDatabase_succeeds(String name, IdentifierTypeDto type, IdentifierStatusTypeDto status, - Long databaseId, Long queryId, Long viewId, Long tableId, + UUID databaseId, UUID queryId, UUID viewId, UUID tableId, Integer expectedSize, Principal principal) throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { @@ -1115,7 +1116,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { final ResponseEntity<?> response = generic_find(null, null); assertEquals(HttpStatus.MOVED_PERMANENTLY, response.getStatusCode()); assertNotNull(response.getHeaders().get("Location")); - assertEquals(endpointConfig.getWebsiteUrl() + "/database/" + IDENTIFIER_1_DATABASE_ID + "/info?pid=" + IDENTIFIER_1_DATABASE_ID, + assertEquals(endpointConfig.getWebsiteUrl() + "/database/" + DATABASE_1_ID + "/info?pid=" + IDENTIFIER_1_ID, response.getHeaders().getFirst("Location")); } @@ -1148,7 +1149,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { SearchServiceException, SearchServiceConnectionException, TableNotFoundException, ExternalServiceException { /* mock */ - when(dataServiceGateway.findQuery(DATABASE_2_ID, IDENTIFIER_5_QUERY_ID)) + when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID)) .thenReturn(QUERY_2_DTO); /* test */ @@ -1158,12 +1159,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("malformedSubset_parameters") @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) - public void save_malformedSubset_fails(String name, Long queryId, Long viewId, Long tableId) { + public void save_malformedSubset_fails(String name, UUID queryId, UUID viewId, UUID tableId) { final IdentifierSaveDto request = IdentifierSaveDto.builder() .queryId(queryId) .viewId(viewId) .tableId(tableId) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of()) @@ -1183,12 +1184,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("malformedView_parameters") @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) - public void save_malformedView_fails(String name, Long queryId, Long viewId, Long tableId) { + public void save_malformedView_fails(String name, UUID queryId, UUID viewId, UUID tableId) { final IdentifierSaveDto request = IdentifierSaveDto.builder() .queryId(queryId) .viewId(viewId) .tableId(tableId) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of()) @@ -1208,12 +1209,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("malformedTable_parameters") @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) - public void save_malformedTable_fails(String name, Long queryId, Long viewId, Long tableId) { + public void save_malformedTable_fails(String name, UUID queryId, UUID viewId, UUID tableId) { final IdentifierSaveDto request = IdentifierSaveDto.builder() .queryId(queryId) .viewId(viewId) .tableId(tableId) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of()) @@ -1233,12 +1234,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("malformedDatabase_parameters") @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) - public void save_malformedDatabase_fails(String name, Long queryId, Long viewId, Long tableId) { + public void save_malformedDatabase_fails(String name, UUID queryId, UUID viewId, UUID tableId) { final IdentifierSaveDto request = IdentifierSaveDto.builder() .queryId(queryId) .viewId(viewId) .tableId(tableId) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of()) @@ -1259,7 +1260,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) public void save_invalidDateDay_fails() { final IdentifierSaveDto request = IdentifierSaveDto.builder() - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO)) @@ -1281,7 +1282,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) public void save_invalidDateMonth_fails() { final IdentifierSaveDto request = IdentifierSaveDto.builder() - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) .relatedIdentifiers(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO)) @@ -1319,7 +1320,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) public void save_invalidTable_fails() { final IdentifierSaveDto request = IdentifierSaveDto.builder() - .viewId(1L) // <-- + .viewId(UUID.randomUUID()) // <-- .databaseId(DATABASE_1_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO)) @@ -1341,7 +1342,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("save_parameters") @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"}) - public void save_noForeign_fails(String name, Long databaseId, Database database, DatabaseAccess access, + public void save_noForeign_fails(String name, UUID databaseId, Database database, DatabaseAccess access, Identifier identifier, IdentifierSaveDto data, Principal principal, User user) { /* test */ @@ -1455,7 +1456,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - protected void generic_save(Long databaseId, Database database, DatabaseAccess access, Identifier identifier, + protected void generic_save(UUID databaseId, Database database, DatabaseAccess access, Identifier identifier, IdentifierSaveDto data, Principal principal, User user) throws MalformedException, NotAllowedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, QueryNotFoundException, diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java index bf1b2ffa55c51e74ebb7d643d374407954bfdbd3..b5be98cfb6f8ce6fc0ed840c065dca5524b10502 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java @@ -25,6 +25,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -260,7 +261,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - public void findById_generic(Long imageId, ContainerImage image) throws ImageNotFoundException { + public void findById_generic(UUID imageId, ContainerImage image) throws ImageNotFoundException { /* mock */ when(imageService.find(imageId)) @@ -272,7 +273,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - public void delete_generic(Long imageId, ContainerImage image) throws ImageNotFoundException { + public void delete_generic(UUID imageId, ContainerImage image) throws ImageNotFoundException { /* mock */ when(imageService.find(imageId)) @@ -284,7 +285,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest { assertNull(response.getBody()); } - public void modify_generic(Long imageId, ContainerImage image, ImageChangeDto data) throws ImageNotFoundException { + public void modify_generic(UUID imageId, ContainerImage image, ImageChangeDto data) throws ImageNotFoundException { /* mock */ when(imageService.find(imageId)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java index 22516074ae83d88c5140de9e9fb0d32e575e598d..0fabc67c9175fdde835e8c14a8cbbabdc14d158f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java @@ -21,6 +21,7 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -215,7 +216,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - protected void find_generic(Long messageId, BannerMessage message) throws MessageNotFoundException { + protected void find_generic(UUID messageId, BannerMessage message) throws MessageNotFoundException { /* mock */ if (message != null) { @@ -245,7 +246,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - protected void update_generic(BannerMessageUpdateDto data, Long messageId, BannerMessage message) + protected void update_generic(BannerMessageUpdateDto data, UUID messageId, BannerMessage message) throws MessageNotFoundException { /* mock */ @@ -260,7 +261,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest { assertNotNull(response.getBody()); } - protected void delete_generic(Long messageId, BannerMessage message) throws MessageNotFoundException { + protected void delete_generic(UUID messageId, BannerMessage message) throws MessageNotFoundException { /* mock */ if (message != null) { 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 8853728d471e3649c5b5108a21ea5404e5ed1ea2..98f756a1c0a0de2674ecca8732dd319411a95223 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 @@ -19,6 +19,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import java.util.Optional; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; @@ -143,7 +144,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest { public void getRecord_dc_succeeds() { final OaiRecordParameters parameters = new OaiRecordParameters(); parameters.setMetadataPrefix("oai_dc"); - parameters.setIdentifier("oai:1"); + parameters.setIdentifier("oai:" + IDENTIFIER_1_ID); /* mock */ when(identifierRepository.findById(IDENTIFIER_1_ID)) @@ -163,7 +164,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest { public void getRecord_datacite_succeeds() { final OaiRecordParameters parameters = new OaiRecordParameters(); parameters.setMetadataPrefix("oai_datacite"); - parameters.setIdentifier("oai:1"); + parameters.setIdentifier("oai:" + IDENTIFIER_1_ID); /* mock */ when(identifierRepository.findById(IDENTIFIER_1_ID)) @@ -183,7 +184,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest { public void getRecord_invalidIdentifierPrefix_succeeds() { final OaiRecordParameters parameters = new OaiRecordParameters(); parameters.setMetadataPrefix("oai_datacite"); - parameters.setIdentifier("ark:1"); + parameters.setIdentifier("ark:" + IDENTIFIER_1_ID); /* mock */ when(identifierRepository.findById(IDENTIFIER_1_ID)) @@ -201,7 +202,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest { public void getRecord_notFound_fails() { final OaiRecordParameters parameters = new OaiRecordParameters(); parameters.setMetadataPrefix("oai_dc"); - parameters.setIdentifier("oai:9999"); + parameters.setIdentifier("oai:" + UUID.randomUUID()); /* mock */ when(identifierRepository.findById(IDENTIFIER_1_ID)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java index c3f276c2dfca9a557117571bfa3a147b0f8bc507..ab3d0775ad1a694d9f33d822e65e37ae8772b032 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java @@ -26,6 +26,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -84,20 +85,21 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-semantic-query"}) public void find_noSparql_fails() throws OntologyNotFoundException { + final UUID id = UUID.randomUUID(); final Ontology mock = Ontology.builder() - .id(9999L) + .id(id) .uri(ONTOLOGY_1_URI) .uriPattern(ONTOLOGY_1_URI_PATTERN) .sparqlEndpoint(null) // <<< .build(); /* mock */ - when(ontologyService.find(9999L)) + when(ontologyService.find(id)) .thenReturn(mock); /* test */ assertThrows(OntologyNotFoundException.class, () -> { - ontologyEndpoint.find(9999L, null, UNIT_1_URI); + ontologyEndpoint.find(id, null, UNIT_1_URI); }); } @@ -107,7 +109,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { /* test */ assertThrows(OntologyNotFoundException.class, () -> { - find_generic(99999L, null); + find_generic(UUID.randomUUID(), null); }); } @@ -293,7 +295,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { assertEquals(4, body.size()); } - public void find_generic(Long ontologyId, Ontology ontology) throws OntologyNotFoundException { + public void find_generic(UUID ontologyId, Ontology ontology) throws OntologyNotFoundException { /* mock */ if (ontology != null) { @@ -340,7 +342,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { assertNotNull(body); } - public void update_generic(Long ontologyId, OntologyModifyDto modifyDto, Ontology ontology) + public void update_generic(UUID ontologyId, OntologyModifyDto modifyDto, Ontology ontology) throws OntologyNotFoundException { /* mock */ @@ -362,7 +364,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { assertNotNull(body); } - public void delete_generic(Long ontologyId, Ontology ontology) throws OntologyNotFoundException { + public void delete_generic(UUID ontologyId, Ontology ontology) throws OntologyNotFoundException { /* mock */ doNothing() @@ -374,7 +376,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest { assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); } - public List<EntityDto> find_generic(Long ontologyId, String label, String uri, Ontology ontology, + public List<EntityDto> find_generic(UUID ontologyId, String label, String uri, Ontology ontology, EntityDto entityDto) throws MalformedException, UriMalformedException, FilterBadRequestException, OntologyNotFoundException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java index 16551784c883cc69dfbb87504fafc504f1af7015..092b8c563ddf2ccee2910d140638ca3ad087a6ac 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java @@ -1131,7 +1131,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - public void analyseTable_generic(Long databaseId, Database database, Long tableId, Table table, Principal principal) + public void analyseTable_generic(UUID databaseId, Database database, UUID tableId, Table table, Principal principal) throws MalformedException, TableNotFoundException, DatabaseNotFoundException, NotAllowedException { /* mock */ @@ -1149,7 +1149,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { assertNotNull(body); } - public void analyseTableColumn_generic(Long databaseId, Database database, Long tableId, Long columnId, + public void analyseTableColumn_generic(UUID databaseId, Database database, UUID tableId, UUID columnId, TableColumn tableColumn, Principal principal) throws MalformedException, TableNotFoundException, DatabaseNotFoundException { @@ -1165,7 +1165,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { assertNotNull(body); } - protected ResponseEntity<List<TableBriefDto>> generic_list(Long databaseId, Database database, Principal principal, + protected ResponseEntity<List<TableBriefDto>> generic_list(UUID databaseId, Database database, Principal principal, User user, DatabaseAccess access) throws NotAllowedException, DatabaseNotFoundException, AccessNotFoundException, UserNotFoundException { @@ -1193,7 +1193,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { return tableEndpoint.list(databaseId, principal); } - protected ResponseEntity<TableBriefDto> generic_create(Long databaseId, Database database, CreateTableDto data, + protected ResponseEntity<TableBriefDto> generic_create(UUID databaseId, Database database, CreateTableDto data, Principal principal, User user, DatabaseAccess access) throws MalformedException, NotAllowedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, TableNotFoundException, @@ -1226,11 +1226,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { return tableEndpoint.create(databaseId, data, principal); } - protected ResponseEntity<TableDto> generic_findById(Long databaseId, Database database, Long tableId, + protected ResponseEntity<TableDto> generic_findById(UUID databaseId, Database database, UUID tableId, Table table, Principal principal, User user, - DatabaseAccess access) throws DataServiceException, - DataServiceConnectionException, TableNotFoundException, DatabaseNotFoundException, AccessNotFoundException, - QueueNotFoundException, UserNotFoundException, NotAllowedException { + DatabaseAccess access) throws TableNotFoundException, + DatabaseNotFoundException, AccessNotFoundException, UserNotFoundException, NotAllowedException { /* mock */ if (database != null) { @@ -1277,15 +1276,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(databaseService.findById(DATABASE_1_ID)) .thenReturn(DATABASE_1); - when(tableService.findById(any(Database.class), anyLong())) + when(tableService.findById(any(Database.class), any(UUID.class))) .thenReturn(table); /* test */ return tableEndpoint.delete(DATABASE_1_ID, TABLE_1_ID, principal); } - protected ResponseEntity<ColumnDto> generic_updateColumn(Long databaseId, Database database, Long tableId, - Table table, Long columnId, TableColumn column, + protected ResponseEntity<ColumnDto> generic_updateColumn(UUID databaseId, Database database, UUID tableId, + Table table, UUID columnId, TableColumn column, Principal principal, User user, ColumnSemanticsUpdateDto data, DatabaseAccess access) throws DataServiceException, DataServiceConnectionException, MalformedException, NotAllowedException, diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java index c69701e6dd649565e8070c8c2403b0867c1aed19..5f0341fa7b53d828554d01f166acbc1c81241860 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java @@ -8,8 +8,6 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.NotAllowedException; import at.tuwien.exception.UserNotFoundException; -import at.tuwien.service.AuthenticationService; -import at.tuwien.service.DatabaseService; import at.tuwien.service.UserService; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -44,12 +42,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @MockBean private UserService userService; - @MockBean - private DatabaseService databaseService; - - @MockBean - private AuthenticationService authenticationService; - @Autowired private UserEndpoint userEndpoint; diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java index d1434ef9e4035cd13d81a4f12ec68bad71683bf1..1fa3d599206b7c25f31b383be3efba6d8f4bdef8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java @@ -190,7 +190,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Type")); assertEquals(List.of(DATABASE_3_INTERNALNAME), headers.get("X-Database")); assertEquals(List.of(VIEW_5_INTERNAL_NAME), headers.get("X-View")); - assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View"), headers.get("Access-Control-Expose-Headers")); + assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Jdbc-Method")); + assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method"), headers.get("Access-Control-Expose-Headers")); } @Test @@ -441,7 +442,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - protected void findAll_generic(Long databaseId, Database database, Principal principal, UUID userId, User user, + protected void findAll_generic(UUID databaseId, Database database, Principal principal, UUID userId, User user, DatabaseAccess access) throws AccessNotFoundException, UserNotFoundException, DatabaseNotFoundException { @@ -477,7 +478,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { } } - protected void create_generic(Long databaseId, Database database, Principal principal, UUID userId, User user, + protected void create_generic(UUID databaseId, Database database, Principal principal, UUID userId, User user, DatabaseAccess access) throws MalformedException, DataServiceException, DataServiceConnectionException, NotAllowedException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, SearchServiceException, SearchServiceConnectionException { @@ -514,7 +515,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { assertEquals(VIEW_1_NAME, response.getBody().getName()); } - protected ResponseEntity<ViewDto> find_generic(Long databaseId, Database database, Principal principal, + protected ResponseEntity<ViewDto> find_generic(UUID databaseId, Database database, Principal principal, UUID userId, User user, DatabaseAccess access) throws DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, ViewNotFoundException { @@ -533,10 +534,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { if (principal != null) { when(userService.findById(userId)) .thenReturn(user); - when(viewService.findById(any(Database.class), anyLong())) + when(viewService.findById(any(Database.class), any(UUID.class))) .thenReturn(VIEW_5); } else { - when(viewService.findById(any(Database.class), anyLong())) + when(viewService.findById(any(Database.class), any(UUID.class))) .thenReturn(VIEW_5); } @@ -548,7 +549,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { return response; } - protected void delete_generic(Long databaseId, Database database, Long viewId, View view, Principal principal, + protected void delete_generic(UUID databaseId, Database database, UUID viewId, View view, Principal principal, UUID userId, User user, DatabaseAccess access) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, AccessNotFoundException, SearchServiceException, SearchServiceConnectionException, ViewNotFoundException, UserNotFoundException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4fdb83bcd73535f5c0aae86cccdd29ab7b6361d5 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java @@ -0,0 +1,20 @@ +package at.tuwien.entities; + +import at.tuwien.test.AbstractUnitTest; +import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Log4j2 +public class EntitiesUnitTest extends AbstractUnitTest { + + @Test + public void uuidVersion_succeeds() { + + /* test */ + assertEquals(4, UUID.randomUUID().version()); + } +} diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java index 6505506eeaca607cd96e3324e869c2db0907cc4f..ac1103d2e5ad0a4c9a12b781c575ddff9aa39bcf 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java @@ -1,7 +1,9 @@ package at.tuwien.mapper; +import at.tuwien.api.database.ViewDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.api.user.UserBriefDto; +import at.tuwien.entities.database.View; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierType; import at.tuwien.test.AbstractUnitTest; @@ -87,7 +89,7 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { assertNull(response.getDatabase()); assertNull(response.getViewId()); assertNull(response.getTableId()); - assertEquals(IDENTIFIER_2_QUERY_ID, response.getQueryId()); + assertEquals(QUERY_1_ID, response.getQueryId()); assertNull(response.getDoi()); assertEquals(IDENTIFIER_2_TYPE, response.getType()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java index 0365db6c4a09dfaedb742528b3bb08d4784d53f1..e47229bd0ae17c3b56a46ed60002e5f2226ae204 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java @@ -1,6 +1,7 @@ package at.tuwien.mvc; import at.tuwien.api.keycloak.TokenDto; +import at.tuwien.entities.database.View; import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.CredentialsInvalidException; @@ -12,6 +13,7 @@ import at.tuwien.repository.UserRepository; import at.tuwien.test.AbstractUnitTest; import at.tuwien.utils.KeycloakUtils; import dasniko.testcontainers.keycloak.KeycloakContainer; +import jakarta.transaction.Transactional; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -96,10 +98,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) + .andExpect(header().doesNotExist("X-Jdbc-Method")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } @@ -111,11 +114,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD))) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD))) .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -127,11 +131,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest final TokenDto jwt = keycloakGateway.obtainUserToken(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD); /* test */ - this.mockMvc.perform(get("/api/database/1").header("Authorization", "Bearer " + jwt.getAccessToken())) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).header("Authorization", "Bearer " + jwt.getAccessToken())) .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -144,11 +149,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest /* test */ - this.mockMvc.perform(get("/api/database/1/table/1").header("Authorization", "Bearer " + jwt.getAccessToken())) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).header("Authorization", "Bearer " + jwt.getAccessToken())) .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -159,10 +165,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/database/1/table/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) + .andExpect(header().doesNotExist("X-Jdbc-Method")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } @@ -174,25 +181,28 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/database/1/table/1").with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD))) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD))) .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @Test + @Transactional public void findById_view_basicUser_succeeds() throws Exception { /* mock */ keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/database/1/view/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) + this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/view/" + VIEW_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) + .andExpect(header().doesNotExist("X-Jdbc-Method")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } @@ -204,10 +214,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ - this.mockMvc.perform(get("/api/container/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) + this.mockMvc.perform(get("/api/container/" + CONTAINER_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) + .andExpect(header().doesNotExist("X-Jdbc-Method")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java index 96af6cfa8d14e4974a4afb8e410d9cc9a29bbbeb..7f9ba9743d24f1d888f2a488bd8330755478d1e9 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java @@ -122,7 +122,7 @@ public class MetadataEndpointMvcTest extends AbstractUnitTest { .thenReturn(Optional.of(IDENTIFIER_1)); /* test */ - this.mockMvc.perform(get("/api/oai?verb=GetRecord&identifier=oai:1")) + this.mockMvc.perform(get("/api/oai?verb=GetRecord&identifier=oai:" + IDENTIFIER_1_ID)) .andDo(print()) .andExpect(content().contentType("text/xml;charset=UTF-8")) .andExpect(xpath("//request[@verb='GetRecord']").exists()) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java index 7611a0a8b539124d14a66c0a1b5c7465cf8d8e7f..2adc2f0647150f47605cb4b0d70566c041cd81f7 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java @@ -9,13 +9,8 @@ import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.MetricsConfig; import at.tuwien.endpoints.*; import at.tuwien.test.AbstractUnitTest; -import io.micrometer.observation.annotation.Observed; import io.micrometer.observation.tck.TestObservationRegistry; -import io.swagger.v3.oas.annotations.Operation; import lombok.extern.log4j.Log4j2; -import org.apache.commons.io.FileUtils; -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; @@ -30,13 +25,7 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.TreeMap; import static io.micrometer.observation.tck.TestObservationRegistryAssert.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -99,8 +88,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { @Autowired private ViewEndpoint viewEndpoint; - private static final Map<String, String> metrics = new TreeMap<>(); /* sorted */ - @TestConfiguration static class ObservationTestConfiguration { @@ -110,16 +97,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } } - @BeforeAll - public static void beforeAll() { - FileUtils.deleteQuietly(new File("../metrics.md")); - } - - @AfterAll - public static void afterAll() throws IOException { - saveObservedMetrics(metrics); - } - @Test public void prometheus_succeeds() throws Exception { @@ -160,7 +137,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(AccessEndpoint.class); } @Test @@ -194,7 +170,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(ContainerEndpoint.class); } @Test @@ -243,7 +218,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(DatabaseEndpoint.class); } @Test @@ -289,7 +263,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(IdentifierEndpoint.class); } @Test @@ -329,7 +302,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(ImageEndpoint.class); } @Test @@ -346,7 +318,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* test */ assertThat(registry) .hasObservationWithNameEqualTo("dbrepo_license_findall"); - generic_openApiDocs(LicenseEndpoint.class); } @Test @@ -385,7 +356,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(MessageEndpoint.class); } @Test @@ -419,7 +389,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(MetadataEndpoint.class); } @Test @@ -463,7 +432,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(OntologyEndpoint.class); } @Test @@ -482,7 +450,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(ConceptEndpoint.class); } @Test @@ -501,7 +468,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(UnitEndpoint.class); } @Test @@ -563,7 +529,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(TableEndpoint.class); } @Test @@ -592,7 +557,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(UserEndpoint.class); } @Test @@ -627,16 +591,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { assertThat(registry) .hasObservationWithNameEqualTo(metric); } - generic_openApiDocs(ViewEndpoint.class); - } - - private static void generic_openApiDocs(Class<?> endpoint) { - final List<Method> methods = Arrays.stream(endpoint.getMethods()) - .filter(m -> m.getDeclaringClass().equals(endpoint)) - .toList(); - methods.forEach(m -> { - metrics.put(m.getDeclaredAnnotation(Observed.class).name(), m.getDeclaredAnnotation(Operation.class).summary()); - }); } } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java index bb19a404ddf23f29e257808974c0ebd787e3c416..a6fbbf759269d7f6b9331dc829ad2b83197be1ad 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java @@ -1,11 +1,13 @@ package at.tuwien.service; import at.tuwien.api.container.CreateContainerDto; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.entities.container.Container; -import at.tuwien.exception.*; +import at.tuwien.exception.ContainerAlreadyExistsException; +import at.tuwien.exception.ContainerNotFoundException; +import at.tuwien.exception.ImageNotFoundException; import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.ImageRepository; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,11 +22,11 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import java.util.Optional; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.when; @Log4j2 @@ -87,7 +89,7 @@ public class ContainerServiceUnitTest extends AbstractUnitTest { public void create_imageNotFound_fails() { final CreateContainerDto request = CreateContainerDto.builder() .name(CONTAINER_3_NAME) - .imageId(9999L) + .imageId(UUID.randomUUID()) .build(); /* mock */ @@ -169,14 +171,14 @@ public class ContainerServiceUnitTest extends AbstractUnitTest { assertEquals(limit, response.size()); } - protected void find_generic(Long containerId, Container container) throws ContainerNotFoundException { + protected void find_generic(UUID containerId, Container container) throws ContainerNotFoundException { /* mock */ if (container != null) { when(containerRepository.findById(containerId)) .thenReturn(Optional.of(container)); } else { - when(containerRepository.findById(anyLong())) + when(containerRepository.findById(any(UUID.class))) .thenReturn(Optional.empty()); } 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 b77bc30d3811ed30c7994129ae2110e12903d0f9..260aebe7be411cd1ac32c63160a8964d26c0f9a3 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 @@ -36,6 +36,7 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -88,7 +89,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final List<Identifier> response = dataCiteIdentifierService.findAll(null, null, null, null, null); assertEquals(7, response.size()); - for (Long id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) { + for (UUID id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) { assertTrue(response.stream().map(Identifier::getId).toList().contains(id)); } } @@ -110,7 +111,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final List<Identifier> response = dataCiteIdentifierService.findAll(null, null, QUERY_1_ID, null, null); - assertEquals(1, response.size()); + assertEquals(2, response.size()); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java index 9c91084f77cdac6c554cb11ea847bbb447185283..b1886aa835f2cc0cb2aac9e53365d869ec30724c 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java @@ -63,16 +63,6 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest { assertEquals(DATABASE_1, response); } - @Test - @Transactional(readOnly = true) - public void findAllPublicOrSchemaPublicByInternalName_succeeds() { - - /* test */ - final List<Database> response = databaseService.findAllPublicOrSchemaPublicByInternalName(DATABASE_3_INTERNALNAME); - assertEquals(1, response.size()); - assertEquals(DATABASE_3, response.get(0)); - } - @Test @Transactional(readOnly = true) public void findAllPublicOrSchemaPublicByInternalName_privateEmpty_succeeds() { @@ -91,16 +81,4 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest { assertEquals(0, response.size()); } - @Test - @Transactional(readOnly = true) - public void findAllAtLestReadAccess_privateAccess_succeeds() { - - /* test */ - final List<Database> response = databaseService.findAllAtLestReadAccess(USER_2_ID); - assertEquals(3, response.size()); - assertEquals(DATABASE_4, response.get(0)); - assertEquals(DATABASE_2, response.get(1)); - assertEquals(DATABASE_1, response.get(2)); - } - } 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 18d037fe452cb6cdab5b4d0f0fe68b5ed6142cf0..85829f6ae64809f594f19d512d0cd1dcfbe80de6 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 @@ -22,9 +22,11 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import java.util.Optional; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.*; @Log4j2 @@ -347,12 +349,12 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { public void find_fails() { /* mock */ - when(databaseRepository.findById(anyLong())) + when(databaseRepository.findById(any(UUID.class))) .thenReturn(Optional.empty()); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { - databaseService.findById(9999L); + databaseService.findById(UUID.randomUUID()); }); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java index fd6ac82762ad838bb846a185d19ae57af55ea8e9..afe3b6e2b8b9c5e93c1afebed2eabb4a6fc9daa0 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java @@ -133,6 +133,7 @@ public class EntityServiceUnitTest extends AbstractUnitTest { } @Test + @Disabled public void suggestTableColumnSemantics_succeeds() throws MalformedException { /* mock */ 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 40fc28fe4d89524a928d474e0d3328853bee5df7..c053afa51d4de9404a69aa5eee8b81cb1e567384 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 @@ -1,21 +1,20 @@ package at.tuwien.service; -import at.tuwien.entities.database.License; -import at.tuwien.repository.ContainerRepository; -import at.tuwien.repository.DatabaseRepository; -import at.tuwien.repository.LicenseRepository; -import at.tuwien.repository.UserRepository; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.BibliographyTypeDto; import at.tuwien.entities.database.Database; +import at.tuwien.entities.database.License; import at.tuwien.entities.identifier.*; import at.tuwien.exception.*; import at.tuwien.gateway.DataServiceGateway; import at.tuwien.gateway.SearchServiceGateway; +import at.tuwien.repository.ContainerRepository; +import at.tuwien.repository.DatabaseRepository; +import at.tuwien.repository.LicenseRepository; +import at.tuwien.repository.UserRepository; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; -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; @@ -32,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -84,7 +84,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final List<Identifier> response = identifierService.findAll(null, null, null, null, null); assertEquals(7, response.size()); - for (Long id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) { + for (UUID id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) { assertTrue(response.stream().map(Identifier::getId).toList().contains(id)); } } @@ -106,7 +106,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final List<Identifier> response = identifierService.findAll(null, null, QUERY_1_ID, null, null); - assertEquals(1, response.size()); + assertEquals(2, response.size()); } @Test @@ -131,17 +131,11 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final List<Identifier> response = identifierService.findByDatabaseIdAndQueryId(DATABASE_1_ID, QUERY_1_ID); - assertEquals(1, response.size()); + assertEquals(2, response.size()); final Identifier identifier0 = response.get(0); - assertEquals(IDENTIFIER_2_ID, identifier0.getId()); - } - - @Test - public void findByDatabaseIdAndQueryId_fails() { - - /* test */ - final List<Identifier> response = identifierService.findByDatabaseIdAndQueryId(DATABASE_1_ID, QUERY_1_ID); - assertEquals(1, response.size()); + assertEquals(IDENTIFIER_1_ID, identifier0.getId()); + final Identifier identifier1 = response.get(1); + assertEquals(IDENTIFIER_2_ID, identifier1.getId()); } @Test @@ -149,7 +143,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ assertThrows(IdentifierNotFoundException.class, () -> { - identifierService.find(9999L); + identifierService.find(UUID.randomUUID()); }); } @@ -173,7 +167,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException { /* mock */ - when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID)) + when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID)) .thenReturn(QUERY_2_DTO); when(searchServiceGateway.update(any(Database.class))) .thenReturn(DATABASE_2_BRIEF_DTO); @@ -307,7 +301,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException { /* mock */ - when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID)) + when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID)) .thenReturn(QUERY_2_DTO); /* test */ @@ -326,7 +320,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { assertEquals(IDENTIFIER_5_DESCRIPTION_1_TYPE, description0.getDescriptionType()); assertNull(response.getDoi()); assertEquals(IDENTIFIER_5_PUBLISHER, response.getPublisher()); - assertEquals(IDENTIFIER_5_DATABASE_ID, response.getDatabase().getId()); + assertEquals(DATABASE_2_ID, response.getDatabase().getId()); assertNull(response.getLanguage()); assertEquals(IDENTIFIER_5_PUBLICATION_YEAR, response.getPublicationYear()); assertEquals(IDENTIFIER_5_PUBLICATION_MONTH, response.getPublicationMonth()); @@ -439,12 +433,12 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { ExternalServiceException { /* mock */ - when(dataServiceGateway.findQuery(IDENTIFIER_2_DATABASE_ID, IDENTIFIER_2_QUERY_ID)) + when(dataServiceGateway.findQuery(DATABASE_1_ID, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); /* test */ final Identifier response = identifierService.save(DATABASE_1, USER_1, IDENTIFIER_2_SAVE_DTO); - assertEquals(IDENTIFIER_2_DATABASE_ID, response.getDatabase().getId()); + assertEquals(DATABASE_1_ID, response.getDatabase().getId()); assertEquals(IDENTIFIER_2_QUERY, response.getQuery()); assertEquals(IDENTIFIER_2_QUERY_HASH, response.getQueryHash()); assertEquals(IDENTIFIER_2_RESULT_HASH, response.getResultHash()); @@ -460,7 +454,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final Identifier response = identifierService.save(DATABASE_1, USER_1, IDENTIFIER_3_SAVE_DTO); - assertEquals(IDENTIFIER_3_DATABASE_ID, response.getDatabase().getId()); + assertEquals(DATABASE_1_ID, response.getDatabase().getId()); assertEquals(IDENTIFIER_3_QUERY, response.getQuery()); assertEquals(IDENTIFIER_3_QUERY_HASH, response.getQueryHash()); assertEquals(IDENTIFIER_3_RESULT_HASH, response.getResultHash()); @@ -476,7 +470,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final Identifier response = identifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_DTO); - assertEquals(8L, response.getId()); + assertNotNull(response.getId()); } @Test @@ -487,7 +481,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final Identifier response = identifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_WITH_DOI_DTO); - assertEquals(8L, response.getId()); + assertNotNull(response.getId()); assertEquals(IDENTIFIER_1_DOI, response.getDoi()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java index d07a5facb802db9c4b2b0e70c2e465b6bfda1636..fb7806f454684e10e8dd819018a03283b90fb418 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java @@ -18,6 +18,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import java.util.Optional; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -88,12 +89,12 @@ public class MessageServiceUnitTest extends AbstractUnitTest { public void find_notFound_fails() { /* mock */ - when(bannerMessageRepository.findById(anyLong())) + when(bannerMessageRepository.findById(any(UUID.class))) .thenReturn(Optional.empty()); /* test */ assertThrows(MessageNotFoundException.class, () -> { - bannerMessageService.find(9999L); + bannerMessageService.find(UUID.randomUUID()); }); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java index fa10d09a877c5a967086f855efd091eee1f5efe2..2f4fd3a85aaca28de490b2953acde20804fb70cd 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java @@ -1,9 +1,5 @@ package at.tuwien.service; -import at.tuwien.oaipmh.OaiErrorType; -import at.tuwien.oaipmh.OaiListIdentifiersParameters; -import at.tuwien.oaipmh.OaiRecordParameters; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.crossref.CrossrefDto; import at.tuwien.api.orcid.OrcidDto; import at.tuwien.api.ror.RorDto; @@ -13,6 +9,10 @@ import at.tuwien.exception.*; import at.tuwien.gateway.CrossrefGateway; import at.tuwien.gateway.OrcidGateway; import at.tuwien.gateway.RorGateway; +import at.tuwien.oaipmh.OaiErrorType; +import at.tuwien.oaipmh.OaiListIdentifiersParameters; +import at.tuwien.oaipmh.OaiRecordParameters; +import at.tuwien.test.AbstractUnitTest; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.log4j.Log4j2; @@ -29,10 +29,10 @@ import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; @@ -114,11 +114,11 @@ public class MetadataServiceUnitTest extends AbstractUnitTest { @Transactional public void getRecord_succeeds() throws IdentifierNotFoundException { final OaiRecordParameters parameters = OaiRecordParameters.builder() - .identifier("oai:1") + .identifier("oai:" + IDENTIFIER_1_ID) .build(); /* mock */ - when(identifierService.find(1L)) + when(identifierService.find(IDENTIFIER_1_ID)) .thenReturn(IDENTIFIER_1); /* test */ @@ -133,13 +133,13 @@ public class MetadataServiceUnitTest extends AbstractUnitTest { @Test public void getRecord_oaiNotFound_fails() throws IdentifierNotFoundException { final OaiRecordParameters parameters = OaiRecordParameters.builder() - .identifier("oai:9999") + .identifier("oai:deadbeef-bf9c-4943-a30a-ee5295f5b8c2") .build(); /* mock */ doThrow(IdentifierNotFoundException.class) .when(identifierService) - .find(anyLong()); + .find(any(UUID.class)); /* test */ assertThrows(IdentifierNotFoundException.class, () -> { 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 b0efccab9ac856f727ee3377554e7cf8a01bb2c7..286b7d89cc30a81f33fe1938e44bfe0832504321 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 @@ -4,6 +4,7 @@ import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; +import at.tuwien.entities.container.Container; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; @@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Set; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; @@ -155,7 +157,7 @@ public class TableServicePersistenceTest extends AbstractUnitTest { /* test */ assertThrows(MalformedException.class, () -> { - tableService.findColumnById(TABLE_1, 9999L); + tableService.findColumnById(TABLE_1, UUID.randomUUID()); }); } 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 4ba217a60c0b5a520e7fcd1c59a610769530760e..75fab311dd0920eff19002c5976383f6b37e4d94 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 @@ -1,13 +1,13 @@ package at.tuwien.service; -import at.tuwien.repository.DatabaseRepository; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.database.CreateViewDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; import at.tuwien.exception.*; import at.tuwien.gateway.DataServiceGateway; import at.tuwien.gateway.SearchServiceGateway; +import at.tuwien.repository.DatabaseRepository; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -18,6 +18,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.testcontainers.junit.jupiter.Testcontainers; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -88,7 +89,7 @@ public class ViewServiceUnitTest extends AbstractUnitTest { /* test */ assertThrows(ViewNotFoundException.class, () -> { - viewService.findById(DATABASE_1, 9999L); + viewService.findById(DATABASE_1, UUID.randomUUID()); }); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java index 8105a7fb8907b508a336876e9c5e6ce94916e59d..1e7ce07afde0616c8915549cfa3e1bcc72bcb658 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java @@ -26,10 +26,12 @@ 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 java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; @@ -176,7 +178,7 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { DatabaseNotFoundException, AccessNotFoundException { /* mock */ - when(databaseService.findById(anyLong())) + when(databaseService.findById(any(UUID.class))) .thenReturn(DATABASE_3); /* test */ diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json index 250db21b8f997330463558b8540a23d2f4521778..228849fe625df9c0b50dbb97542bd94057173d2f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json @@ -1,5 +1,5 @@ { - "id": 7, + "id": "b216ae00-a31d-4ecb-95fb-37eb4da3946f", "type": "database", "titles": [], "descriptions": [], @@ -11,7 +11,7 @@ "licenses": [], "creators": [ { - "id": 1, + "id": "b899c367-06c7-4f47-8aea-5f15061ee3ee", "firstname": "Max", "lastname": "Mustermann", "creator_name": "Mustermann, Max", diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json index 2a0da11e13c832bb1c9578e6982733fb2eb51c3f..82633c0de717d903bdf4011394b2130a4a626740 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json @@ -1,16 +1,16 @@ { - "id": 1, - "query_id": 1, + "id": "679a83f2-ef23-4b4b-98f7-ad77b9d68733", + "query_id": "60494137-f000-459e-acd3-4fcadbdf14ca", "type": "subset", "doi": "10.12345/183", "titles": [ { - "id": 1, + "id": "3df6b286-9bd2-4ae3-b8f4-29c217544bef", "title": "Austrian weather data", "language": "en" }, { - "id": 2, + "id": "903a7e5b-8014-4b8a-b8fd-44f477880905", "title": "Österreichische Wetterdaten", "type": "TranslatedTitle", "language": "de" @@ -18,7 +18,7 @@ ], "descriptions": [ { - "id": 1, + "id": "1c438756-93f0-4797-983c-175a17e18c2c", "description": "Selecting all from the weather Austrian table", "language": "en" } @@ -32,7 +32,7 @@ "publisher": "Austrian Government", "creators": [ { - "id": 1, + "id": "667cd1d6-4f94-4808-b5cb-12e5ec0788d8", "firstname": "Max", "lastname": "Mustermann", "creator_name": "Mustermann, Max", diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml index b817658a09424af38fb372ce440258e0b8be7b38..906fa5258b02807565c4acc0e361d5c65bd65b77 100644 --- a/dbrepo-metadata-service/services/pom.xml +++ b/dbrepo-metadata-service/services/pom.xml @@ -6,12 +6,12 @@ <parent> <artifactId>dbrepo-metadata-service</artifactId> <groupId>at.tuwien</groupId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-services</artifactId> <name>dbrepo-metadata-service-services</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java index 4ee76c36bf7adf98fe38a32fcab869759ec3af0a..5bb0303e16c14145f1e08ee913b4c4dcabdead61 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java @@ -29,7 +29,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws DatabaseNotFoundException Some of the privileged parameters of the given database were not provided by the metadata service. */ - void createAccess(Long databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, + void createAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException; /** @@ -42,7 +42,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws AccessNotFoundException Some of the privileged parameters of the given database were not provided by the metadata service. */ - void updateAccess(Long databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, + void updateAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, DataServiceException, AccessNotFoundException; /** @@ -54,7 +54,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws AccessNotFoundException Some of the privileged parameters of the given database were not provided by the metadata service. */ - void deleteAccess(Long databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException, + void deleteAccess(UUID databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException, AccessNotFoundException; /** @@ -78,10 +78,10 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws DatabaseNotFoundException Some of the privileged parameters of the given database were not provided by the metadata service. */ - void updateDatabase(Long databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException, + void updateDatabase(UUID databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException; - void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException, + void updateTable(UUID databaseId, UUID tableId, TableUpdateDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException; /** @@ -94,7 +94,7 @@ public interface DataServiceGateway { * @throws DatabaseNotFoundException Some of the privileged parameters of the given database were not provided by the metadata service. * @throws TableExistsException A table with this internal name exists already in the database. */ - void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, + void createTable(UUID databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException, TableExistsException; /** @@ -106,7 +106,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws TableNotFoundException The given table was not found in the database. */ - void deleteTable(Long databaseId, Long tableId) throws DataServiceConnectionException, DataServiceException, + void deleteTable(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException; /** @@ -118,7 +118,7 @@ public interface DataServiceGateway { * @throws DataServiceConnectionException The connection to the data service could not be established. * @throws DataServiceException The data service responded unexpectedly. */ - ViewDto createView(Long databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException; + ViewDto createView(UUID databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException; /** * Deletes a given view in the given database. @@ -129,7 +129,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws ViewNotFoundException The given view was not found in the database. */ - void deleteView(Long databaseId, Long viewId) throws DataServiceConnectionException, DataServiceException, + void deleteView(UUID databaseId, UUID viewId) throws DataServiceConnectionException, DataServiceException, ViewNotFoundException; /** @@ -142,7 +142,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws QueryNotFoundException The given query was not found in the query store. */ - QueryDto findQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, DataServiceException, + QueryDto findQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException, QueryNotFoundException; /** @@ -155,7 +155,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws QueryNotFoundException The given query was not found in the query store. */ - ExportResourceDto exportQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, + ExportResourceDto exportQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException, QueryNotFoundException; /** @@ -167,7 +167,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws TableNotFoundException The table was not found in the database. */ - List<TableDto> getTableSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException, + List<TableDto> getTableSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException; /** @@ -179,7 +179,7 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws ViewNotFoundException The table was not found in the database. */ - List<ViewDto> getViewSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException, + List<ViewDto> getViewSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException, ViewNotFoundException; /** @@ -192,6 +192,6 @@ public interface DataServiceGateway { * @throws DataServiceException The data service responded unexpectedly. * @throws TableNotFoundException The table was not found in the database. */ - TableStatisticDto getTableStatistics(Long databaseId, Long tableId) throws DataServiceConnectionException, + TableStatisticDto getTableStatistics(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException; } 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 6632a08194411f74d5b4d22d4f1e0de6eda91a47..1b3b20485f22d1f11ef92c6bc1698271923e9f0f 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 @@ -4,9 +4,11 @@ import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.entities.database.Database; import at.tuwien.exception.*; +import java.util.UUID; + public interface SearchServiceGateway { DatabaseBriefDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; - void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; + void delete(UUID databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java index 6ee2ef084b962e30bd614dd1073aecf65a0ced09..6439ab47a21aefabf38dda2e661ddf41e6788675 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java @@ -41,7 +41,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void createAccess(Long databaseId, UUID userId, AccessTypeDto access) + public void createAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/access/" + userId; @@ -66,7 +66,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void updateAccess(Long databaseId, UUID userId, AccessTypeDto access) + public void updateAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException, DataServiceException, AccessNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/access/" + userId; @@ -91,7 +91,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void deleteAccess(Long databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException, + public void deleteAccess(UUID databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException, AccessNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/access/" + userId; @@ -140,7 +140,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void updateDatabase(Long databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException, + public void updateDatabase(UUID databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId; @@ -164,7 +164,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException, + public void updateTable(UUID databaseId, UUID tableId, TableUpdateDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/table/" + tableId; @@ -188,7 +188,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, + public void createTable(UUID databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException, TableExistsException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/table"; @@ -215,7 +215,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void deleteTable(Long databaseId, Long tableId) throws DataServiceConnectionException, DataServiceException, + public void deleteTable(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/table/" + tableId; @@ -239,7 +239,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public ViewDto createView(Long databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException { + public ViewDto createView(UUID databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException { final ResponseEntity<ViewDto> response; final String path = "/api/database/" + databaseId + "/view"; log.trace("create view at endpoint {} with path {}", gatewayConfig.getDataEndpoint(), path); @@ -264,7 +264,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void deleteView(Long databaseId, Long viewId) throws DataServiceConnectionException, DataServiceException, + public void deleteView(UUID databaseId, UUID viewId) throws DataServiceConnectionException, DataServiceException, ViewNotFoundException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/view/" + viewId; @@ -288,7 +288,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public QueryDto findQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, DataServiceException, + public QueryDto findQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException, QueryNotFoundException { final ResponseEntity<QueryDto> response; final String path = "/api/database/" + databaseId + "/subset/" + queryId; @@ -316,7 +316,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public ExportResourceDto exportQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, + public ExportResourceDto exportQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException, QueryNotFoundException { final ResponseEntity<ExportResourceDto> response; final String path = "/api/database/" + databaseId + "/subset/" + queryId; @@ -341,7 +341,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public List<TableDto> getTableSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException, + public List<TableDto> getTableSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException { final ResponseEntity<TableDto[]> response; final String path = "/api/database/" + databaseId + "/table"; @@ -372,7 +372,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public List<ViewDto> getViewSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException, + public List<ViewDto> getViewSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException, ViewNotFoundException { final ResponseEntity<ViewDto[]> response; final String path = "/api/database/" + databaseId + "/view"; @@ -403,7 +403,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public TableStatisticDto getTableStatistics(Long databaseId, Long tableId) throws DataServiceConnectionException, + public TableStatisticDto getTableStatistics(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException, TableNotFoundException { final ResponseEntity<TableStatisticDto> response; final String path = "/api/database/" + databaseId + "/table/" + tableId + "/statistic"; 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 503cad47ec5d2a8abd7ec4e76757b2f8ddb48ecd..89b4dff5c71eb3f58b2fe1e9ac0616ab743cd5f6 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 @@ -18,6 +18,8 @@ import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.client.RestTemplate; +import java.util.UUID; + @Log4j2 @Service public class SearchServiceGatewayImpl implements SearchServiceGateway { @@ -64,7 +66,7 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway { } @Override - public void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { + public void delete(UUID databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { final ResponseEntity<Void> response; final String path = "/api/search/database/" + databaseId; log.trace("delete database at endpoint {} with path {}", gatewayConfig.getSearchEndpoint(), path); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java index 3be407e6b2ef4d89dfa29e4dd61829836fb08594..a7973b6171d8cf941a0cc24b264b69f76255628e 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java @@ -6,6 +6,7 @@ import at.tuwien.entities.maintenance.BannerMessage; import at.tuwien.exception.MessageNotFoundException; import java.util.List; +import java.util.UUID; public interface BannerMessageService { @@ -30,7 +31,7 @@ public interface BannerMessageService { * @return The message, if successful. * @throws MessageNotFoundException The message was not found in the metadata database. */ - BannerMessage find(Long id) throws MessageNotFoundException; + BannerMessage find(UUID id) throws MessageNotFoundException; /** * Creates a new maintenance message in the metadata database. diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java index 9aa2dc6c89839999c255595d65deb7399e702feb..d559b5134d6b34b3d5855debb30ece42115caff5 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java @@ -2,9 +2,12 @@ package at.tuwien.service; import at.tuwien.api.container.CreateContainerDto; import at.tuwien.entities.container.Container; -import at.tuwien.exception.*; +import at.tuwien.exception.ContainerAlreadyExistsException; +import at.tuwien.exception.ContainerNotFoundException; +import at.tuwien.exception.ImageNotFoundException; import java.util.List; +import java.util.UUID; public interface ContainerService { @@ -34,7 +37,7 @@ public interface ContainerService { * @return The container object, if successful. * @throws ContainerNotFoundException The container was not found in the metadata database. */ - Container find(Long id) throws ContainerNotFoundException; + Container find(UUID id) throws ContainerNotFoundException; /** * Retrieve a list of all containers from the metadata database diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 4e3765fd6ec8231d8bcfdcdaae83c0c96bcb8788..0d5695207354bf668b566c02158a912975cedf69 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -54,7 +54,7 @@ public interface DatabaseService { * @return The database, if successful. * @throws DatabaseNotFoundException The database was not found in the metadata database. */ - Database findById(Long databaseId) throws DatabaseNotFoundException; + Database findById(UUID databaseId) throws DatabaseNotFoundException; /** * Creates a new database with minimal metadata in the metadata database and creates a new database on the container. diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java index 47183700f91df1b24194fef24d931992b6b8b932..605ded7d37faad52fc7119f4dd0a958c199b68b8 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java @@ -12,6 +12,7 @@ import org.springframework.core.io.InputStreamResource; import org.springframework.stereotype.Service; import java.util.List; +import java.util.UUID; @Service public interface IdentifierService { @@ -29,7 +30,7 @@ public interface IdentifierService { * @param databaseId The database id. * @return The list of identifiers. */ - List<Identifier> findAll(Long databaseId); + List<Identifier> findAll(UUID databaseId); /** * Finds an identifier by given id. @@ -38,7 +39,7 @@ public interface IdentifierService { * @return The identifier, if successful. * @throws IdentifierNotFoundException The identifier does not exist. */ - Identifier find(Long id) throws IdentifierNotFoundException; + Identifier find(UUID id) throws IdentifierNotFoundException; /** * Finds an identifier by given doi. @@ -56,7 +57,7 @@ public interface IdentifierService { * @param queryId The query id. * @return The list of identifiers. */ - List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId); + List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId); /** * Finds all identifiers in the metadata database which are identifying databases. @@ -83,7 +84,7 @@ public interface IdentifierService { * @param tableId Optional. The table id. * @return The list of identifiers. */ - List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId); + List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId); /** * Publishes a draft identifier with DataCite. @@ -95,7 +96,6 @@ public interface IdentifierService { * @throws SearchServiceConnectionException * @throws MalformedException * @throws DataServiceConnectionException - * @throws IdentifierNotFoundException */ Identifier publish(Identifier identifier) throws SearchServiceException, DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, DataServiceConnectionException, diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java index cc51082d65f1b72a066208b83276169fd36d8f5d..c5f353c7a18a5cb5e6eecd6819b7923e4b49d08e 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java @@ -9,6 +9,7 @@ import at.tuwien.exception.ImageNotFoundException; import java.security.Principal; import java.util.List; +import java.util.UUID; public interface ImageService { @@ -25,7 +26,7 @@ public interface ImageService { * @param imageId The image id. * @return The image, if successful. */ - ContainerImage find(Long imageId) throws ImageNotFoundException; + ContainerImage find(UUID imageId) throws ImageNotFoundException; /** * Creates a new container image in the metadata database. diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java index 6755a64952f35b14c9681ec839bafd3856a40e91..c8e4c7067642ca1b948a321dba5d004d0f9eb2d2 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java @@ -7,6 +7,7 @@ import at.tuwien.exception.OntologyNotFoundException; import java.security.Principal; import java.util.List; +import java.util.UUID; public interface OntologyService { @@ -31,7 +32,7 @@ public interface OntologyService { * @return The ontology, if successful. * @throws OntologyNotFoundException The ontology was not found in the metadata database. */ - Ontology find(Long ontologyId) throws OntologyNotFoundException; + Ontology find(UUID ontologyId) throws OntologyNotFoundException; Ontology find(String entityUri) throws OntologyNotFoundException; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java index c0880c07dc8230d803ad455093cbea17c3145f61..2edea6ebeb2a61a80e4891a59afe4fd018e42109 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java @@ -9,6 +9,7 @@ import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.exception.*; import java.security.Principal; +import java.util.UUID; public interface TableService { @@ -19,7 +20,7 @@ public interface TableService { * @param tableId The table id. * @return The table, if successful. */ - Table findById(Database database, Long tableId) throws TableNotFoundException, DatabaseNotFoundException; + Table findById(Database database, UUID tableId) throws TableNotFoundException, DatabaseNotFoundException; /** * Find a table in the metadata database by database id and table name. @@ -57,7 +58,7 @@ public interface TableService { TableColumn update(TableColumn column, ColumnSemanticsUpdateDto updateDto) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException; - TableColumn findColumnById(Table table, Long columnId) throws MalformedException; + TableColumn findColumnById(Table table, UUID columnId) throws MalformedException; void updateStatistics(Table table) throws SearchServiceException, DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, TableNotFoundException, DataServiceException, DataServiceConnectionException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java index 4d183f1cc467d070a51a89edca99850c81a9b2ed..a5769ea9868f1fcc60983733c1994ee7364edff9 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java @@ -8,6 +8,7 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import java.util.List; +import java.util.UUID; public interface ViewService { @@ -18,7 +19,7 @@ public interface ViewService { * @param viewId The view id. * @return The view, if successful. */ - View findById(Database database, Long viewId) throws ViewNotFoundException; + View findById(Database database, UUID viewId) throws ViewNotFoundException; /** * Find all views by database id. @@ -50,7 +51,6 @@ public interface ViewService { * @throws DatabaseNotFoundException * @throws SearchServiceException * @throws SearchServiceConnectionException - * @throws ViewNotFoundException */ View create(Database database, User user, CreateViewDto data) throws MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index 1c302c206871234da50f2cc9de234d7c94a84d66..e5b59ebda8accad54421a1ed9834c7114b9ab911 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -72,8 +72,8 @@ public class AccessServiceImpl implements AccessService { .hdbid(database.getId()) .database(database) .huserid(user.getId()) - .type(metadataMapper.accessTypeDtoToAccessType(type)) .user(user) + .type(metadataMapper.accessTypeDtoToAccessType(type)) .build(); database.getAccesses() .add(access); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java index ac465232503374a1bd3df7d09e46bef00c473673..d75d384b3c293e68d00eba2da092ae85214617d5 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; +import java.util.UUID; @Log4j2 @Service @@ -39,7 +40,7 @@ public class BannerMessageServiceImpl implements BannerMessageService { } @Override - public BannerMessage find(Long id) throws MessageNotFoundException { + public BannerMessage find(UUID id) throws MessageNotFoundException { final Optional<BannerMessage> optional = bannerMessageRepository.findById(id); if (optional.isEmpty()) { log.error("Failed to find banner message with id {}", id); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java index 2a3c3215367605b943a3a2701c47b139c20c1b5d..d92b6c17dc052728af0eb2e861baecdcda150995 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; +import java.util.UUID; @Log4j2 @Service @@ -81,7 +82,7 @@ public class ContainerServiceImpl implements ContainerService { @Override @Transactional - public Container find(Long id) throws ContainerNotFoundException { + public Container find(UUID id) throws ContainerNotFoundException { final Optional<Container> container = containerRepository.findById(id); if (container.isEmpty()) { log.error("Failed to find container with id {} in metadata database", id); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java index b4e42a67e15939c2b779fc0dbe9d392371588c76..0c8ce27d1214b1ac47c6756d7f5d3fbe4c77adcd 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.util.List; +import java.util.UUID; @Slf4j @Primary @@ -64,7 +65,7 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService { @Override @Transactional(readOnly = true) - public List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId) { + public List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId) { return identifierService.findAll(type, databaseId, queryId, viewId, tableId); } @@ -79,7 +80,7 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService { @Override @Transactional(readOnly = true) - public List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId) { + public List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId) { return identifierService.findByDatabaseIdAndQueryId(databaseId, queryId); } @@ -167,13 +168,13 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService { } @Override - public List<Identifier> findAll(Long databaseId) { + public List<Identifier> findAll(UUID databaseId) { return identifierService.findAll(databaseId); } @Override @Transactional(readOnly = true) - public Identifier find(Long identifierId) throws IdentifierNotFoundException { + public Identifier find(UUID identifierId) throws IdentifierNotFoundException { return identifierService.find(identifierId); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index 8b4c73fb2f063cfc779fa001b7982675d74cf447..7e3298ef09d236b55720183c576ecd8284e5dd3d 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -84,7 +84,7 @@ public class DatabaseServiceImpl implements DatabaseService { @Override @Transactional(readOnly = true) - public Database findById(Long id) throws DatabaseNotFoundException { + public Database findById(UUID id) throws DatabaseNotFoundException { final Optional<Database> database = databaseRepository.findById(id); if (database.isEmpty()) { log.error("Failed to find database with id {} in metadata database", id); @@ -130,10 +130,10 @@ public class DatabaseServiceImpl implements DatabaseService { final Database entity1 = databaseRepository.save(entity); entity1.getAccesses() .add(metadataMapper.userToWriteAllAccess(entity1, user)); - entity1.getAccesses() - .addAll(internalUsers.stream() - .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser)) - .toList()); +// entity1.getAccesses() +// .addAll(internalUsers.stream() +// .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser)) +// .toList()); final Database database = databaseRepository.save(entity1); /* create in search service */ searchServiceGateway.update(database); 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 96b8bd83963cca91e4731812ee0812a54a4630dc..b1d1f45932c61bb755a615f22a6a919297ffec46 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 @@ -31,10 +31,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.exceptions.TemplateInputException; import java.nio.charset.Charset; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Stream; @Slf4j @@ -69,13 +66,13 @@ public class IdentifierServiceImpl implements IdentifierService { } @Override - public List<Identifier> findAll(Long databaseId) { + public List<Identifier> findAll(UUID databaseId) { return identifierRepository.findByDatabaseId(databaseId); } @Override @Transactional(readOnly = true) - public Identifier find(Long identifierId) throws IdentifierNotFoundException { + public Identifier find(UUID identifierId) throws IdentifierNotFoundException { final Optional<Identifier> optional = identifierRepository.findById(identifierId); if (optional.isEmpty()) { log.error("Failed to find identifier with id: {}", identifierId); @@ -97,7 +94,7 @@ public class IdentifierServiceImpl implements IdentifierService { @Override @Transactional(readOnly = true) - public List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId) { + public List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId) { return identifierRepository.findByDatabaseIdAndQueryId(databaseId, queryId); } @@ -113,7 +110,7 @@ public class IdentifierServiceImpl implements IdentifierService { @Override @Transactional(readOnly = true) - public List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId) { + public List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId) { final List<Identifier> identifiers = this.identifierRepository.findAll(); log.trace("found {} identifiers before applying filter(s)", identifiers.size()); Stream<Identifier> stream = identifiers.stream(); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java index 84fdffcf43b1e6e6f110bf0acf72d4ca75a3a3cf..b82c8ca38290d5bc24dff6f60a14c5051ecf4697 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import java.security.Principal; import java.util.List; import java.util.Optional; +import java.util.UUID; @Slf4j @Service @@ -41,7 +42,7 @@ public class ImageServiceImpl implements ImageService { @Override @Transactional - public ContainerImage find(Long imageId) throws ImageNotFoundException { + public ContainerImage find(UUID imageId) throws ImageNotFoundException { final Optional<ContainerImage> image = imageRepository.findById(imageId); if (image.isEmpty()) { log.error("Failed to find image with id {}", imageId); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java index 14c621e2f9d10799864d8d85a6f019353ca67b08..1b6051f5437ba8a07ee10eef0ebe1c5ef5e67587 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java @@ -28,6 +28,7 @@ import org.thymeleaf.context.Context; import java.time.Instant; import java.util.List; import java.util.Optional; +import java.util.UUID; @Slf4j @Service @@ -97,7 +98,7 @@ public class MetadataServiceImpl implements MetadataService { if (parameters.getIdentifier().startsWith("doi")) { identifier = identifierService.findByDoi(parameters.getIdentifier().substring(4)); } else if (parameters.getIdentifier().startsWith("oai")) { - identifier = identifierService.find(Long.parseLong(parameters.getIdentifier().substring(4))); + identifier = identifierService.find(UUID.fromString(parameters.getIdentifier().substring(4))); } else { final String prefix = parameters.getIdentifier().substring(0, 3); log.error("Invalid prefix: {}", prefix); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java index 3f242914e9ac0f187b7e05258d7fe16edf0715c2..d40239a06eb560272aea8acdf35a0f3bdc39fe4f 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java @@ -17,6 +17,7 @@ import java.net.URISyntaxException; import java.security.Principal; import java.util.List; import java.util.Optional; +import java.util.UUID; @Log4j2 @Service @@ -45,7 +46,7 @@ public class OntologyServiceImpl implements OntologyService { } @Override - public Ontology find(Long id) throws OntologyNotFoundException { + public Ontology find(UUID id) throws OntologyNotFoundException { final Optional<Ontology> optional = ontologyRepository.findById(id); if (optional.isEmpty()) { log.error("Failed to find ontology with id {}", id); 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 da92fb7ef59eac9af0df3cf1f779da150c2d437f..01c0c990b773719f69f149b8516746c31ba83cd9 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 @@ -25,10 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.security.Principal; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; @Log4j2 @Service @@ -62,7 +59,7 @@ public class TableServiceImpl implements TableService { @Override @Transactional(readOnly = true) - public Table findById(Database database, Long tableId) throws TableNotFoundException { + public Table findById(Database database, UUID tableId) throws TableNotFoundException { final Optional<Table> table = database.getTables() .stream() .filter(t -> t.getId().equals(tableId)) @@ -265,7 +262,7 @@ public class TableServiceImpl implements TableService { @Override @Transactional(readOnly = true) - public TableColumn findColumnById(Table table, Long columnId) throws MalformedException { + public TableColumn findColumnById(Table table, UUID columnId) throws MalformedException { final Optional<TableColumn> optional = table.getColumns() .stream() .filter(c -> c.getId().equals(columnId)) diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java index 8ca688b1edcc869be309561b4c9fef434e081285..7bb45d568e7ed729f7e8a2b379d7055500ccedd3 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java @@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets; import java.util.LinkedList; import java.util.List; import java.util.Optional; +import java.util.UUID; @Log4j2 @Service @@ -42,14 +43,14 @@ public class ViewServiceImpl implements ViewService { } @Override - public View findById(Database database, Long viewId) throws ViewNotFoundException { + public View findById(Database database, UUID viewId) throws ViewNotFoundException { final Optional<View> optional = database.getViews() .stream() .filter(v -> v.getId().equals(viewId)) .findFirst(); if (optional.isEmpty()) { - log.error("Failed to find view with id {}", viewId); - throw new ViewNotFoundException("Failed to find view with id " + viewId); + log.error("Failed to find view with id: {}", viewId); + throw new ViewNotFoundException("Failed to find view with id: " + viewId); } return optional.get(); } @@ -92,7 +93,6 @@ public class ViewServiceImpl implements ViewService { SearchServiceConnectionException { /* create in metadata database */ final View view = View.builder() - .vdbid(database.getId()) .database(database) .name(data.getName()) .internalName(metadataMapper.nameToInternalName(data.getName())) diff --git a/dbrepo-metadata-service/test/pom.xml b/dbrepo-metadata-service/test/pom.xml index a68140ebac0f0d0289e88e14a754a8f72a6f18cc..792523227eaa968b3dd8c340779bece2323cb461 100644 --- a/dbrepo-metadata-service/test/pom.xml +++ b/dbrepo-metadata-service/test/pom.xml @@ -6,12 +6,12 @@ <parent> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service</artifactId> - <version>1.6.5</version> + <version>1.7.0</version> </parent> <artifactId>dbrepo-metadata-service-test</artifactId> <name>dbrepo-metadata-service-test</name> - <version>1.6.5</version> + <version>1.7.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java index 1c88f1775a0d2aba3760178da9b8931cc7b4a603..b5da835fa1e471d8e5a0ccda75724ec4d9c7c6c3 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java @@ -6,8 +6,6 @@ import at.tuwien.api.amqp.ExchangeDto; import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto; import at.tuwien.api.amqp.QueueDto; import at.tuwien.api.auth.CreateUserDto; -import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.RefreshTokenRequestDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.*; @@ -66,20 +64,15 @@ import at.tuwien.entities.maintenance.BannerMessageType; import at.tuwien.entities.semantics.Ontology; import at.tuwien.entities.user.User; import at.tuwien.test.utils.ArrayUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.core.io.InputStreamResource; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; -import java.io.File; -import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.math.BigInteger; -import java.nio.charset.Charset; import java.security.Principal; import java.time.Instant; import java.time.LocalDate; @@ -128,7 +121,7 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <li>Identifier 6 (Title=en, Description=en, Query=3)</li> * </ul> * <p> - * Database 4 (Public Data, Public Schema, User 4) -> Container 2 + * Database 4 (Public Data, Public Schema, User 4) -> Container 4 * <li>Table 9</li> * <li>Identifier 7</li> * <li>Query 7</li> @@ -279,11 +272,7 @@ public abstract class BaseTest { .scope(TOKEN_ACCESS_SCOPE) .build(); - public static final RefreshTokenRequestDto REFRESH_TOKEN_REQUEST_DTO = RefreshTokenRequestDto.builder() - .refreshToken("ey.yee.skrr") - .build(); - - public static final Long CONCEPT_1_ID = 1L; + public static final UUID CONCEPT_1_ID = UUID.fromString("8cabc011-4bdf-44d4-9d33-b2648e2ddbf1"); public static final String CONCEPT_1_NAME = "precipitation"; public static final String CONCEPT_1_URI = "http://www.wikidata.org/entity/Q25257"; public static final String CONCEPT_1_DESCRIPTION = null; @@ -323,7 +312,7 @@ public abstract class BaseTest { .label(CONCEPT_1_NAME) .build(); - public static final Long CONCEPT_2_ID = 2L; + public static final UUID CONCEPT_2_ID = UUID.fromString("c5cf9914-15c1-4813-af11-eb2a070d59a9"); public static final String CONCEPT_2_NAME = "FAIR data"; public static final String CONCEPT_2_URI = "http://www.wikidata.org/entity/Q29032648"; public static final String CONCEPT_2_DESCRIPTION = "data compliant with the terms of the FAIR Data Principles"; @@ -357,7 +346,7 @@ public abstract class BaseTest { .created(CONCEPT_2_CREATED) .build(); - public static final Long UNIT_1_ID = 1L; + public static final UUID UNIT_1_ID = UUID.fromString("1fee60e4-42f8-4883-85a8-e282fddf6a62"); public static final String UNIT_1_NAME = "millimetre"; public static final String UNIT_1_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/millimetre"; public static final String UNIT_1_DESCRIPTION = "The millimetre is a unit of length defined as 1.0e-3 metre."; @@ -397,7 +386,7 @@ public abstract class BaseTest { .label(UNIT_1_NAME) .build(); - public static final Long UNIT_2_ID = 2L; + public static final UUID UNIT_2_ID = UUID.fromString("d88591a9-5171-4b12-8381-bcff1cfe7442"); public static final String UNIT_2_NAME = "tonne"; public static final String UNIT_2_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/tonne"; public static final String UNIT_2_DESCRIPTION = "The tonne is a unit of mass defined as 1000 kilogram."; @@ -446,11 +435,6 @@ public abstract class BaseTest { @SuppressWarnings("java:S2068") public static final String USER_LOCAL_ADMIN_MARIADB_PASSWORD = "*440BA4FD1A87A0999647DB67C0EE258198B247BA"; - public static final LoginRequestDto USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO = LoginRequestDto.builder() - .username(USER_LOCAL_ADMIN_USERNAME) - .password(USER_LOCAL_ADMIN_PASSWORD) - .build(); - public static final UserDetails USER_LOCAL_ADMIN_DETAILS = UserDetailsDto.builder() .id(USER_LOCAL_ADMIN_ID.toString()) .username(USER_LOCAL_ADMIN_USERNAME) @@ -598,11 +582,6 @@ public abstract class BaseTest { public static final Principal USER_1_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_1_DETAILS, USER_1_PASSWORD, USER_1_DETAILS.getAuthorities()); - public static final LoginRequestDto USER_1_LOGIN_REQUEST_DTO = LoginRequestDto.builder() - .username(USER_1_USERNAME) - .password(USER_1_PASSWORD) - .build(); - public static final UUID USER_2_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c"); public static final UUID USER_2_KEYCLOAK_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c"); public static final String USER_2_USERNAME = "junit2"; @@ -909,7 +888,7 @@ public abstract class BaseTest { public static final Principal USER_6_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_6_DETAILS, USER_6_PASSWORD, USER_6_DETAILS.getAuthorities()); - public static final Long IMAGE_1_ID = 1L; + public static final UUID IMAGE_1_ID = UUID.fromString("e5449ade-acc1-4ba4-8858-e3496cdecd9c"); public static final String IMAGE_1_REGISTRY = "docker.io"; public static final String IMAGE_1_NAME = "mariadb"; public static final String IMAGE_1_VERSION = "11.1.3"; @@ -952,14 +931,10 @@ public abstract class BaseTest { public static final ImageDto IMAGE_1_DTO = ImageDto.builder() .id(IMAGE_1_ID) - .registry(IMAGE_1_REGISTRY) .name(IMAGE_1_NAME) .version(IMAGE_1_VERSION) - .dialect(IMAGE_1_DIALECT) - .jdbcMethod(IMAGE_1_JDBC) - .driverClass(IMAGE_1_DRIVER) - .defaultPort(IMAGE_1_PORT) .isDefault(IMAGE_1_IS_DEFAULT) + .jdbcMethod(IMAGE_1_JDBC) .operators(null) .build(); @@ -968,10 +943,9 @@ public abstract class BaseTest { .name(IMAGE_1_NAME) .version(IMAGE_1_VERSION) .isDefault(IMAGE_1_IS_DEFAULT) - .jdbcMethod(IMAGE_1_JDBC) .build(); - public static final Long IMAGE_1_OPERATORS_1_ID = 1L; + public static final UUID IMAGE_1_OPERATORS_1_ID = UUID.fromString("42a56348-38bd-4aba-b0f2-ac813d5d2da1"); public static final String IMAGE_1_OPERATORS_1_DISPLAY_NAME = "XOR"; public static final String IMAGE_1_OPERATORS_1_VALUE = "XOR"; public static final String IMAGE_1_OPERATORS_1_DOCUMENTATION = "https://mariadb.com/kb/en/xor/"; @@ -993,7 +967,7 @@ public abstract class BaseTest { .documentation(IMAGE_1_OPERATORS_1_DOCUMENTATION) .build())); - public static final Long CONTAINER_1_ID = 1L; + public static final UUID CONTAINER_1_ID = UUID.fromString("7ddb7e87-b965-43a2-9a24-4fa406d998f4"); public static final String CONTAINER_1_NAME = "u01"; public static final String CONTAINER_1_INTERNALNAME = "dbrepo-userdb-u01"; public static final String CONTAINER_1_UI_HOST = "localhost"; @@ -1022,6 +996,7 @@ public abstract class BaseTest { .uiAdditionalFlags(CONTAINER_1_UI_ADDITIONAL_FLAGS) .privilegedUsername(CONTAINER_1_PRIVILEGED_USERNAME) .privilegedPassword(CONTAINER_1_PRIVILEGED_PASSWORD) + .databases(null) /* DATABASE_1, DATABASE_2, DATABASE_3 */ .build(); public static final ContainerDto CONTAINER_1_DTO = ContainerDto.builder() @@ -1054,7 +1029,7 @@ public abstract class BaseTest { .password(CONTAINER_1_PRIVILEGED_PASSWORD) .build(); - public static final Long CONTAINER_2_ID = 2L; + public static final UUID CONTAINER_2_ID = UUID.fromString("c2ec601e-2bfb-4be8-8891-0cb804a08d4a"); public static final ContainerImage CONTAINER_2_IMAGE = IMAGE_1; public static final ImageDto CONTAINER_2_IMAGE_DTO = IMAGE_1_DTO; public static final String CONTAINER_2_NAME = "u02"; @@ -1110,7 +1085,7 @@ public abstract class BaseTest { .password(CONTAINER_2_PRIVILEGED_PASSWORD) .build(); - public static final Long CONTAINER_3_ID = 3L; + public static final UUID CONTAINER_3_ID = UUID.fromString("1731c7d2-8bd1-4392-85bc-18a3be99e01d"); public static final ContainerImage CONTAINER_3_IMAGE = IMAGE_1; public static final String CONTAINER_3_NAME = "u03"; public static final String CONTAINER_3_INTERNALNAME = "dbrepo-userdb-u03"; @@ -1136,7 +1111,7 @@ public abstract class BaseTest { .privilegedPassword(CONTAINER_3_PRIVILEGED_PASSWORD) .build(); - public static final Long CONTAINER_4_ID = 4L; + public static final UUID CONTAINER_4_ID = UUID.fromString("67aee75c-791c-410b-abbb-175c11ddd252"); public static final ContainerImage CONTAINER_4_IMAGE = IMAGE_1; public static final String CONTAINER_4_NAME = "u04"; public static final String CONTAINER_4_INTERNALNAME = "dbrepo-userdb-u04"; @@ -1159,6 +1134,7 @@ public abstract class BaseTest { .quota(CONTAINER_4_QUOTA) .privilegedUsername(CONTAINER_4_PRIVILEGED_USERNAME) .privilegedPassword(CONTAINER_4_PRIVILEGED_PASSWORD) + .databases(null) /* DATABASE_4 */ .build(); public static final String EXCHANGE_DBREPO_NAME = "dbrepo"; @@ -1177,7 +1153,7 @@ public abstract class BaseTest { .internal(EXCHANGE_DBREPO_INTERNAL) .build(); - public static final Long DATABASE_1_ID = 1L; + public static final UUID DATABASE_1_ID = UUID.fromString("b3bcb5bf-4f88-40e2-9726-9b0d2ee2b425"); public static final String DATABASE_1_NAME = "Weather"; public static final String DATABASE_1_DESCRIPTION = "Weather in Australia"; public static final String DATABASE_1_INTERNALNAME = "weather"; @@ -1204,7 +1180,7 @@ public abstract class BaseTest { .privilegedPassword(CONTAINER_1_PRIVILEGED_PASSWORD) .build(); - public static final Long DATABASE_2_ID = 2L; + public static final UUID DATABASE_2_ID = UUID.fromString("dd9dfee2-9fbd-46b0-92d5-98f0f8866ffe"); public static final String DATABASE_2_NAME = "Zoo"; public static final String DATABASE_2_DESCRIPTION = "Zoo data"; public static final String DATABASE_2_INTERNALNAME = "zoo"; @@ -1222,7 +1198,7 @@ public abstract class BaseTest { .cid(CONTAINER_1_ID) .build(); - public static final Long DATABASE_3_ID = 3L; + public static final UUID DATABASE_3_ID = UUID.fromString("9d8cb9a9-9468-4801-a2e0-2dac8bc67c31"); public static final String DATABASE_3_NAME = "Musicology"; public static final String DATABASE_3_DESCRIPTION = "Musicology data"; public static final String DATABASE_3_INTERNALNAME = "musicology"; @@ -1278,7 +1254,7 @@ public abstract class BaseTest { .cid(CONTAINER_1_ID) .build(); - public static final Long DATABASE_4_ID = 4L; + public static final UUID DATABASE_4_ID = UUID.fromString("c503d7f3-5952-4d97-b26a-da86bea4c20d"); public static final String DATABASE_4_NAME = "Weather AT"; public static final String DATABASE_4_DESCRIPTION = "Weather data"; public static final Boolean DATABASE_4_PUBLIC = true; @@ -1501,7 +1477,7 @@ public abstract class BaseTest { .build())) .build(); - public static final Long TABLE_1_ID = 1L; + public static final UUID TABLE_1_ID = UUID.fromString("666d0b6b-f017-4f7c-80d8-a47174d8b539"); public static final String TABLE_1_NAME = "Weather AUS"; public static final String TABLE_1_INTERNAL_NAME = "weather_aus"; public static final Boolean TABLE_1_VERSIONED = true; @@ -1510,8 +1486,7 @@ public abstract class BaseTest { public static final Boolean TABLE_1_PROCESSED_CONSTRAINTS = true; public static final String TABLE_1_DESCRIPTION = "Weather in Australia"; public static final String TABLE_1_QUEUE_NAME = TABLE_1_INTERNAL_NAME; - public static final String TABLE_1_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_1_ID; - public static final Long TABLE_1_DATABASE_ID = DATABASE_1_ID; + public static final String TABLE_1_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_1_ID; public static final Long TABLE_1_AVG_ROW_LENGTH = 3L; public static final Long TABLE_1_NUM_ROWS = 3L; public static final Long TABLE_1_DATA_LENGTH = 2000L; @@ -1587,8 +1562,18 @@ public abstract class BaseTest { .maxDataLength(TABLE_1_MAX_DATA_LENGTH) .build(); + public static final UUID COLUMN_1_1_ID = UUID.fromString("377c0a6e-938e-458c-ad2b-bbbd75d46412"); + + public static final UUID COLUMN_1_2_ID = UUID.fromString("dbca4821-3023-479b-a25a-c08eb0ec02ce"); + + public static final UUID COLUMN_1_3_ID = UUID.fromString("8ff0351e-4882-4948-94af-598e4b264b25"); + + public static final UUID COLUMN_1_4_ID = UUID.fromString("9ab256eb-3324-4e76-af3b-e3e2a58ce161"); + + public static final UUID COLUMN_1_5_ID = UUID.fromString("619e9355-51aa-438f-8579-80cec30f35cb"); + public static final List<ColumnDto> TABLE_1_COLUMNS_DTO = List.of(ColumnDto.builder() - .id(1L) + .id(COLUMN_1_1_ID) .tableId(TABLE_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(0) @@ -1600,7 +1585,7 @@ public abstract class BaseTest { .sets(null) .build(), ColumnDto.builder() - .id(2L) + .id(COLUMN_1_2_ID) .tableId(TABLE_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(1) @@ -1612,7 +1597,7 @@ public abstract class BaseTest { .sets(null) .build(), ColumnDto.builder() - .id(3L) + .id(COLUMN_1_3_ID) .tableId(TABLE_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(2) @@ -1625,7 +1610,7 @@ public abstract class BaseTest { .sets(null) .build(), ColumnDto.builder() - .id(4L) + .id(COLUMN_1_4_ID) .tableId(TABLE_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(3) @@ -1639,7 +1624,7 @@ public abstract class BaseTest { .sets(null) .build(), ColumnDto.builder() - .id(5L) + .id(COLUMN_1_5_ID) .tableId(TABLE_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(4) @@ -1693,7 +1678,7 @@ public abstract class BaseTest { }} )); - public static final Long TABLE_2_ID = 2L; + public static final UUID TABLE_2_ID = UUID.fromString("0cc067b6-4e81-4871-b47e-17a38228a574"); public static final String TABLE_2_NAME = "Weather Location"; public static final String TABLE_2_INTERNALNAME = "weather_location"; public static final Boolean TABLE_2_VERSIONED = true; @@ -1702,7 +1687,7 @@ public abstract class BaseTest { public static final Boolean TABLE_2_PROCESSED_CONSTRAINTS = true; public static final String TABLE_2_DESCRIPTION = "Weather location"; public static final String TABLE_2_QUEUE_NAME = TABLE_2_INTERNALNAME; - public static final String TABLE_2_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_2_ID; + public static final String TABLE_2_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_2_ID; public static final Instant TABLE_2_CREATED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */; public static final Instant TABLE_2_LAST_MODIFIED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */; public static final Long TABLE_2_AVG_ROW_LENGTH = 3L; @@ -1788,7 +1773,7 @@ public abstract class BaseTest { .ownedBy(USER_2_ID) .build(); - public static final Long TABLE_3_ID = 3L; + public static final UUID TABLE_3_ID = UUID.fromString("a94ee518-c235-496b-8613-b0c643bc1b11"); public static final String TABLE_3_NAME = "Sensor"; public static final String TABLE_3_INTERNALNAME = "sensor"; public static final Boolean TABLE_3_VERSIONED = true; @@ -1797,7 +1782,7 @@ public abstract class BaseTest { public static final Boolean TABLE_3_PROCESSED_CONSTRAINTS = true; public static final String TABLE_3_DESCRIPTION = "Some sensor data"; public static final String TABLE_3_QUEUE_NAME = TABLE_3_INTERNALNAME; - public static final String TABLE_3_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_3_ID; + public static final String TABLE_3_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_3_ID; public static final Instant TABLE_3_CREATED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */; public static final Instant TABLE_3_LAST_MODIFIED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */; public static final Long TABLE_3_AVG_ROW_LENGTH = 6L; @@ -1892,7 +1877,7 @@ public abstract class BaseTest { .constraints(TABLE_3_CONSTRAINTS_INVALID_CREATE_DTO) .build(); - public static final Long TABLE_5_ID = 5L; + public static final UUID TABLE_5_ID = UUID.fromString("91306cbd-c51f-47d3-8722-debfdbd8a77e"); public static final String TABLE_5_NAME = "zoo"; public static final String TABLE_5_INTERNALNAME = "zoo"; public static final Boolean TABLE_5_VERSIONED = true; @@ -1901,7 +1886,7 @@ public abstract class BaseTest { public static final Boolean TABLE_5_PROCESSED_CONSTRAINTS = true; public static final String TABLE_5_DESCRIPTION = "Some Kaggle dataset"; public static final String TABLE_5_QUEUE_NAME = TABLE_5_INTERNALNAME; - public static final String TABLE_5_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_5_ID; + public static final String TABLE_5_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_5_ID; public static final Instant TABLE_5_CREATED = Instant.ofEpochSecond(1677400067L) /* 2023-02-26 08:27:47 (UTC) */; public static final Instant TABLE_5_LAST_MODIFIED = Instant.ofEpochSecond(1677400067L) /* 2023-02-26 08:27:47 (UTC) */; public static final Long TABLE_5_AVG_ROW_LENGTH = 1080L; @@ -1978,7 +1963,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public static final Long TABLE_6_ID = 6L; + public static final UUID TABLE_6_ID = UUID.fromString("ae84d169-d36c-4f5a-a390-153d090f9574"); public static final String TABLE_6_NAME = "names"; public static final String TABLE_6_INTERNALNAME = "names"; public static final Boolean TABLE_6_VERSIONED = true; @@ -1987,7 +1972,7 @@ public abstract class BaseTest { public static final Boolean TABLE_6_PROCESSED_CONSTRAINTS = true; public static final String TABLE_6_DESCRIPTION = "Some names dataset"; public static final String TABLE_6_QUEUE_NAME = TABLE_6_INTERNALNAME; - public static final String TABLE_6_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_6_ID; + public static final String TABLE_6_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_6_ID; public static final Instant TABLE_6_CREATED = Instant.ofEpochSecond(1677400117L) /* 2023-02-26 08:28:37 (UTC) */; public static final Instant TABLE_6_LAST_MODIFIED = Instant.ofEpochSecond(1677400117L) /* 2023-02-26 08:28:37 (UTC) */; @@ -2038,7 +2023,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public static final Long TABLE_7_ID = 7L; + public static final UUID TABLE_7_ID = UUID.fromString("e5d10200-3e4f-45f4-9f36-ff3ca39c6c29"); public static final String TABLE_7_NAME = "likes"; public static final String TABLE_7_INTERNAL_NAME = "likes"; public static final Boolean TABLE_7_VERSIONED = true; @@ -2047,7 +2032,7 @@ public abstract class BaseTest { public static final Boolean TABLE_7_PROCESSED_CONSTRAINTS = true; public static final String TABLE_7_DESCRIPTION = "Some likes dataset"; public static final String TABLE_7_QUEUE_NAME = TABLE_7_INTERNAL_NAME; - public static final String TABLE_7_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_7_ID; + public static final String TABLE_7_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_7_ID; public static final Instant TABLE_7_CREATED = Instant.ofEpochSecond(1677400147L) /* 2023-02-26 08:29:07 (UTC) */; public static final Instant TABLE_7_LAST_MODIFIED = Instant.ofEpochSecond(1677400147L) /* 2023-02-26 08:29:07 (UTC) */; @@ -2098,7 +2083,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public static final Long TABLE_4_ID = 4L; + public static final UUID TABLE_4_ID = UUID.fromString("6c87cbcf-5043-404f-9bf1-b09ddbac25a2"); public static final String TABLE_4_NAME = "Sensor 2"; public static final String TABLE_4_INTERNALNAME = "sensor_2"; public static final Boolean TABLE_4_VERSIONED = true; @@ -2106,7 +2091,7 @@ public abstract class BaseTest { public static final Boolean TABLE_4_SCHEMA_PUBLIC = false; public static final String TABLE_4_DESCRIPTION = "Hello sensor"; public static final String TABLE_4_QUEUE_NAME = TABLE_4_INTERNALNAME; - public static final String TABLE_4_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_4_ID; + public static final String TABLE_4_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_4_ID; public static final Instant TABLE_4_CREATED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */; public static final Instant TABLE_4_LAST_MODIFIED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */; public static final Long TABLE_4_AVG_ROW_LENGTH = 0L; @@ -2192,15 +2177,15 @@ public abstract class BaseTest { .build(); public static final ColumnBriefDto TABLE_4_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() - .id(44L) + .id(UUID.fromString("360f02be-6dfb-48ea-9d1e-1da488b0e324")) .name("Timestamp") .internalName("timestamp") .columnType(ColumnTypeDto.TIMESTAMP) .build(); - public static final Long COLUMN_4_1_ID = 44L; + public static final UUID COLUMN_4_1_ID = UUID.fromString("c8ec8a56-dea1-4316-895f-56e6d289cbf7"); - public static final Long COLUMN_4_2_ID = 45L; + public static final UUID COLUMN_4_2_ID = UUID.fromString("d06956ae-aabd-474f-a47d-47af1ba043d1"); public static final List<TableColumn> TABLE_4_COLUMNS = List.of(TableColumn.builder() .id(COLUMN_4_1_ID) @@ -2274,8 +2259,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build()); - public static final Long TABLE_8_ID = 8L; - public static final Long TABLE_8_DATABASE_ID = DATABASE_3_ID; + public static final UUID TABLE_8_ID = UUID.fromString("2e039d0d-3257-4083-8b32-76d7cfa1f7fd"); public static final String TABLE_8_NAME = "location"; public static final String TABLE_8_INTERNAL_NAME = "mfcc"; public static final Boolean TABLE_8_VERSIONED = true; @@ -2283,13 +2267,13 @@ public abstract class BaseTest { public static final Boolean TABLE_8_SCHEMA_PUBLIC = false; public static final String TABLE_8_DESCRIPTION = "Hello mfcc"; public static final String TABLE_8_QUEUE_NAME = TABLE_8_INTERNAL_NAME; - public static final String TABLE_8_ROUTING_KEY = "dbrepo\\." + DATABASE_3_ID + "\\." + TABLE_8_ID; + public static final String TABLE_8_ROUTING_KEY = "dbrepo." + DATABASE_3_ID + "." + TABLE_8_ID; public static final Instant TABLE_8_CREATED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */; public static final Instant TABLE_8_LAST_MODIFIED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */; public static final Table TABLE_8 = Table.builder() .id(TABLE_8_ID) - .tdbid(TABLE_8_DATABASE_ID) + .tdbid(DATABASE_3_ID) .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) @@ -2308,7 +2292,7 @@ public abstract class BaseTest { public static final TableDto TABLE_8_DTO = TableDto.builder() .id(TABLE_8_ID) - .tdbid(TABLE_8_DATABASE_ID) + .tdbid(DATABASE_3_ID) .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) @@ -2341,7 +2325,7 @@ public abstract class BaseTest { public static final TableDto TABLE_8_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_8_ID) - .tdbid(TABLE_8_DATABASE_ID) + .tdbid(DATABASE_3_ID) .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) @@ -2355,8 +2339,7 @@ public abstract class BaseTest { .lastRetrieved(Instant.now()) .build(); - public static final Long TABLE_9_ID = 9L; - public static final Long TABLE_9_DATABASE_ID = DATABASE_4_ID; + public static final UUID TABLE_9_ID = UUID.fromString("9314294f-04fc-4354-8b1f-2a8aeb566453"); public static final String TABLE_9_NAME = "mfcc"; public static final String TABLE_9_INTERNAL_NAME = "mfcc"; public static final Boolean TABLE_9_VERSIONED = true; @@ -2365,13 +2348,13 @@ public abstract class BaseTest { public static final Boolean TABLE_9_PROCESSED_CONSTRAINTS = true; public static final String TABLE_9_DESCRIPTION = "Hello mfcc"; public static final String TABLE_9_QUEUE_NAME = TABLE_9_INTERNAL_NAME; - public static final String TABLE_9_ROUTING_KEY = "dbrepo\\." + DATABASE_3_ID + "\\." + TABLE_9_ID; + public static final String TABLE_9_ROUTING_KEY = "dbrepo." + DATABASE_3_ID + "." + TABLE_9_ID; public static final Instant TABLE_9_CREATED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */; public static final Instant TABLE_9_LAST_MODIFIED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */; public static final Table TABLE_9 = Table.builder() .id(TABLE_9_ID) - .tdbid(TABLE_9_DATABASE_ID) + .tdbid(DATABASE_4_ID) .internalName(TABLE_9_INTERNAL_NAME) .description(TABLE_9_DESCRIPTION) .isVersioned(TABLE_9_VERSIONED) @@ -2390,7 +2373,7 @@ public abstract class BaseTest { public static final TableDto TABLE_9_DTO = TableDto.builder() .id(TABLE_9_ID) - .tdbid(TABLE_9_DATABASE_ID) + .tdbid(DATABASE_4_ID) .internalName(TABLE_9_INTERNAL_NAME) .description(TABLE_9_DESCRIPTION) .isVersioned(TABLE_9_VERSIONED) @@ -2417,7 +2400,7 @@ public abstract class BaseTest { public static final TableDto TABLE_9_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_9_ID) - .tdbid(TABLE_9_DATABASE_ID) + .tdbid(DATABASE_4_ID) .internalName(TABLE_9_INTERNAL_NAME) .description(TABLE_9_DESCRIPTION) .isVersioned(TABLE_9_VERSIONED) @@ -2431,7 +2414,7 @@ public abstract class BaseTest { .lastRetrieved(Instant.now()) .build(); - public static final Long COLUMN_9_1_ID = 78L; + public static final UUID COLUMN_9_1_ID = UUID.fromString("e03c7578-2d1a-4599-9b11-7174f40efc0a"); public static final String COLUMN_9_1_NAME = "location"; public static final String COLUMN_9_1_INTERNAL_NAME = "location"; @@ -2442,9 +2425,9 @@ public abstract class BaseTest { .columnType(ColumnTypeDto.BIGINT) .build(); - public static final Long COLUMN_9_2_ID = 79L; + public static final UUID COLUMN_9_2_ID = UUID.fromString("03c07223-17e1-4af5-b1ae-ef9ab434fe2d"); - public static final Long COLUMN_9_3_ID = 80L; + public static final UUID COLUMN_9_3_ID = UUID.fromString("ee6590db-923b-4234-beb8-3120da055cf6"); public static final List<TableColumn> TABLE_9_COLUMNS = List.of(TableColumn.builder() .id(COLUMN_9_1_ID) @@ -2528,7 +2511,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_9) .column(TABLE_9_COLUMNS.get(0)) - .id(9L) + .id(COLUMN_9_1_ID) .build()))) .build(); @@ -2539,7 +2522,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_9_BRIEF_DTO) .column(TABLE_9_COLUMNS_BRIEF_0_DTO) - .id(9L) + .id(COLUMN_9_1_ID) .build()))) .build(); @@ -2559,7 +2542,7 @@ public abstract class BaseTest { .type(QUEUE_TYPE) .build(); - public static final Long ONTOLOGY_1_ID = 1L; + public static final UUID ONTOLOGY_1_ID = UUID.fromString("dc195d01-0a45-4583-aa83-fd270b874353"); public static final String ONTOLOGY_1_PREFIX = "om2"; public static final String ONTOLOGY_1_NEW_PREFIX = "om-2"; public static final String ONTOLOGY_1_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/"; @@ -2611,7 +2594,7 @@ public abstract class BaseTest { .sparqlEndpoint(ONTOLOGY_1_SPARQL_ENDPOINT) .build(); - public static final Long ONTOLOGY_2_ID = 2L; + public static final UUID ONTOLOGY_2_ID = UUID.fromString("41d902a1-f9f8-4d51-ad64-618b72acf5ed"); public static final String ONTOLOGY_2_PREFIX = "wd"; public static final String ONTOLOGY_2_URI = "http://www.wikidata.org/"; public static final String ONTOLOGY_2_SPARQL_ENDPOINT = "https://query.wikidata.org/sparql"; @@ -2630,7 +2613,7 @@ public abstract class BaseTest { .sparqlEndpoint(ONTOLOGY_2_SPARQL_ENDPOINT) .build(); - public static final Long ONTOLOGY_3_ID = 3L; + public static final UUID ONTOLOGY_3_ID = UUID.fromString("5b41390b-d2d2-45c6-8038-1258c4b2725f"); public static final String ONTOLOGY_3_PREFIX = "rdfs"; public static final String ONTOLOGY_3_URI = "http://www.w3.org/2000/01/rdf-schema#"; public static final String ONTOLOGY_3_SPARQL_ENDPOINT = null; @@ -2649,7 +2632,7 @@ public abstract class BaseTest { .sparqlEndpoint(ONTOLOGY_3_SPARQL_ENDPOINT) .build(); - public static final Long ONTOLOGY_4_ID = 4L; + public static final UUID ONTOLOGY_4_ID = UUID.fromString("d6992475-9b71-4a4a-a6eb-bc1fe6a34443"); public static final String ONTOLOGY_4_PREFIX = "schema"; public static final String ONTOLOGY_4_URI = "http://schema.org/"; public static final String ONTOLOGY_4_SPARQL_ENDPOINT = null; @@ -2668,7 +2651,7 @@ public abstract class BaseTest { .sparqlEndpoint(ONTOLOGY_4_SPARQL_ENDPOINT) .build(); - public static final Long ONTOLOGY_5_ID = 5L; + public static final UUID ONTOLOGY_5_ID = UUID.fromString("f95d1330-762e-4f5a-875a-3c64da5808a1"); public static final String ONTOLOGY_5_PREFIX = "db"; public static final String ONTOLOGY_5_URI = "http://dbpedia.org"; public static final String ONTOLOGY_5_SPARQL_ENDPOINT = "http://dbpedia.org/sparql"; @@ -2687,7 +2670,7 @@ public abstract class BaseTest { .sparqlEndpoint(ONTOLOGY_5_SPARQL_ENDPOINT) .build(); - public static final Long COLUMN_8_1_ID = 75L; + public static final UUID COLUMN_8_1_ID = UUID.fromString("af362ac6-5dbb-4ede-83ea-5d94b39641c8"); public static final Integer COLUMN_8_1_ORDINALPOS = 0; public static final String COLUMN_8_1_NAME = "ID"; public static final String COLUMN_8_1_INTERNAL_NAME = "id"; @@ -2696,7 +2679,7 @@ public abstract class BaseTest { public static final Boolean COLUMN_8_1_NULL = false; public static final Boolean COLUMN_8_1_AUTO_GENERATED = true; - public static final Long COLUMN_8_2_ID = 76L; + public static final UUID COLUMN_8_2_ID = UUID.fromString("7ada597b-0766-4612-9ace-67eeee94e2da"); public static final Integer COLUMN_8_2_ORDINALPOS = 1; public static final String COLUMN_8_2_NAME = "Value"; public static final String COLUMN_8_2_INTERNAL_NAME = "value"; @@ -2707,7 +2690,7 @@ public abstract class BaseTest { public static final Boolean COLUMN_8_2_NULL = false; public static final Boolean COLUMN_8_2_AUTO_GENERATED = false; - public static final Long COLUMN_8_3_ID = 77L; + public static final UUID COLUMN_8_3_ID = UUID.fromString("8bcd9ef8-f7b8-4730-acc1-a3d43ba69a56"); public static final Integer COLUMN_8_3_ORDINALPOS = 2; public static final String COLUMN_8_3_NAME = "raw"; public static final String COLUMN_8_3_INTERNAL_NAME = "raw"; @@ -2826,11 +2809,9 @@ public abstract class BaseTest { }}) .build(); - public static final Long QUERY_1_ID = 1L; + public static final UUID QUERY_1_ID = UUID.fromString("60494137-f000-459e-acd3-4fcadbdf14ca"); public static final String QUERY_1_STATEMENT = "SELECT `id`, `date`, `location`, `mintemp`, `rainfall` FROM `weather_aus` ORDER BY id ASC"; public static final String QUERY_1_DOI = null; - public static final Long QUERY_1_CONTAINER_ID = CONTAINER_1_ID; - public static final Long QUERY_1_DATABASE_ID = DATABASE_1_ID; public static final Long QUERY_1_RESULT_NUMBER = 2L; public static final String QUERY_1_QUERY_HASH = "a3b8ac39e38167d14cf3a9c20a69e4b6954d049525390b973a2c23064953a992"; public static final String QUERY_1_RESULT_HASH = "8358c8ade4849d2094ab5bb29127afdae57e6bb5acb1db7af603813d406c467a"; @@ -2840,7 +2821,7 @@ public abstract class BaseTest { public static final QueryDto QUERY_1_DTO = QueryDto.builder() .id(QUERY_1_ID) - .databaseId(QUERY_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .resultHash(QUERY_1_RESULT_HASH) @@ -2851,7 +2832,7 @@ public abstract class BaseTest { .build(); public static final ViewDto QUERY_1_VIEW_DTO = ViewDto.builder() - .vdbid(QUERY_1_DATABASE_ID) + .vdbid(DATABASE_1_ID) .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .owner(USER_1_BRIEF_DTO) @@ -2879,7 +2860,7 @@ public abstract class BaseTest { public static final QueryBriefDto QUERY_1_BRIEF_DTO = QueryBriefDto.builder() .id(QUERY_1_ID) - .databaseId(QUERY_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .resultHash(QUERY_1_RESULT_HASH) @@ -2889,7 +2870,7 @@ public abstract class BaseTest { .resultNumber(3L) .build(); - public static final Long QUERY_2_ID = 2L; + public static final UUID QUERY_2_ID = UUID.fromString("4e0ac92a-7cb3-4222-9b85-0498c73e0afd"); public static final String QUERY_2_STATEMENT = "SELECT `location` FROM `weather_aus`"; public static final String QUERY_2_QUERY_HASH = "a2d2dd94ebc7653bb5a3b55dd8ed5e91d3d13c225c6855a1eb4eb7ca14c36ced"; public static final Long QUERY_2_RESULT_NUMBER = 2L; @@ -2913,11 +2894,9 @@ public abstract class BaseTest { .resultNumber(3L) .build(); - public static final Long QUERY_3_ID = 3L; + public static final UUID QUERY_3_ID = UUID.fromString("a9849020-45a7-40a8-9a19-d4ae2b28dd46"); public static final String QUERY_3_STATEMENT = "SELECT `location`, `mintemp` FROM `weather_aus` WHERE `mintemp` > 10"; public static final String QUERY_3_QUERY_HASH = "a3d3dd94ebc7653bb5a3b55dd8ed5e91d3d13c335c6855a1eb4eb7ca14c36ced"; - public static final Long QUERY_3_CONTAINER_ID = CONTAINER_1_ID; - public static final Long QUERY_3_DATABASE_ID = DATABASE_1_ID; public static final String QUERY_3_RESULT_HASH = "ff3f7cbe1b96d396957f6e39e55b8b1b577fa3d305d4795af99594cfd30cb80d"; public static final Instant QUERY_3_CREATED = Instant.now().minus(3, MINUTES); public static final Instant QUERY_3_EXECUTION = Instant.now().minus(1, MINUTES); @@ -2927,7 +2906,7 @@ public abstract class BaseTest { public static final QueryDto QUERY_3_DTO = QueryDto.builder() .id(QUERY_3_ID) - .databaseId(QUERY_3_DATABASE_ID) + .databaseId(DATABASE_1_ID) .query(QUERY_3_STATEMENT) .queryNormalized(QUERY_3_STATEMENT) .resultNumber(QUERY_3_RESULT_NUMBER) @@ -2939,7 +2918,7 @@ public abstract class BaseTest { .resultNumber(2L) .build(); - public static final Long QUERY_7_ID = 7L; + public static final UUID QUERY_7_ID = UUID.fromString("fe73a325-30a0-444c-b74f-23ce1533e55f"); public static final String QUERY_7_STATEMENT = "SELECT id, date, a.location, lat, lng FROM weather_aus a JOIN weather_location l on a.location = l.location WHERE date = '2008-12-01'"; public static final String QUERY_7_QUERY_HASH = "df7da3801dfb5c191ff6711d79ce6455f3c09ec8323ce1ff7208ab85387263f5"; public static final String QUERY_7_RESULT_HASH = "ff4f7cbe1b96d496957f6e49e55b8b1b577fa4d405d4795af99594cfd40cb80d"; @@ -2964,11 +2943,9 @@ public abstract class BaseTest { .resultNumber(2L) .build(); - public static final Long QUERY_4_ID = 4L; + public static final UUID QUERY_4_ID = UUID.fromString("18a98197-51ff-4011-9f40-914a11675a6d"); public static final String QUERY_4_STATEMENT = "SELECT `id`, `value` FROM `mfcc`"; public static final String QUERY_4_QUERY_HASH = "df7da3801dfb5c191ff6711d79ce6455f3c09ec8323ce1ff7208ab85387263f5"; - public static final Long QUERY_4_CONTAINER_ID = CONTAINER_3_ID; - public static final Long QUERY_4_DATABASE_ID = DATABASE_3_ID; public static final String QUERY_4_RESULT_HASH = "ff4f7cbe1b96d496957f6e49e55b8b1b577fa4d405d4795af99594cfd40cb80d"; public static final Instant QUERY_4_CREATED = Instant.now().minus(4, MINUTES); public static final Instant QUERY_4_EXECUTION = Instant.now().minus(1, MINUTES); @@ -3012,7 +2989,7 @@ public abstract class BaseTest { public static final QueryDto QUERY_4_DTO = QueryDto.builder() .id(QUERY_4_ID) - .databaseId(QUERY_4_DATABASE_ID) + .databaseId(DATABASE_3_ID) .query(QUERY_4_STATEMENT) .queryNormalized(QUERY_4_STATEMENT) .resultNumber(QUERY_4_RESULT_NUMBER) @@ -3023,11 +3000,9 @@ public abstract class BaseTest { .owner(USER_1_BRIEF_DTO) .build(); - public static final Long QUERY_5_ID = 5L; + public static final UUID QUERY_5_ID = UUID.fromString("1a39f775-e3d5-4865-b4f5-dbbb5693b637"); public static final String QUERY_5_STATEMENT = "SELECT `id`, `value` FROM `mfcc` WHERE `value` > 0"; public static final String QUERY_5_QUERY_HASH = "6d6dc48b12cdfd959d39a62887334a6bbd529b93eed4f211f3f671bd9e7d6225"; - public static final Long QUERY_5_CONTAINER_ID = CONTAINER_3_ID; - public static final Long QUERY_5_DATABASE_ID = DATABASE_3_ID; public static final String QUERY_5_RESULT_HASH = "ff5f7cbe1b96d596957f6e59e55b8b1b577fa5d505d5795af99595cfd50cb80d"; public static final Instant QUERY_5_CREATED = Instant.now().minus(5, MINUTES); public static final Instant QUERY_5_EXECUTION = Instant.now().minus(1, MINUTES); @@ -3037,7 +3012,7 @@ public abstract class BaseTest { public static final QueryDto QUERY_5_DTO = QueryDto.builder() .id(QUERY_5_ID) - .databaseId(QUERY_5_DATABASE_ID) + .databaseId(DATABASE_3_ID) .query(QUERY_5_STATEMENT) .queryNormalized(QUERY_5_STATEMENT) .resultNumber(QUERY_5_RESULT_NUMBER) @@ -3072,7 +3047,7 @@ public abstract class BaseTest { Map.of("id", BigInteger.valueOf(6L), "value", 23.1) )); - public static final Long QUERY_6_ID = 6L; + public static final UUID QUERY_6_ID = UUID.fromString("7463412a-20c4-4fc1-8a33-948aea026f49"); public static final String QUERY_6_STATEMENT = "SELECT `location` FROM `weather_aus` WHERE `id` = 1"; public static final String QUERY_6_QUERY_HASH = "6d6dc48b12cdfd959d39a62887334a6bbd529b93eed4f211f3f671bd9e7d6225"; public static final String QUERY_6_RESULT_HASH = "ff5f7cbe1b96d596957f6e59e55b8b1b577fa5d505d5795af99595cfd50cb80d"; @@ -3095,23 +3070,6 @@ public abstract class BaseTest { .isPersisted(QUERY_6_PERSISTED) .build(); - public static final ColumnBriefDto TABLE_1_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() - .id(1L) - .name("id") - .internalName("id") - .columnType(ColumnTypeDto.BIGINT) - .build(); - - public static final Long COLUMN_1_1_ID = 1L; - - public static final Long COLUMN_1_2_ID = 2L; - - public static final Long COLUMN_1_3_ID = 3L; - - public static final Long COLUMN_1_4_ID = 4L; - - public static final Long COLUMN_1_5_ID = 5L; - public static final List<TableColumn> TABLE_1_COLUMNS = List.of(TableColumn.builder() .id(COLUMN_1_1_ID) .ordinalPosition(0) @@ -3165,6 +3123,13 @@ public abstract class BaseTest { .isNullAllowed(true) .build()); + public static final ColumnBriefDto TABLE_1_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() + .id(COLUMN_1_1_ID) + .name("id") + .internalName("id") + .columnType(ColumnTypeDto.BIGINT) + .build(); + public static final List<CreateTableColumnDto> TABLE_1_COLUMNS_CREATE_DTO = List.of(CreateTableColumnDto.builder() .name("id") .type(ColumnTypeDto.BIGINT) @@ -3235,11 +3200,11 @@ public abstract class BaseTest { .constraints(TABLE_1_CONSTRAINTS_CREATE_INVALID_DTO) .build(); - public static final Long COLUMN_2_1_ID = 6L; + public static final UUID COLUMN_2_1_ID = UUID.fromString("795faa78-7ebb-4dd5-9eb1-e54a9192d0b5"); - public static final Long COLUMN_2_2_ID = 7L; + public static final UUID COLUMN_2_2_ID = UUID.fromString("f316ced5-7774-4656-aa7f-a874622d99b3"); - public static final Long COLUMN_2_3_ID = 8L; + public static final UUID COLUMN_2_3_ID = UUID.fromString("11cb1aa2-8582-45ef-a3bb-7056aa94cdf1"); public static final List<TableColumn> TABLE_2_COLUMNS = List.of(TableColumn.builder() .id(COLUMN_2_1_ID) @@ -3359,75 +3324,75 @@ public abstract class BaseTest { .columnType(ColumnTypeDto.DOUBLE) .build()); - public static final Long COLUMN_3_1_ID = 9L; + public static final UUID COLUMN_3_1_ID = UUID.fromString("49cc2735-ba75-4e12-8ac7-8aec87ed7724"); - public static final Long COLUMN_3_2_ID = 10L; + public static final UUID COLUMN_3_2_ID = UUID.fromString("2c240d64-3052-4a74-b696-e7490fdff3ea"); - public static final Long COLUMN_3_3_ID = 11L; + public static final UUID COLUMN_3_3_ID = UUID.fromString("6fbb0a56-f23a-4aa4-b158-c614a0a30f86"); - public static final Long COLUMN_3_4_ID = 12L; + public static final UUID COLUMN_3_4_ID = UUID.fromString("9b01f925-93ee-4f28-bf31-9902900a7099"); - public static final Long COLUMN_3_5_ID = 13L; + public static final UUID COLUMN_3_5_ID = UUID.fromString("9bbd66f1-0d94-401c-b7f7-6e329bb9ee21"); - public static final Long COLUMN_3_6_ID = 14L; + public static final UUID COLUMN_3_6_ID = UUID.fromString("19ad93d7-b298-495b-9678-9aac80678ff9"); - public static final Long COLUMN_3_7_ID = 15L; + public static final UUID COLUMN_3_7_ID = UUID.fromString("4d27d9f4-645f-4222-b5a8-4a91fa6e4275"); - public static final Long COLUMN_3_8_ID = 16L; + public static final UUID COLUMN_3_8_ID = UUID.fromString("b4f8fcf8-5824-45ec-8c58-43f20e6dffc5"); - public static final Long COLUMN_3_9_ID = 17L; + public static final UUID COLUMN_3_9_ID = UUID.fromString("87247218-369e-484a-9a8f-d758478d8dfc"); - public static final Long COLUMN_3_10_ID = 18L; + public static final UUID COLUMN_3_10_ID = UUID.fromString("6e191b97-189a-4d88-901e-888ca889e280"); - public static final Long COLUMN_3_11_ID = 19L; + public static final UUID COLUMN_3_11_ID = UUID.fromString("6ac356ff-9be5-4259-9b62-83b6707be7fe"); - public static final Long COLUMN_3_12_ID = 20L; + public static final UUID COLUMN_3_12_ID = UUID.fromString("0665b384-c824-4358-b6c5-f17706d46ea4"); - public static final Long COLUMN_3_13_ID = 21L; + public static final UUID COLUMN_3_13_ID = UUID.fromString("22d3676e-d28e-4075-b223-91a7ac767bcf"); - public static final Long COLUMN_3_14_ID = 22L; + public static final UUID COLUMN_3_14_ID = UUID.fromString("673326e3-ee2b-4c2f-902f-982e2abce1c2"); - public static final Long COLUMN_3_15_ID = 23L; + public static final UUID COLUMN_3_15_ID = UUID.fromString("8dcacf4a-736b-4e67-9618-74998cba8940"); - public static final Long COLUMN_3_16_ID = 24L; + public static final UUID COLUMN_3_16_ID = UUID.fromString("2b2f5359-76d3-4763-a53f-d18ca6b793fb"); - public static final Long COLUMN_3_17_ID = 25L; + public static final UUID COLUMN_3_17_ID = UUID.fromString("674b6120-06cf-4624-b006-1ed48898bd69"); - public static final Long COLUMN_3_18_ID = 26L; + public static final UUID COLUMN_3_18_ID = UUID.fromString("13edd7c9-6c88-44d7-b206-34774e49c5af"); - public static final Long COLUMN_3_19_ID = 27L; + public static final UUID COLUMN_3_19_ID = UUID.fromString("6977bb3f-4ae2-43ea-bb82-c7f68454c538"); - public static final Long COLUMN_3_20_ID = 28L; + public static final UUID COLUMN_3_20_ID = UUID.fromString("c03d2429-53e1-42eb-a1f5-ce342fa23336"); - public static final Long COLUMN_3_21_ID = 29L; + public static final UUID COLUMN_3_21_ID = UUID.fromString("06edd332-750e-4aa1-b61b-e757fb2312c3"); - public static final Long COLUMN_3_22_ID = 30L; + public static final UUID COLUMN_3_22_ID = UUID.fromString("b6b8631d-f283-49da-8d5e-4bb24def2a40"); - public static final Long COLUMN_3_23_ID = 31L; + public static final UUID COLUMN_3_23_ID = UUID.fromString("0393ee00-31ba-44ab-9e82-1f5034a9f57b"); - public static final Long COLUMN_3_24_ID = 32L; + public static final UUID COLUMN_3_24_ID = UUID.fromString("a63784ea-f70d-4bda-ace6-1c6a88edf831"); - public static final Long COLUMN_3_25_ID = 33L; + public static final UUID COLUMN_3_25_ID = UUID.fromString("720fe829-802c-420b-8e41-bdbb636db43c"); - public static final Long COLUMN_3_26_ID = 34L; + public static final UUID COLUMN_3_26_ID = UUID.fromString("5bce38ef-7d49-43b5-9054-068750684b5f"); - public static final Long COLUMN_3_27_ID = 35L; + public static final UUID COLUMN_3_27_ID = UUID.fromString("92097c02-3dd3-40ea-bd03-a9135f45a557"); - public static final Long COLUMN_3_28_ID = 36L; + public static final UUID COLUMN_3_28_ID = UUID.fromString("7361a38a-828b-495e-8a57-b36cca17d7db"); - public static final Long COLUMN_3_29_ID = 37L; + public static final UUID COLUMN_3_29_ID = UUID.fromString("a06812db-03b7-484c-92a6-45d94eef3bb9"); - public static final Long COLUMN_3_30_ID = 38L; + public static final UUID COLUMN_3_30_ID = UUID.fromString("05614d89-9216-47ea-96f0-acffc4674acf"); - public static final Long COLUMN_3_31_ID = 39L; + public static final UUID COLUMN_3_31_ID = UUID.fromString("05ada13d-361a-48e7-9a0f-1191499509f1"); - public static final Long COLUMN_3_32_ID = 40L; + public static final UUID COLUMN_3_32_ID = UUID.fromString("b3f259f6-700a-4b60-8eac-dceaa0dcda9d"); - public static final Long COLUMN_3_33_ID = 41L; + public static final UUID COLUMN_3_33_ID = UUID.fromString("9160af06-e168-4b10-a7f9-520f41ae7955"); - public static final Long COLUMN_3_34_ID = 42L; + public static final UUID COLUMN_3_34_ID = UUID.fromString("fde20c99-ed9c-4a60-8c18-f46e8603ebb5"); - public static final Long COLUMN_3_35_ID = 43L; + public static final UUID COLUMN_3_35_ID = UUID.fromString("071c7f27-1cdd-4af9-b4d6-f932c27c7287"); public static final ColumnBriefDto TABLE_3_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() .id(COLUMN_3_1_ID) @@ -4208,47 +4173,47 @@ public abstract class BaseTest { .sets(new LinkedList<>()) .build()); - public static final Long COLUMN_5_1_ID = 46L; + public static final UUID COLUMN_5_1_ID = UUID.fromString("4efd4cbb-ca2e-48e2-8f40-37514956aa67"); - public static final Long COLUMN_5_2_ID = 47L; + public static final UUID COLUMN_5_2_ID = UUID.fromString("53061685-c1db-4df6-ad4e-8f384a200104"); - public static final Long COLUMN_5_3_ID = 48L; + public static final UUID COLUMN_5_3_ID = UUID.fromString("643f9cda-8db1-47a4-bb08-c10e78e54c10"); - public static final Long COLUMN_5_4_ID = 49L; + public static final UUID COLUMN_5_4_ID = UUID.fromString("efeacc15-3b31-4a9f-9dba-f07d62dcddd6"); - public static final Long COLUMN_5_5_ID = 50L; + public static final UUID COLUMN_5_5_ID = UUID.fromString("0319db31-473a-47bc-bb9d-fa1edf82fcd5"); - public static final Long COLUMN_5_6_ID = 51L; + public static final UUID COLUMN_5_6_ID = UUID.fromString("9ba789ca-59cf-4480-b9f6-3b957b1d7f5c"); - public static final Long COLUMN_5_7_ID = 52L; + public static final UUID COLUMN_5_7_ID = UUID.fromString("81c42954-fd1a-4fef-adb1-bc4945469e26"); - public static final Long COLUMN_5_8_ID = 53L; + public static final UUID COLUMN_5_8_ID = UUID.fromString("49a38905-52a2-4a9b-b7b9-5e1dcf799b2a"); - public static final Long COLUMN_5_9_ID = 54L; + public static final UUID COLUMN_5_9_ID = UUID.fromString("1e1a9b6b-5aee-4773-b52d-ea56a5d1e2c8"); - public static final Long COLUMN_5_10_ID = 55L; + public static final UUID COLUMN_5_10_ID = UUID.fromString("42ede62a-ae98-4a14-ba54-76b8ba1c580f"); - public static final Long COLUMN_5_11_ID = 56L; + public static final UUID COLUMN_5_11_ID = UUID.fromString("0af0f84a-5a58-418a-8bbc-bde29ed0cda0"); - public static final Long COLUMN_5_12_ID = 57L; + public static final UUID COLUMN_5_12_ID = UUID.fromString("d9cb30a2-1566-4bd1-899d-060a8ba47722"); - public static final Long COLUMN_5_13_ID = 58L; + public static final UUID COLUMN_5_13_ID = UUID.fromString("e69f7f75-3731-4706-8193-0393aa0c08a7"); - public static final Long COLUMN_5_14_ID = 59L; + public static final UUID COLUMN_5_14_ID = UUID.fromString("4441630e-7dfa-4046-8bc2-929860f1c66e"); - public static final Long COLUMN_5_15_ID = 60L; + public static final UUID COLUMN_5_15_ID = UUID.fromString("f0a12be0-0b26-4686-bf7e-539cdc7e71b4"); - public static final Long COLUMN_5_16_ID = 61L; + public static final UUID COLUMN_5_16_ID = UUID.fromString("b60abdcc-5786-40f8-a309-e4467f7d963c"); - public static final Long COLUMN_5_17_ID = 62L; + public static final UUID COLUMN_5_17_ID = UUID.fromString("6d5877e2-daef-43d6-a1b6-1aff3ab1a9a2"); - public static final Long COLUMN_5_18_ID = 63L; + public static final UUID COLUMN_5_18_ID = UUID.fromString("bb45455f-d449-496e-94f8-eac4d46ba9c0"); - public static final Long COLUMN_5_19_ID = 64L; + public static final UUID COLUMN_5_19_ID = UUID.fromString("44c5484b-b57d-48a4-8f24-d2074de98e1a"); - public static final Long COLUMN_5_20_ID = 65L; + public static final UUID COLUMN_5_20_ID = UUID.fromString("6475b937-71fc-4331-bc85-8ee71fa68d99"); - public static final Long COLUMN_5_21_ID = 66L; + public static final UUID COLUMN_5_21_ID = UUID.fromString("92ff472f-e203-4c8e-b243-81640229ca19"); public static final ColumnBriefDto TABLE_5_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() .id(COLUMN_5_1_ID) @@ -4774,8 +4739,20 @@ public abstract class BaseTest { .constraints(TABLE_5_CONSTRAINTS_INVALID_CREATE) .build(); + public static final UUID COLUMN_6_1_ID = UUID.fromString("27b04a64-2849-4fae-b295-858c3e50361f"); + + public static final UUID COLUMN_6_2_ID = UUID.fromString("1ea62e32-5719-4152-94da-45d37eb88b6f"); + + public static final UUID COLUMN_6_3_ID = UUID.fromString("f523f9f5-42f7-4695-841e-a5fd30fa6879"); + + public static final UUID COLUMN_6_4_ID = UUID.fromString("f57ea880-f917-4127-bcbb-202a34831383"); + + public static final UUID COLUMN_6_5_ID = UUID.fromString("38aaeb63-b94b-4d90-8eae-a626dfb1f092"); + + public static final UUID COLUMN_6_6_ID = UUID.fromString("f788cf6f-66ed-4f28-8b24-d9d173c4d340"); + public static final List<TableColumn> TABLE_6_COLUMNS = List.of(TableColumn.builder() - .id(67L) + .id(COLUMN_6_1_ID) .ordinalPosition(0) .table(TABLE_6) .name("id") @@ -4784,7 +4761,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), TableColumn.builder() - .id(68L) + .id(COLUMN_6_2_ID) .ordinalPosition(1) .table(TABLE_6) .name("firstname") @@ -4793,7 +4770,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), TableColumn.builder() - .id(69L) + .id(COLUMN_6_3_ID) .ordinalPosition(2) .table(TABLE_6) .name("lastname") @@ -4802,7 +4779,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), TableColumn.builder() - .id(70L) + .id(COLUMN_6_4_ID) .ordinalPosition(3) .table(TABLE_6) .name("birth") @@ -4811,7 +4788,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), TableColumn.builder() - .id(71L) + .id(COLUMN_6_5_ID) .ordinalPosition(4) .table(TABLE_6) .name("reminder") @@ -4820,7 +4797,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), TableColumn.builder() - .id(72L) + .id(COLUMN_6_6_ID) .ordinalPosition(5) .table(TABLE_6) .name("ref_id") @@ -4830,14 +4807,14 @@ public abstract class BaseTest { .build()); public static final ColumnBriefDto TABLE_6_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() - .id(67L) + .id(COLUMN_6_1_ID) .name("id") .internalName("id") .columnType(ColumnTypeDto.BIGINT) .build(); public static final List<ColumnDto> TABLE_6_COLUMNS_DTO = List.of(ColumnDto.builder() - .id(67L) + .id(COLUMN_6_1_ID) .ordinalPosition(0) .tableId(TABLE_6_ID) .name("id") @@ -4846,7 +4823,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ColumnDto.builder() - .id(68L) + .id(COLUMN_6_2_ID) .ordinalPosition(1) .tableId(TABLE_6_ID) .name("firstname") @@ -4855,7 +4832,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ColumnDto.builder() - .id(69L) + .id(COLUMN_6_3_ID) .ordinalPosition(2) .tableId(TABLE_6_ID) .name("lastname") @@ -4864,7 +4841,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ColumnDto.builder() - .id(70L) + .id(COLUMN_6_4_ID) .ordinalPosition(3) .tableId(TABLE_6_ID) .name("birth") @@ -4873,7 +4850,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ColumnDto.builder() - .id(71L) + .id(COLUMN_6_5_ID) .ordinalPosition(4) .tableId(TABLE_6_ID) .name("reminder") @@ -4882,7 +4859,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ColumnDto.builder() - .id(72L) + .id(COLUMN_6_6_ID) .ordinalPosition(5) .tableId(TABLE_6_ID) .name("ref_id") @@ -4929,9 +4906,9 @@ public abstract class BaseTest { .constraints(TABLE_6_CONSTRAINTS_CREATE) .build(); - public static final Long COLUMN_7_1_ID = 73L; + public static final UUID COLUMN_7_1_ID = UUID.fromString("395b44a4-0e31-41ea-94ad-c4f2d5e912c6"); - public static final Long COLUMN_7_2_ID = 74L; + public static final UUID COLUMN_7_2_ID = UUID.fromString("5713333b-872a-44c5-ab94-4d0ab62f5663"); public static final ColumnBriefDto TABLE_7_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() .id(COLUMN_7_1_ID) @@ -4985,20 +4962,24 @@ public abstract class BaseTest { .isNullAllowed(false) .build()); - public static final Long VIEW_1_ID = 1L; + public static final UUID VIEW_1_ID = UUID.fromString("7d712cf7-78c7-4a47-90b0-d6b9f7f19b70"); public static final Boolean VIEW_1_INITIAL_VIEW = false; public static final String VIEW_1_NAME = "JUnit"; public static final String VIEW_1_INTERNAL_NAME = "junit"; - public static final Long VIEW_1_CONTAINER_ID = CONTAINER_1_ID; - public static final Long VIEW_1_DATABASE_ID = DATABASE_1_ID; public static final Boolean VIEW_1_PUBLIC = false; public static final Boolean VIEW_1_SCHEMA_PUBLIC = false; public static final String VIEW_1_QUERY = "select `location`, `lat`, `lng` from `weather_location`"; public static final String VIEW_1_QUERY_HASH = "dc81a6877c7c51a6a6f406e1fc2a255e44a0d49a20548596e0d583c3eb849c23"; + public static final UUID VIEW_COLUMN_1_1_ID = UUID.fromString("ebf2c5ce-4deb-4cc6-b6f6-61f5d3f6fc98"); + + public static final UUID VIEW_COLUMN_1_2_ID = UUID.fromString("d6ba3475-cefa-4771-aaa1-9274f16335ee"); + + public static final UUID VIEW_COLUMN_1_3_ID = UUID.fromString("4f189a5f-c9ca-4518-9758-1a0730f6276b"); + public static final List<ViewColumnDto> VIEW_1_COLUMNS_DTO = List.of( ViewColumnDto.builder() - .id(1L) + .id(VIEW_COLUMN_1_1_ID) .ordinalPosition(0) .databaseId(DATABASE_1_ID) .name("location") @@ -5008,7 +4989,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ViewColumnDto.builder() - .id(2L) + .id(VIEW_COLUMN_1_2_ID) .ordinalPosition(1) .databaseId(DATABASE_1_ID) .name("lat") @@ -5019,7 +5000,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(3L) + .id(VIEW_COLUMN_1_3_ID) .ordinalPosition(2) .databaseId(DATABASE_1_ID) .name("lng") @@ -5036,7 +5017,6 @@ public abstract class BaseTest { .isInitialView(VIEW_1_INITIAL_VIEW) .name(VIEW_1_NAME) .internalName(VIEW_1_INTERNAL_NAME) - .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .query(VIEW_1_QUERY) @@ -5045,6 +5025,7 @@ public abstract class BaseTest { .owner(USER_1) .identifiers(new LinkedList<>()) /* IDENTIFIER_3 */ .columns(null) /* VIEW_1_COLUMNS */ + .database(null) /* DATABASE_1 */ .build(); public static final Long VIEW_1_DATA_COUNT = 3L; @@ -5068,7 +5049,7 @@ public abstract class BaseTest { public static final List<ViewColumn> VIEW_1_COLUMNS = List.of( ViewColumn.builder() - .id(1L) + .id(VIEW_COLUMN_1_1_ID) .ordinalPosition(0) .name("location") .internalName("location") @@ -5078,7 +5059,7 @@ public abstract class BaseTest { .view(VIEW_1) .build(), ViewColumn.builder() - .id(2L) + .id(VIEW_COLUMN_1_2_ID) .ordinalPosition(1) .name("lat") .internalName("lat") @@ -5089,7 +5070,7 @@ public abstract class BaseTest { .view(VIEW_1) .build(), ViewColumn.builder() - .id(3L) + .id(VIEW_COLUMN_1_3_ID) .ordinalPosition(2) .name("lng") .internalName("lng") @@ -5106,7 +5087,7 @@ public abstract class BaseTest { .isInitialView(VIEW_1_INITIAL_VIEW) .name(VIEW_1_NAME) .internalName(VIEW_1_INTERNAL_NAME) - .vdbid(VIEW_1_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_1_PUBLIC) .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .identifiers(null /* VIEW_1_DTO_IDENTIFIERS */) @@ -5121,7 +5102,7 @@ public abstract class BaseTest { .isInitialView(VIEW_1_INITIAL_VIEW) .name(VIEW_1_NAME) .internalName(VIEW_1_INTERNAL_NAME) - .vdbid(VIEW_1_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_1_PUBLIC) .owner(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) @@ -5136,7 +5117,7 @@ public abstract class BaseTest { .isInitialView(VIEW_1_INITIAL_VIEW) .name(VIEW_1_NAME) .internalName(VIEW_1_INTERNAL_NAME) - .vdbid(VIEW_1_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_1_PUBLIC) .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .ownedBy(USER_1_ID) @@ -5150,20 +5131,26 @@ public abstract class BaseTest { .query(VIEW_1_QUERY) .build(); - public static final Long VIEW_2_ID = 2L; + public static final UUID VIEW_2_ID = UUID.fromString("1921a0a0-e4b0-4d12-a05f-be920af9b5ce"); public static final Boolean VIEW_2_INITIAL_VIEW = false; public static final String VIEW_2_NAME = "JUnit2"; public static final String VIEW_2_INTERNAL_NAME = "junit2"; - public static final Long VIEW_2_CONTAINER_ID = CONTAINER_1_ID; - public static final Long VIEW_2_DATABASE_ID = DATABASE_1_ID; public static final Boolean VIEW_2_PUBLIC = true; public static final Boolean VIEW_2_SCHEMA_PUBLIC = true; public static final String VIEW_2_QUERY = "select `date`, `location` as loc, `mintemp`, `rainfall` from `weather_aus` where `location` = 'Albury'"; public static final String VIEW_2_QUERY_HASH = "987fc946772ffb6d85060262dcb5df419692a1f6772ea995e3dedb53c191e984"; + public static final UUID VIEW_COLUMN_2_1_ID = UUID.fromString("8fb30bce-04a8-4e9a-9c6b-0776eda3aab8"); + + public static final UUID VIEW_COLUMN_2_2_ID = UUID.fromString("d43f9940-ae27-4d81-b17b-ccbaf578186c"); + + public static final UUID VIEW_COLUMN_2_3_ID = UUID.fromString("b47733bb-aeea-414d-811e-405c64463730"); + + public static final UUID VIEW_COLUMN_2_4_ID = UUID.fromString("2b467e3a-acef-4944-be19-b4b0680874c2"); + public static final List<ViewColumnDto> VIEW_2_COLUMNS_DTO = List.of( ViewColumnDto.builder() - .id(4L) + .id(VIEW_COLUMN_2_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(0) .name("Date") @@ -5172,7 +5159,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(5L) + .id(VIEW_COLUMN_2_2_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(1) .name("loc") @@ -5182,7 +5169,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(6L) + .id(VIEW_COLUMN_2_3_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(2) .name("Rainfall") @@ -5193,7 +5180,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(7L) + .id(VIEW_COLUMN_2_4_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(3) .name("MinTemp") @@ -5210,7 +5197,6 @@ public abstract class BaseTest { .isInitialView(VIEW_2_INITIAL_VIEW) .name(VIEW_2_NAME) .internalName(VIEW_2_INTERNAL_NAME) - .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .columns(null) /* VIEW_2_COLUMNS */ @@ -5218,11 +5204,12 @@ public abstract class BaseTest { .queryHash(VIEW_2_QUERY_HASH) .ownedBy(USER_1_ID) .owner(USER_1) + .database(null) /* DATABASE_1 */ .build(); public static final List<ViewColumn> VIEW_2_COLUMNS = List.of( ViewColumn.builder() - .id(4L) + .id(VIEW_COLUMN_2_1_ID) .ordinalPosition(0) .name("Date") .internalName("date") @@ -5231,7 +5218,7 @@ public abstract class BaseTest { .view(VIEW_2) .build(), ViewColumn.builder() - .id(5L) + .id(VIEW_COLUMN_2_2_ID) .ordinalPosition(1) .name("loc") .internalName("loc") @@ -5241,7 +5228,7 @@ public abstract class BaseTest { .view(VIEW_2) .build(), ViewColumn.builder() - .id(6L) + .id(VIEW_COLUMN_2_3_ID) .ordinalPosition(2) .name("Rainfall") .internalName("rainfall") @@ -5252,7 +5239,7 @@ public abstract class BaseTest { .view(VIEW_2) .build(), ViewColumn.builder() - .id(7L) + .id(VIEW_COLUMN_2_4_ID) .ordinalPosition(3) .name("MinTemp") .internalName("mintemp") @@ -5266,10 +5253,11 @@ public abstract class BaseTest { public static final ViewDto VIEW_2_DTO = ViewDto.builder() .id(VIEW_2_ID) + .vdbid(DATABASE_1_ID) .isInitialView(VIEW_2_INITIAL_VIEW) .name(VIEW_2_NAME) .internalName(VIEW_2_INTERNAL_NAME) - .vdbid(VIEW_2_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_2_PUBLIC) .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .columns(VIEW_2_COLUMNS_DTO) @@ -5283,7 +5271,7 @@ public abstract class BaseTest { .isInitialView(VIEW_2_INITIAL_VIEW) .name(VIEW_2_NAME) .internalName(VIEW_2_INTERNAL_NAME) - .vdbid(VIEW_2_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_2_PUBLIC) .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .owner(USER_2_BRIEF_DTO) @@ -5299,7 +5287,7 @@ public abstract class BaseTest { .isInitialView(VIEW_2_INITIAL_VIEW) .name(VIEW_2_NAME) .internalName(VIEW_2_INTERNAL_NAME) - .vdbid(VIEW_2_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_2_PUBLIC) .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .query(VIEW_2_QUERY) @@ -5307,12 +5295,10 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public static final Long VIEW_3_ID = 3L; + public static final UUID VIEW_3_ID = UUID.fromString("88940939-d456-4aae-88a6-f2b6b343c614"); public static final Boolean VIEW_3_INITIAL_VIEW = false; public static final String VIEW_3_NAME = "JUnit3"; public static final String VIEW_3_INTERNAL_NAME = "junit3"; - public static final Long VIEW_3_CONTAINER_ID = CONTAINER_1_ID; - public static final Long VIEW_3_DATABASE_ID = DATABASE_1_ID; public static final Boolean VIEW_3_PUBLIC = true; public static final Boolean VIEW_3_SCHEMA_PUBLIC = false; public static final String VIEW_3_QUERY = "select w.`mintemp`, w.`rainfall`, w.`location`, m.`date` from `weather_aus` w join `junit2` m on m.`location` = w.`location` and m.`date` = w.`date`"; @@ -5320,9 +5306,17 @@ public abstract class BaseTest { public static final Long VIEW_3_DATA_COUNT = 3L; + public static final UUID VIEW_COLUMN_3_1_ID = UUID.fromString("129839cb-dbd7-492d-8fd0-ee44a8f51c4d"); + + public static final UUID VIEW_COLUMN_3_2_ID = UUID.fromString("e229d80a-c25c-4fbe-8f31-bbb2e1dff3d5"); + + public static final UUID VIEW_COLUMN_3_3_ID = UUID.fromString("12083a5d-fdd3-41db-9f92-d1298558e477"); + + public static final UUID VIEW_COLUMN_3_4_ID = UUID.fromString("668f8a87-1fa6-4be7-9761-1844aa8315a4"); + public static final List<ViewColumnDto> VIEW_3_COLUMNS_DTO = List.of( ViewColumnDto.builder() - .id(8L) + .id(VIEW_COLUMN_3_1_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(0) .name("MinTemp") @@ -5333,7 +5327,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(9L) + .id(VIEW_COLUMN_3_2_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(1) .name("Rainfall") @@ -5344,7 +5338,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(10L) + .id(VIEW_COLUMN_3_3_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(2) .name("Location") @@ -5354,7 +5348,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(11L) + .id(VIEW_COLUMN_3_4_ID) .databaseId(DATABASE_1_ID) .ordinalPosition(3) .name("Date") @@ -5369,7 +5363,6 @@ public abstract class BaseTest { .isInitialView(VIEW_3_INITIAL_VIEW) .name(VIEW_3_NAME) .internalName(VIEW_3_INTERNAL_NAME) - .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .columns(null) /* VIEW_3_COLUMNS */ @@ -5377,6 +5370,7 @@ public abstract class BaseTest { .queryHash(VIEW_3_QUERY_HASH) .ownedBy(USER_1_ID) .owner(USER_1) + .database(null) /* DATABASE_1 */ .build(); public static final ViewDto VIEW_3_PRIVILEGED_DTO = ViewDto.builder() @@ -5384,7 +5378,7 @@ public abstract class BaseTest { .isInitialView(VIEW_3_INITIAL_VIEW) .name(VIEW_3_NAME) .internalName(VIEW_3_INTERNAL_NAME) - .vdbid(VIEW_3_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_3_PUBLIC) .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .owner(USER_1_BRIEF_DTO) @@ -5397,7 +5391,7 @@ public abstract class BaseTest { public static final List<ViewColumn> VIEW_3_COLUMNS = List.of( ViewColumn.builder() - .id(8L) + .id(VIEW_COLUMN_3_1_ID) .ordinalPosition(0) .name("MinTemp") .internalName("mintemp") @@ -5408,7 +5402,7 @@ public abstract class BaseTest { .view(VIEW_3) .build(), ViewColumn.builder() - .id(9L) + .id(VIEW_COLUMN_3_2_ID) .ordinalPosition(1) .name("Rainfall") .internalName("rainfall") @@ -5419,7 +5413,7 @@ public abstract class BaseTest { .view(VIEW_3) .build(), ViewColumn.builder() - .id(10L) + .id(VIEW_COLUMN_3_3_ID) .ordinalPosition(2) .name("Location") .internalName("location") @@ -5429,7 +5423,7 @@ public abstract class BaseTest { .view(VIEW_3) .build(), ViewColumn.builder() - .id(11L) + .id(VIEW_COLUMN_3_4_ID) .ordinalPosition(3) .name("Date") .internalName("date") @@ -5441,10 +5435,11 @@ public abstract class BaseTest { public static final ViewDto VIEW_3_DTO = ViewDto.builder() .id(VIEW_3_ID) + .vdbid(DATABASE_1_ID) .isInitialView(VIEW_3_INITIAL_VIEW) .name(VIEW_3_NAME) .internalName(VIEW_3_INTERNAL_NAME) - .vdbid(VIEW_3_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_3_PUBLIC) .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .columns(VIEW_3_COLUMNS_DTO) @@ -5458,7 +5453,7 @@ public abstract class BaseTest { .isInitialView(VIEW_3_INITIAL_VIEW) .name(VIEW_3_NAME) .internalName(VIEW_3_INTERNAL_NAME) - .vdbid(VIEW_3_DATABASE_ID) + .vdbid(DATABASE_1_ID) .isPublic(VIEW_3_PUBLIC) .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .query(VIEW_3_QUERY) @@ -5466,13 +5461,10 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public static final Long VIEW_4_ID = 4L; + public static final UUID VIEW_4_ID = UUID.fromString("13b36fa0-a65a-4ccf-80b1-5b3a2444a41a"); public static final Boolean VIEW_4_INITIAL_VIEW = false; public static final String VIEW_4_NAME = "Mock View"; public static final String VIEW_4_INTERNAL_NAME = "mock_view"; - public static final Long VIEW_4_CONTAINER_ID = CONTAINER_2_ID; - public static final Long VIEW_4_DATABASE_ID = DATABASE_2_ID; - public static final Long VIEW_4_TABLE_ID = TABLE_5_ID; public static final Table VIEW_4_TABLE = TABLE_5; public static final Boolean VIEW_4_PUBLIC = true; public static final Boolean VIEW_4_SCHEMA_PUBLIC = false; @@ -5481,7 +5473,7 @@ public abstract class BaseTest { public static final List<ViewColumnDto> VIEW_4_COLUMNS_DTO = List.of( ViewColumnDto.builder() - .id(12L) + .id(COLUMN_5_1_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(0) .name("Animal Name") @@ -5490,7 +5482,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(13L) + .id(COLUMN_5_2_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(1) .name("Hair") @@ -5499,7 +5491,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(14L) + .id(COLUMN_5_3_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(2) .name("Feathers") @@ -5508,7 +5500,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(15L) + .id(COLUMN_5_4_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(3) .name("Eggs") @@ -5517,7 +5509,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(16L) + .id(COLUMN_5_5_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(4) .name("Milk") @@ -5526,7 +5518,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(17L) + .id(COLUMN_5_6_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(5) .name("Airborne") @@ -5535,7 +5527,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(18L) + .id(COLUMN_5_7_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(6) .name("Aquantic") @@ -5544,7 +5536,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(19L) + .id(COLUMN_5_8_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(7) .name("Predator") @@ -5553,7 +5545,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(20L) + .id(COLUMN_5_9_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(8) .name("Backbone") @@ -5562,7 +5554,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(21L) + .id(COLUMN_5_10_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(9) .name("Breathes") @@ -5571,7 +5563,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(22L) + .id(COLUMN_5_11_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(10) .name("Venomous") @@ -5580,7 +5572,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(23L) + .id(COLUMN_5_12_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(11) .name("Fin") @@ -5589,7 +5581,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(24L) + .id(COLUMN_5_13_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(12) .name("Legs") @@ -5598,7 +5590,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(25L) + .id(COLUMN_5_14_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(13) .name("Tail") @@ -5607,7 +5599,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(26L) + .id(COLUMN_5_15_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(14) .name("Domestic") @@ -5616,7 +5608,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(27L) + .id(COLUMN_5_16_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(15) .name("Catsize") @@ -5625,7 +5617,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(28L) + .id(COLUMN_5_17_ID) .databaseId(DATABASE_2_ID) .ordinalPosition(16) .name("Class Type") @@ -5639,7 +5631,6 @@ public abstract class BaseTest { .isInitialView(VIEW_4_INITIAL_VIEW) .name(VIEW_4_NAME) .internalName(VIEW_4_INTERNAL_NAME) - .vdbid(VIEW_4_DATABASE_ID) .isPublic(VIEW_4_PUBLIC) .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) @@ -5651,10 +5642,11 @@ public abstract class BaseTest { public static final ViewDto VIEW_4_DTO = ViewDto.builder() .id(VIEW_4_ID) + .vdbid(DATABASE_2_ID) .isInitialView(VIEW_4_INITIAL_VIEW) .name(VIEW_4_NAME) .internalName(VIEW_4_INTERNAL_NAME) - .vdbid(VIEW_4_DATABASE_ID) + .vdbid(DATABASE_2_ID) .isPublic(VIEW_4_PUBLIC) .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) @@ -5668,7 +5660,7 @@ public abstract class BaseTest { .isInitialView(VIEW_4_INITIAL_VIEW) .name(VIEW_4_NAME) .internalName(VIEW_4_INTERNAL_NAME) - .vdbid(VIEW_4_DATABASE_ID) + .vdbid(DATABASE_2_ID) .isPublic(VIEW_4_PUBLIC) .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) @@ -5678,7 +5670,7 @@ public abstract class BaseTest { public static final List<ViewColumn> VIEW_4_COLUMNS = List.of( ViewColumn.builder() - .id(12L) + .id(COLUMN_5_1_ID) .ordinalPosition(0) .name("Animal Name") .internalName("animal_name") @@ -5687,7 +5679,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(13L) + .id(COLUMN_5_2_ID) .ordinalPosition(1) .name("Hair") .internalName("hair") @@ -5696,7 +5688,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(14L) + .id(COLUMN_5_3_ID) .ordinalPosition(2) .name("Feathers") .internalName("feathers") @@ -5705,7 +5697,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(15L) + .id(COLUMN_5_4_ID) .ordinalPosition(3) .name("Eggs") .internalName("eggs") @@ -5714,7 +5706,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(16L) + .id(COLUMN_5_5_ID) .ordinalPosition(4) .name("Milk") .internalName("milk") @@ -5723,7 +5715,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(17L) + .id(COLUMN_5_6_ID) .ordinalPosition(5) .name("Airborne") .internalName("airborne") @@ -5732,7 +5724,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(18L) + .id(COLUMN_5_7_ID) .ordinalPosition(6) .name("Aquantic") .internalName("aquantic") @@ -5741,7 +5733,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(19L) + .id(COLUMN_5_8_ID) .ordinalPosition(7) .name("Predator") .internalName("predator") @@ -5750,7 +5742,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(20L) + .id(COLUMN_5_9_ID) .ordinalPosition(8) .name("Backbone") .internalName("backbone") @@ -5759,7 +5751,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(21L) + .id(COLUMN_5_10_ID) .ordinalPosition(9) .name("Breathes") .internalName("breathes") @@ -5768,7 +5760,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(22L) + .id(COLUMN_5_11_ID) .ordinalPosition(10) .name("Venomous") .internalName("venomous") @@ -5777,7 +5769,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(23L) + .id(COLUMN_5_12_ID) .ordinalPosition(11) .name("Fin") .internalName("fin") @@ -5786,7 +5778,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(24L) + .id(COLUMN_5_13_ID) .ordinalPosition(12) .name("Legs") .internalName("legs") @@ -5795,7 +5787,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(25L) + .id(COLUMN_5_14_ID) .ordinalPosition(13) .name("Tail") .internalName("tail") @@ -5804,7 +5796,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(26L) + .id(COLUMN_5_15_ID) .ordinalPosition(14) .name("Domestic") .internalName("domestic") @@ -5813,7 +5805,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(27L) + .id(COLUMN_5_16_ID) .ordinalPosition(15) .name("Catsize") .internalName("catsize") @@ -5822,7 +5814,7 @@ public abstract class BaseTest { .view(VIEW_4) .build(), ViewColumn.builder() - .id(28L) + .id(COLUMN_5_17_ID) .ordinalPosition(16) .name("Class Type") .internalName("class_type") @@ -5831,12 +5823,10 @@ public abstract class BaseTest { .view(VIEW_4) .build()); - public static final Long VIEW_5_ID = 5L; + public static final UUID VIEW_5_ID = UUID.fromString("bc6b8507-51f1-4d05-bb0c-1f619a991dec"); public static final Boolean VIEW_5_INITIAL_VIEW = false; public static final String VIEW_5_NAME = "Mock View"; public static final String VIEW_5_INTERNAL_NAME = "mock_view"; - public static final Long VIEW_5_CONTAINER_ID = CONTAINER_2_ID; - public static final Long VIEW_5_DATABASE_ID = DATABASE_3_ID; public static final Boolean VIEW_5_PUBLIC = true; public static final Boolean VIEW_5_SCHEMA_PUBLIC = true; public static final String VIEW_5_QUERY = "SELECT `location`, `lat`, `lng` FROM `weather_location` WHERE `location` = 'Albury'"; @@ -5847,7 +5837,6 @@ public abstract class BaseTest { .isInitialView(VIEW_5_INITIAL_VIEW) .name(VIEW_5_NAME) .internalName(VIEW_5_INTERNAL_NAME) - .vdbid(VIEW_5_DATABASE_ID) .isPublic(VIEW_5_PUBLIC) .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) @@ -5859,10 +5848,11 @@ public abstract class BaseTest { public static final ViewDto VIEW_5_DTO = ViewDto.builder() .id(VIEW_5_ID) + .vdbid(DATABASE_3_ID) .isInitialView(VIEW_5_INITIAL_VIEW) .name(VIEW_5_NAME) .internalName(VIEW_5_INTERNAL_NAME) - .vdbid(VIEW_5_DATABASE_ID) + .vdbid(DATABASE_3_ID) .isPublic(VIEW_5_PUBLIC) .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) @@ -5876,7 +5866,7 @@ public abstract class BaseTest { .isInitialView(VIEW_5_INITIAL_VIEW) .name(VIEW_5_NAME) .internalName(VIEW_5_INTERNAL_NAME) - .vdbid(VIEW_5_DATABASE_ID) + .vdbid(DATABASE_3_ID) .isPublic(VIEW_5_PUBLIC) .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) @@ -5885,7 +5875,7 @@ public abstract class BaseTest { public static final List<ViewColumn> VIEW_5_COLUMNS = List.of( ViewColumn.builder() - .id(29L) + .id(COLUMN_2_1_ID) .ordinalPosition(0) .name("location") .internalName("location") @@ -5895,7 +5885,7 @@ public abstract class BaseTest { .view(VIEW_5) .build(), ViewColumn.builder() - .id(30L) + .id(COLUMN_2_2_ID) .ordinalPosition(1) .name("lat") .internalName("lat") @@ -5906,7 +5896,7 @@ public abstract class BaseTest { .view(VIEW_5) .build(), ViewColumn.builder() - .id(31L) + .id(COLUMN_2_3_ID) .ordinalPosition(2) .name("lng") .internalName("lng") @@ -5919,7 +5909,7 @@ public abstract class BaseTest { public static final List<ViewColumnDto> VIEW_5_COLUMNS_DTO = List.of( ViewColumnDto.builder() - .id(29L) + .id(COLUMN_2_1_ID) .databaseId(DATABASE_3_ID) .ordinalPosition(0) .name("location") @@ -5929,7 +5919,7 @@ public abstract class BaseTest { .isNullAllowed(false) .build(), ViewColumnDto.builder() - .id(30L) + .id(COLUMN_2_2_ID) .databaseId(DATABASE_3_ID) .ordinalPosition(1) .name("lat") @@ -5940,7 +5930,7 @@ public abstract class BaseTest { .isNullAllowed(true) .build(), ViewColumnDto.builder() - .id(31L) + .id(COLUMN_2_3_ID) .databaseId(DATABASE_3_ID) .ordinalPosition(2) .name("lng") @@ -5976,8 +5966,7 @@ public abstract class BaseTest { .uri(LICENSE_1_URI) .build(); - public static final Long CREATOR_1_ID = 1L; - public static final Long CREATOR_1_QUERY_ID = 1L; + public static final UUID CREATOR_1_ID = UUID.fromString("a0417f34-80ff-419f-821d-ce179021484a"); public static final String CREATOR_1_ORCID = "00000-00000-00000"; public static final String CREATOR_1_AFFIL = "TU Graz"; public static final String CREATOR_1_AFFIL_ROR = "https://ror.org/04wn28048"; @@ -6020,7 +6009,7 @@ public abstract class BaseTest { .build()) .build(); - public static final Long CREATOR_2_ID = 2L; + public static final UUID CREATOR_2_ID = UUID.fromString("56b70dae-17a7-4f76-9c1e-a493762ba760"); public static final Long CREATOR_2_QUERY_ID = 1L; public static final String CREATOR_2_ORCID = "00000-00000-00000"; public static final String CREATOR_2_AFFIL = "TU Wien"; @@ -6030,7 +6019,7 @@ public abstract class BaseTest { public static final Instant CREATOR_2_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant CREATOR_2_MODIFIED = Instant.ofEpochSecond(1541588352L); - public static final Long CREATOR_3_ID = 3L; + public static final UUID CREATOR_3_ID = UUID.fromString("a2dfea46-7d88-4069-9b93-2417e1fb578b"); public static final Long CREATOR_3_QUERY_ID = 1L; public static final String CREATOR_3_ORCID = "00000-00000-00000"; public static final String CREATOR_3_AFFIL = "TU Graz"; @@ -6044,7 +6033,7 @@ public abstract class BaseTest { public static final Instant CREATOR_3_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant CREATOR_3_MODIFIED = Instant.ofEpochSecond(1541588352L); - public static final Long CREATOR_4_ID = 4L; + public static final UUID CREATOR_4_ID = UUID.fromString("473489fa-ad02-4e48-856f-5a3f83ff541d"); public static final Long CREATOR_4_QUERY_ID = 1L; public static final String CREATOR_4_ORCID = "00000-00000-00000"; public static final String CREATOR_4_AFFIL = "TU Wien"; @@ -6058,10 +6047,7 @@ public abstract class BaseTest { public static final Instant CREATOR_4_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant CREATOR_4_MODIFIED = Instant.ofEpochSecond(1541588352L); - public static final Long IDENTIFIER_1_ID = 1L; - public static final Long IDENTIFIER_1_QUERY_ID = null; - public static final Long IDENTIFIER_1_CONTAINER_ID = CONTAINER_1_ID; - public static final Long IDENTIFIER_1_DATABASE_ID = DATABASE_1_ID; + public static final UUID IDENTIFIER_1_ID = UUID.fromString("679a83f2-ef23-4b4b-98f7-ad77b9d68733"); public static final String IDENTIFIER_1_DOI = "10.12345/183"; public static final Instant IDENTIFIER_1_CREATED = Instant.ofEpochSecond(1641588352L) /* 2022-01-07 20:45:52 */; public static final Instant IDENTIFIER_1_MODIFIED = Instant.ofEpochSecond(1541588352L) /* 2022-01-07 20:45:52 */; @@ -6069,19 +6055,13 @@ public abstract class BaseTest { public static final Integer IDENTIFIER_1_PUBLICATION_MONTH = 5; public static final Integer IDENTIFIER_1_PUBLICATION_YEAR = 2022; public static final Integer IDENTIFIER_1_PUBLICATION_DAY = null; - public static final String IDENTIFIER_1_QUERY_HASH = QUERY_1_QUERY_HASH; - public static final String IDENTIFIER_1_RESULT_HASH = QUERY_1_RESULT_HASH; - public static final String IDENTIFIER_1_QUERY = QUERY_1_STATEMENT; - public static final String IDENTIFIER_1_NORMALIZED = QUERY_1_STATEMENT; - public static final Long IDENTIFIER_1_RESULT_NUMBER = QUERY_1_RESULT_NUMBER; public static final String IDENTIFIER_1_PUBLISHER = "Austrian Government"; public static final IdentifierType IDENTIFIER_1_TYPE = IdentifierType.DATABASE; public static final IdentifierTypeDto IDENTIFIER_1_TYPE_DTO = IdentifierTypeDto.DATABASE; public static final IdentifierStatusType IDENTIFIER_1_STATUS_TYPE = IdentifierStatusType.PUBLISHED; public static final IdentifierStatusTypeDto IDENTIFIER_1_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED; - public static final Long IDENTIFIER_1_TITLE_1_ID = 1L; - public static final Long IDENTIFIER_1_TITLE_1_IDENTIFIER_ID = IDENTIFIER_1_ID; + public static final UUID IDENTIFIER_1_TITLE_1_ID = UUID.fromString("3df6b286-9bd2-4ae3-b8f4-29c217544bef"); public static final String IDENTIFIER_1_TITLE_1_TITLE = "Austrian weather data"; public static final String IDENTIFIER_1_TITLE_1_TITLE_MODIFY = "Austrian weather some data"; public static final TitleType IDENTIFIER_1_TITLE_1_TYPE = null; @@ -6122,8 +6102,7 @@ public abstract class BaseTest { .language(IDENTIFIER_1_TITLE_1_LANG_DTO) .build(); - public static final Long IDENTIFIER_1_TITLE_2_ID = 2L; - public static final Long IDENTIFIER_1_TITLE_2_IDENTIFIER_ID = IDENTIFIER_1_ID; + public static final UUID IDENTIFIER_1_TITLE_2_ID = UUID.fromString("903a7e5b-8014-4b8a-b8fd-44f477880905"); public static final String IDENTIFIER_1_TITLE_2_TITLE = "Österreichische Wetterdaten"; public static final String IDENTIFIER_1_TITLE_2_TITLE_MODIFY = "Österreichische Wetterdaten übersetzt"; public static final TitleType IDENTIFIER_1_TITLE_2_TYPE = TitleType.TRANSLATED_TITLE; @@ -6164,8 +6143,7 @@ public abstract class BaseTest { .language(IDENTIFIER_1_TITLE_2_LANG_DTO) .build(); - public static final Long IDENTIFIER_1_DESCRIPTION_1_ID = 1L; - public static final Long IDENTIFIER_1_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_1_ID; + public static final UUID IDENTIFIER_1_DESCRIPTION_1_ID = UUID.fromString("1c438756-93f0-4797-983c-175a17e18c2c"); public static final String IDENTIFIER_1_DESCRIPTION_1_DESCRIPTION = "Selecting all from the weather Austrian table"; public static final String IDENTIFIER_1_DESCRIPTION_1_DESCRIPTION_MODIFY = "Selecting some from the weather Austrian table"; public static final DescriptionType IDENTIFIER_1_DESCRIPTION_1_TYPE = null; @@ -6201,7 +6179,7 @@ public abstract class BaseTest { .language(IDENTIFIER_1_DESCRIPTION_1_LANG_DTO) .build(); - public static final Long IDENTIFIER_1_CREATOR_1_ID = 1L; + public static final UUID IDENTIFIER_1_CREATOR_1_ID = UUID.fromString("667cd1d6-4f94-4808-b5cb-12e5ec0788d8"); public static final String IDENTIFIER_1_CREATOR_1_FIRSTNAME = CREATOR_1_FIRSTNAME; public static final String IDENTIFIER_1_CREATOR_1_LASTNAME = CREATOR_1_LASTNAME; public static final String IDENTIFIER_1_CREATOR_1_NAME = CREATOR_1_NAME; @@ -6255,7 +6233,7 @@ public abstract class BaseTest { .affiliationIdentifierScheme(IDENTIFIER_1_CREATOR_1_AFFILIATION_IDENTIFIER_SCHEME_DTO) .build(); - public static final Long FUNDER_1_ID = 1L; + public static final UUID FUNDER_1_ID = UUID.fromString("8deb273d-6dd6-407d-970a-01534035ac01"); public static final String FUNDER_1_NAME = "European Commission"; public static final String FUNDER_1_IDENTIFIER = "https://doi.org/10.13039/501100000780"; public static final String FUNDER_1_IDENTIFIER_ID_ONLY = "10.13039/501100000780"; @@ -6297,7 +6275,7 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_1 = Identifier.builder() .id(IDENTIFIER_1_ID) - .queryId(IDENTIFIER_1_QUERY_ID) + .queryId(QUERY_1_ID) .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1, IDENTIFIER_1_TITLE_2))) .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1))) .doi(IDENTIFIER_1_DOI) @@ -6307,11 +6285,11 @@ public abstract class BaseTest { .execution(IDENTIFIER_1_EXECUTION) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) - .queryHash(IDENTIFIER_1_QUERY_HASH) - .resultHash(IDENTIFIER_1_RESULT_HASH) - .query(IDENTIFIER_1_QUERY) - .queryNormalized(IDENTIFIER_1_NORMALIZED) - .resultNumber(IDENTIFIER_1_RESULT_NUMBER) + .queryHash(QUERY_1_QUERY_HASH) + .resultHash(QUERY_1_RESULT_HASH) + .query(QUERY_1_STATEMENT) + .queryNormalized(QUERY_1_STATEMENT) + .resultNumber(QUERY_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) .owner(USER_1) @@ -6324,7 +6302,6 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_1_WITH_DOI = Identifier.builder() .id(IDENTIFIER_1_ID) - .queryId(IDENTIFIER_1_QUERY_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1))) .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1, IDENTIFIER_1_TITLE_2))) .doi(IDENTIFIER_1_DOI) @@ -6334,11 +6311,11 @@ public abstract class BaseTest { .execution(IDENTIFIER_1_EXECUTION) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) - .queryHash(IDENTIFIER_1_QUERY_HASH) - .resultHash(IDENTIFIER_1_RESULT_HASH) - .query(IDENTIFIER_1_QUERY) - .queryNormalized(IDENTIFIER_1_NORMALIZED) - .resultNumber(IDENTIFIER_1_RESULT_NUMBER) + .queryHash(QUERY_1_QUERY_HASH) + .resultHash(QUERY_1_RESULT_HASH) + .query(QUERY_1_STATEMENT) + .queryNormalized(QUERY_1_STATEMENT) + .resultNumber(QUERY_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) .owner(USER_1) @@ -6351,18 +6328,18 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_1_DTO = IdentifierDto.builder() .id(IDENTIFIER_1_ID) .databaseId(DATABASE_1_ID) - .queryId(IDENTIFIER_1_QUERY_ID) + .queryId(QUERY_1_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO))) .doi(IDENTIFIER_1_DOI) .execution(IDENTIFIER_1_EXECUTION) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) - .queryHash(IDENTIFIER_1_QUERY_HASH) - .resultHash(IDENTIFIER_1_RESULT_HASH) - .query(IDENTIFIER_1_QUERY) - .queryNormalized(IDENTIFIER_1_NORMALIZED) - .resultNumber(IDENTIFIER_1_RESULT_NUMBER) + .queryHash(QUERY_1_QUERY_HASH) + .resultHash(QUERY_1_RESULT_HASH) + .query(QUERY_1_STATEMENT) + .queryNormalized(QUERY_1_STATEMENT) + .resultNumber(QUERY_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE_DTO) .owner(USER_1_BRIEF_DTO) @@ -6375,7 +6352,6 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_1_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_1_ID) .databaseId(DATABASE_1_ID) - .queryId(IDENTIFIER_1_QUERY_ID) .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO))) .doi(IDENTIFIER_1_DOI) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) @@ -6385,7 +6361,7 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_1_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .type(IDENTIFIER_1_TYPE_DTO) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publisher(IDENTIFIER_1_PUBLISHER) @@ -6402,7 +6378,7 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_1_CREATE_WITH_DOI_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .type(IDENTIFIER_1_TYPE_DTO) .doi(IDENTIFIER_1_DOI) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) @@ -6420,7 +6396,7 @@ public abstract class BaseTest { public static final IdentifierSaveDto IDENTIFIER_1_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_1_ID) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO, IDENTIFIER_1_TITLE_2_CREATE_DTO))) .relatedIdentifiers(new LinkedList<>()) @@ -6435,7 +6411,7 @@ public abstract class BaseTest { public static final IdentifierSaveDto IDENTIFIER_1_SAVE_MODIFY_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_1_ID) - .databaseId(IDENTIFIER_1_DATABASE_ID) + .databaseId(DATABASE_1_ID) .descriptions(new LinkedList<>(List.of())) // <<< .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))) // <<< .relatedIdentifiers(new LinkedList<>()) @@ -6448,10 +6424,7 @@ public abstract class BaseTest { .licenses(new LinkedList<>(List.of())) // <<< .build(); - public static final Long IDENTIFIER_5_ID = 5L; - public static final Long IDENTIFIER_5_QUERY_ID = QUERY_2_ID; - public static final Long IDENTIFIER_5_CONTAINER_ID = CONTAINER_2_ID; - public static final Long IDENTIFIER_5_DATABASE_ID = DATABASE_2_ID; + public static final UUID IDENTIFIER_5_ID = UUID.fromString("e05bb4c9-ed26-48c9-bd91-5c48a93a04bd"); public static final String IDENTIFIER_5_DOI = "10.12345/13/50BBFCFE08A12"; public static final Instant IDENTIFIER_5_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant IDENTIFIER_5_MODIFIED = Instant.ofEpochSecond(1541588352L); @@ -6471,8 +6444,7 @@ public abstract class BaseTest { public static final IdentifierStatusTypeDto IDENTIFIER_5_STATUS_TYPE_DTO = IdentifierStatusTypeDto.DRAFT; public static final UUID IDENTIFIER_5_CREATED_BY = USER_2_ID; - public static final Long IDENTIFIER_5_TITLE_1_ID = 3L; - public static final Long IDENTIFIER_5_TITLE_1_IDENTIFIER_ID = IDENTIFIER_5_ID; + public static final UUID IDENTIFIER_5_TITLE_1_ID = UUID.fromString("1a0ae9c2-61c6-44f8-b886-26a4f4dabc52"); public static final String IDENTIFIER_5_TITLE_1_TITLE = "Australische Wetterdaten"; public static final LanguageType IDENTIFIER_5_TITLE_1_LANG = LanguageType.DE; public static final LanguageTypeDto IDENTIFIER_5_TITLE_1_LANG_DTO = LanguageTypeDto.DE; @@ -6499,8 +6471,7 @@ public abstract class BaseTest { .titleType(IDENTIFIER_5_TITLE_1_TYPE_DTO) .build(); - public static final Long IDENTIFIER_5_DESCRIPTION_1_ID = 2L; - public static final Long IDENTIFIER_5_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_5_ID; + public static final UUID IDENTIFIER_5_DESCRIPTION_1_ID = UUID.fromString("ab49bdca-f373-4823-9947-2a0cbfa88350"); public static final String IDENTIFIER_5_DESCRIPTION_1_DESCRIPTION = "Alle Wetterdaten in Australien"; public static final LanguageType IDENTIFIER_5_DESCRIPTION_1_LANG = LanguageType.DE; public static final LanguageTypeDto IDENTIFIER_5_DESCRIPTION_1_LANG_DTO = LanguageTypeDto.DE; @@ -6528,7 +6499,7 @@ public abstract class BaseTest { .descriptionType(IDENTIFIER_5_DESCRIPTION_1_TYPE_DTO) .build(); - public static final Long IDENTIFIER_5_CREATOR_1_ID = 2L; + public static final UUID IDENTIFIER_5_CREATOR_1_ID = UUID.fromString("6844b684-93e4-47d2-a615-5939127fdafe"); public static final Creator IDENTIFIER_5_CREATOR_1 = Creator.builder() .id(IDENTIFIER_5_CREATOR_1_ID) @@ -6574,7 +6545,7 @@ public abstract class BaseTest { .affiliation(CREATOR_1_AFFIL) .build(); - public static final Long IDENTIFIER_5_CREATOR_2_ID = 3L; + public static final UUID IDENTIFIER_5_CREATOR_2_ID = UUID.fromString("14943ad6-a935-49f5-b07e-f9eb789b8604"); public static final Creator IDENTIFIER_5_CREATOR_2 = Creator.builder() .id(IDENTIFIER_5_CREATOR_2_ID) @@ -6616,7 +6587,8 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_5 = Identifier.builder() .id(IDENTIFIER_5_ID) - .queryId(IDENTIFIER_5_QUERY_ID) + .queryId(QUERY_2_ID) + .database(null) /* DATABASE_2 */ .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1))) .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1))) .doi(IDENTIFIER_5_DOI) @@ -6642,7 +6614,7 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_5_DTO = IdentifierDto.builder() .id(IDENTIFIER_5_ID) .databaseId(DATABASE_2_ID) - .queryId(IDENTIFIER_5_QUERY_ID) + .queryId(QUERY_2_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_DTO))) .doi(IDENTIFIER_5_DOI) @@ -6665,7 +6637,7 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_5_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_5_ID) .databaseId(DATABASE_2_ID) - .queryId(IDENTIFIER_5_QUERY_ID) + .queryId(QUERY_2_ID) .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_DTO))) .doi(IDENTIFIER_5_DOI) .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR) @@ -6673,8 +6645,7 @@ public abstract class BaseTest { .type(IDENTIFIER_5_TYPE_DTO) .build(); - public static final Long RELATED_IDENTIFIER_5_ID = 1L; - public static final Long RELATED_IDENTIFIER_5_IDENTIFIER_ID = 2L; + public static final UUID RELATED_IDENTIFIER_5_ID = UUID.fromString("26545877-574d-44fa-819d-d9d9a9750b38"); public static final String RELATED_IDENTIFIER_5_VALUE = "10.5281/zenodo.6637333"; public static final RelatedType RELATED_IDENTIFIER_5_TYPE = RelatedType.DOI; public static final RelatedTypeDto RELATED_IDENTIFIER_5_TYPE_DTO = RelatedTypeDto.DOI; @@ -6696,15 +6667,15 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_5_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_5_DATABASE_ID) + .databaseId(DATABASE_2_ID) .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR) .publisher(IDENTIFIER_5_PUBLISHER) .build(); public static final IdentifierSaveDto IDENTIFIER_5_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_5_ID) - .queryId(IDENTIFIER_5_QUERY_ID) - .databaseId(IDENTIFIER_5_DATABASE_ID) + .queryId(QUERY_2_ID) + .databaseId(DATABASE_2_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1_CREATE_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_CREATE_DTO))) .relatedIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO))) @@ -6717,10 +6688,7 @@ public abstract class BaseTest { .type(IDENTIFIER_5_TYPE_DTO) .build(); - public static final Long IDENTIFIER_6_ID = 6L; - public static final Long IDENTIFIER_6_QUERY_ID = QUERY_3_ID; - public static final Long IDENTIFIER_6_CONTAINER_ID = CONTAINER_3_ID; - public static final Long IDENTIFIER_6_DATABASE_ID = DATABASE_3_ID; + public static final UUID IDENTIFIER_6_ID = UUID.fromString("a244204d-9671-42a0-be07-9b14402238fd"); public static final String IDENTIFIER_6_DOI = null; public static final Instant IDENTIFIER_6_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant IDENTIFIER_6_MODIFIED = Instant.ofEpochSecond(1541588352L); @@ -6739,8 +6707,7 @@ public abstract class BaseTest { public static final IdentifierStatusType IDENTIFIER_6_STATUS_TYPE = IdentifierStatusType.PUBLISHED; public static final IdentifierStatusTypeDto IDENTIFIER_6_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED; - public static final Long IDENTIFIER_6_TITLE_1_ID = 4L; - public static final Long IDENTIFIER_6_TITLE_1_IDENTIFIER_ID = IDENTIFIER_6_ID; + public static final UUID IDENTIFIER_6_TITLE_1_ID = UUID.fromString("0449011c-1490-4c8e-b46c-c1f862126aea"); public static final String IDENTIFIER_6_TITLE_1_TITLE = "Norwegian weather data"; public static final String IDENTIFIER_6_TITLE_1_TITLE_MODIFY = "Norwegian weather some data"; public static final LanguageType IDENTIFIER_6_TITLE_1_LANG = LanguageType.EN; @@ -6769,8 +6736,7 @@ public abstract class BaseTest { .language(IDENTIFIER_6_TITLE_1_LANG_DTO) .build(); - public static final Long IDENTIFIER_6_DESCRIPTION_1_ID = 3L; - public static final Long IDENTIFIER_6_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_6_ID; + public static final UUID IDENTIFIER_6_DESCRIPTION_1_ID = UUID.fromString("aac03bbd-27e6-419d-8118-f996d594f00f"); public static final String IDENTIFIER_6_DESCRIPTION_1_DESCRIPTION = "Selecting all from the weather Norwegian table"; public static final String IDENTIFIER_6_DESCRIPTION_1_DESCRIPTION_MODIFY = "Selecting some from the weather Norwegian table"; public static final LanguageType IDENTIFIER_6_DESCRIPTION_1_LANG = LanguageType.EN; @@ -6800,7 +6766,7 @@ public abstract class BaseTest { .language(IDENTIFIER_6_DESCRIPTION_1_LANG_DTO) .build(); - private final static Long IDENTIFIER_6_CREATOR_1_ID = 4L; + private final static UUID IDENTIFIER_6_CREATOR_1_ID = UUID.fromString("f8a52dca-8aec-46c1-b0e1-603dbe6a1a65"); public static final Creator IDENTIFIER_6_CREATOR_1 = Creator.builder() .id(IDENTIFIER_6_CREATOR_1_ID) @@ -6850,7 +6816,7 @@ public abstract class BaseTest { .affiliationIdentifierScheme(CREATOR_1_AFFIL_TYPE_DTO) .build(); - private final static Long IDENTIFIER_6_CREATOR_2_ID = 5L; + private final static UUID IDENTIFIER_6_CREATOR_2_ID = UUID.fromString("eeae78cb-75a1-42e2-b608-7082e5fbecc6"); public static final Creator IDENTIFIER_6_CREATOR_2 = Creator.builder() .id(IDENTIFIER_6_CREATOR_2_ID) @@ -6872,7 +6838,7 @@ public abstract class BaseTest { .affiliation(CREATOR_2_AFFIL) .build(); - private final static Long IDENTIFIER_6_CREATOR_3_ID = 6L; + private final static UUID IDENTIFIER_6_CREATOR_3_ID = UUID.fromString("700058f1-6314-4cd1-9c0c-62e75c8f422b"); public static final Creator IDENTIFIER_6_CREATOR_3 = Creator.builder() .id(IDENTIFIER_6_CREATOR_3_ID) @@ -6902,7 +6868,7 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_6 = Identifier.builder() .id(IDENTIFIER_6_ID) - .queryId(IDENTIFIER_6_QUERY_ID) + .queryId(QUERY_3_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1))) .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1))) .doi(IDENTIFIER_6_DOI) @@ -6929,7 +6895,7 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_6_DTO = IdentifierDto.builder() .id(IDENTIFIER_6_ID) .databaseId(DATABASE_3_ID) - .queryId(IDENTIFIER_6_QUERY_ID) + .queryId(QUERY_3_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_DTO))) .doi(IDENTIFIER_6_DOI) @@ -6954,7 +6920,7 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_6_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_6_ID) .databaseId(DATABASE_3_ID) - .queryId(IDENTIFIER_6_QUERY_ID) + .queryId(QUERY_3_ID) .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_DTO))) .doi(IDENTIFIER_6_DOI) .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) @@ -6964,15 +6930,15 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_6_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_6_DATABASE_ID) + .databaseId(DATABASE_3_ID) .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) .publisher(IDENTIFIER_6_PUBLISHER) .build(); public static final IdentifierSaveDto IDENTIFIER_6_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_6_ID) - .databaseId(IDENTIFIER_6_DATABASE_ID) - .queryId(IDENTIFIER_6_QUERY_ID) + .databaseId(DATABASE_3_ID) + .queryId(QUERY_3_ID) .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1_CREATE_DTO))) .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_CREATE_DTO))) .relatedIdentifiers(new LinkedList<>()) @@ -6984,8 +6950,7 @@ public abstract class BaseTest { .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .build(); - public static final Long IDENTIFIER_7_ID = 7L; - public static final Long IDENTIFIER_7_DATABASE_ID = DATABASE_4_ID; + public static final UUID IDENTIFIER_7_ID = UUID.fromString("b216ae00-a31d-4ecb-95fb-37eb4da3946f"); public static final String IDENTIFIER_7_DOI = null; public static final Instant IDENTIFIER_7_CREATED = Instant.ofEpochSecond(1641588352L); public static final Instant IDENTIFIER_7_MODIFIED = Instant.ofEpochSecond(1541588352L); @@ -7009,7 +6974,7 @@ public abstract class BaseTest { .build()) .build(); - private final static Long IDENTIFIER_7_CREATOR_1_ID = 6L; + private final static UUID IDENTIFIER_7_CREATOR_1_ID = UUID.fromString("b899c367-06c7-4f47-8aea-5f15061ee3ee"); public static final Creator IDENTIFIER_7_CREATOR_1 = Creator.builder() .id(IDENTIFIER_7_CREATOR_1_ID) @@ -7069,14 +7034,14 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_7_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_7_DATABASE_ID) + .databaseId(DATABASE_4_ID) .publicationYear(IDENTIFIER_7_PUBLICATION_YEAR) .publisher(IDENTIFIER_7_PUBLISHER) .build(); public static final IdentifierSaveDto IDENTIFIER_7_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_7_ID) - .databaseId(IDENTIFIER_7_DATABASE_ID) + .databaseId(DATABASE_4_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .relatedIdentifiers(new LinkedList<>()) @@ -7089,8 +7054,7 @@ public abstract class BaseTest { .type(IDENTIFIER_7_TYPE_DTO) .build(); - public static final Long IDENTIFIER_2_ID = 2L; - public static final Long IDENTIFIER_2_DATABASE_ID = DATABASE_1_ID; + public static final UUID IDENTIFIER_2_ID = UUID.fromString("fdb95f60-48e7-4e74-8122-d3c8d079c889"); public static final String IDENTIFIER_2_DOI = null; public static final Instant IDENTIFIER_2_CREATED = Instant.ofEpochSecond(1651588352L); public static final Instant IDENTIFIER_2_MODIFIED = Instant.ofEpochSecond(1551588352L); @@ -7101,7 +7065,6 @@ public abstract class BaseTest { public static final String IDENTIFIER_2_QUERY_HASH = QUERY_1_QUERY_HASH; public static final String IDENTIFIER_2_RESULT_HASH = QUERY_1_RESULT_HASH; public static final String IDENTIFIER_2_QUERY = QUERY_1_STATEMENT; - public static final Long IDENTIFIER_2_QUERY_ID = QUERY_1_ID; public static final String IDENTIFIER_2_NORMALIZED = QUERY_1_STATEMENT; public static final Long IDENTIFIER_2_RESULT_NUMBER = QUERY_1_RESULT_NUMBER; public static final String IDENTIFIER_2_PUBLISHER = "Swedish Government"; @@ -7112,8 +7075,8 @@ public abstract class BaseTest { public static final UUID IDENTIFIER_2_CREATED_BY = USER_1_ID; public static final CreateIdentifierDto IDENTIFIER_2_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_2_DATABASE_ID) - .queryId(IDENTIFIER_2_QUERY_ID) + .databaseId(DATABASE_1_ID) + .queryId(QUERY_1_ID) .type(IDENTIFIER_2_TYPE_DTO) .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) .publisher(IDENTIFIER_2_PUBLISHER) @@ -7121,7 +7084,7 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_2 = Identifier.builder() .id(IDENTIFIER_2_ID) - .queryId(IDENTIFIER_2_QUERY_ID) + .queryId(QUERY_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_2_DOI) @@ -7148,8 +7111,8 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_2_DTO = IdentifierDto.builder() .id(IDENTIFIER_2_ID) - .queryId(IDENTIFIER_2_QUERY_ID) - .databaseId(IDENTIFIER_2_DATABASE_ID) + .queryId(QUERY_1_ID) + .databaseId(DATABASE_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_2_DOI) @@ -7172,8 +7135,8 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_2_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_2_ID) - .queryId(IDENTIFIER_2_QUERY_ID) - .databaseId(IDENTIFIER_2_DATABASE_ID) + .queryId(QUERY_1_ID) + .databaseId(DATABASE_1_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_2_DOI) .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) @@ -7184,8 +7147,8 @@ public abstract class BaseTest { public static final IdentifierSaveDto IDENTIFIER_2_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_2_ID) - .databaseId(IDENTIFIER_2_DATABASE_ID) - .queryId(IDENTIFIER_2_QUERY_ID) + .databaseId(DATABASE_1_ID) + .queryId(QUERY_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .relatedIdentifiers(new LinkedList<>()) @@ -7198,9 +7161,7 @@ public abstract class BaseTest { .queryId(QUERY_1_ID) .build(); - public static final Long IDENTIFIER_3_ID = 3L; - public static final Long IDENTIFIER_3_DATABASE_ID = DATABASE_1_ID; - public static final Long IDENTIFIER_3_VIEW_ID = VIEW_1_ID; + public static final UUID IDENTIFIER_3_ID = UUID.fromString("e2d831c2-3694-4fdc-8c48-7a7e94b73c43"); public static final String IDENTIFIER_3_DOI = null; public static final Instant IDENTIFIER_3_CREATED = Instant.ofEpochSecond(1651588352L); public static final Instant IDENTIFIER_3_MODIFIED = Instant.ofEpochSecond(1551588352L); @@ -7222,7 +7183,7 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_3 = Identifier.builder() .id(IDENTIFIER_3_ID) - .viewId(IDENTIFIER_3_VIEW_ID) + .viewId(VIEW_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_3_DOI) @@ -7249,8 +7210,8 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_3_DTO = IdentifierDto.builder() .id(IDENTIFIER_3_ID) - .databaseId(IDENTIFIER_3_DATABASE_ID) - .viewId(IDENTIFIER_3_VIEW_ID) + .databaseId(DATABASE_1_ID) + .viewId(VIEW_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_3_DOI) @@ -7273,8 +7234,8 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_3_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_3_ID) - .databaseId(IDENTIFIER_3_DATABASE_ID) - .viewId(IDENTIFIER_3_VIEW_ID) + .databaseId(DATABASE_1_ID) + .viewId(VIEW_1_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_3_DOI) .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR) @@ -7284,8 +7245,8 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_3_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_3_DATABASE_ID) - .viewId(IDENTIFIER_3_VIEW_ID) + .databaseId(DATABASE_1_ID) + .viewId(VIEW_1_ID) .type(IDENTIFIER_3_TYPE_DTO) .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR) .publisher(IDENTIFIER_3_PUBLISHER) @@ -7293,8 +7254,8 @@ public abstract class BaseTest { public static final IdentifierSaveDto IDENTIFIER_3_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_3_ID) - .databaseId(IDENTIFIER_3_DATABASE_ID) - .viewId(IDENTIFIER_3_VIEW_ID) + .databaseId(DATABASE_1_ID) + .viewId(VIEW_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .relatedIdentifiers(new LinkedList<>()) @@ -7306,9 +7267,7 @@ public abstract class BaseTest { .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .build(); - public static final Long IDENTIFIER_4_ID = 4L; - public static final Long IDENTIFIER_4_DATABASE_ID = DATABASE_1_ID; - public static final Long IDENTIFIER_4_TABLE_ID = TABLE_1_ID; + public static final UUID IDENTIFIER_4_ID = UUID.fromString("3bd69bb8-f7e3-48e4-9717-823787e7ba23"); public static final String IDENTIFIER_4_DOI = null; public static final Instant IDENTIFIER_4_CREATED = Instant.ofEpochSecond(1751588352L); public static final Instant IDENTIFIER_4_MODIFIED = Instant.ofEpochSecond(1551588352L); @@ -7327,7 +7286,7 @@ public abstract class BaseTest { public static final Identifier IDENTIFIER_4 = Identifier.builder() .id(IDENTIFIER_4_ID) - .tableId(IDENTIFIER_4_TABLE_ID) + .tableId(TABLE_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_4_DOI) @@ -7351,8 +7310,8 @@ public abstract class BaseTest { public static final IdentifierDto IDENTIFIER_4_DTO = IdentifierDto.builder() .id(IDENTIFIER_4_ID) - .databaseId(IDENTIFIER_4_DATABASE_ID) - .tableId(IDENTIFIER_4_TABLE_ID) + .databaseId(DATABASE_1_ID) + .tableId(TABLE_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_4_DOI) @@ -7372,8 +7331,8 @@ public abstract class BaseTest { public static final IdentifierBriefDto IDENTIFIER_4_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_4_ID) - .databaseId(IDENTIFIER_4_DATABASE_ID) - .tableId(IDENTIFIER_4_TABLE_ID) + .databaseId(DATABASE_1_ID) + .tableId(TABLE_1_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_4_DOI) .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) @@ -7383,15 +7342,15 @@ public abstract class BaseTest { .build(); public static final CreateIdentifierDto IDENTIFIER_4_CREATE_DTO = CreateIdentifierDto.builder() - .databaseId(IDENTIFIER_4_DATABASE_ID) + .databaseId(DATABASE_1_ID) .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) .publisher(IDENTIFIER_4_PUBLISHER) .build(); public static final IdentifierSaveDto IDENTIFIER_4_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_4_ID) - .databaseId(IDENTIFIER_4_DATABASE_ID) - .tableId(IDENTIFIER_4_TABLE_ID) + .databaseId(DATABASE_1_ID) + .tableId(TABLE_1_ID) .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .relatedIdentifiers(new LinkedList<>()) @@ -7425,7 +7384,7 @@ public abstract class BaseTest { .configure(".*") .build(); - public static final Long BANNER_MESSAGE_1_ID = 1L; + public static final UUID BANNER_MESSAGE_1_ID = UUID.fromString("81cf09b7-0d86-44ad-be8e-a407e7d114e1"); public static final String BANNER_MESSAGE_1_MESSAGE = "Next maintenance in 7 days!"; public static final BannerMessageType BANNER_MESSAGE_1_TYPE = BannerMessageType.INFO; public static final BannerMessageTypeDto BANNER_MESSAGE_1_TYPE_DTO = BannerMessageTypeDto.INFO; @@ -7462,7 +7421,7 @@ public abstract class BaseTest { .displayEnd(BANNER_MESSAGE_1_END) .build(); - public static final Long BANNER_MESSAGE_2_ID = 2L; + public static final UUID BANNER_MESSAGE_2_ID = UUID.fromString("1e7e2c03-e2c6-46b8-9fdc-6668ef055d99"); public static final String BANNER_MESSAGE_2_MESSAGE = "No operation on Christmas 2022!"; public static final BannerMessageType BANNER_MESSAGE_2_TYPE = BannerMessageType.ERROR; public static final BannerMessageTypeDto BANNER_MESSAGE_2_TYPE_DTO = BannerMessageTypeDto.ERROR; @@ -8086,7 +8045,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_1) .column(TABLE_1_COLUMNS.get(0)) - .id(1L) + .id(COLUMN_1_1_ID) .build()))) .build(); @@ -8095,7 +8054,7 @@ public abstract class BaseTest { .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>()) .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() - .id(1L) + .id(UUID.fromString("b3f40a88-4f21-4de0-a595-3d15e63943aa")) .table(TABLE_1_BRIEF_DTO) .column(TABLE_1_COLUMNS_BRIEF_0_DTO) .build()))) @@ -8104,11 +8063,11 @@ public abstract class BaseTest { public static final Constraints TABLE_2_CONSTRAINTS = Constraints.builder() .checks(new LinkedHashSet<>(List.of("`mintemp` > 0"))) .foreignKeys(new LinkedList<>(List.of(ForeignKey.builder() - .id(1L) + .id(UUID.fromString("d79f0fb1-05d6-4f3e-a5e2-8559982b8516")) .name("fk_location") .onDelete(ReferenceType.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReference.builder() - .id(1L) + .id(UUID.fromString("a4da8f2f-2999-4621-8066-801a2fb73c8d")) .column(TABLE_2_COLUMNS.get(2)) .referencedColumn(TABLE_1_COLUMNS.get(0)) .foreignKey(null) // set later @@ -8118,7 +8077,7 @@ public abstract class BaseTest { .onUpdate(ReferenceType.NO_ACTION) .build()))) .uniques(new LinkedList<>(List.of(Unique.builder() - .id(1L) + .id(UUID.fromString("408e398f-d157-49a1-8b45-87a070f3b4de")) .table(TABLE_2) .name("uk_1") .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS.get(1)))) @@ -8126,18 +8085,18 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_2) .column(TABLE_2_COLUMNS.get(0)) - .id(2L) + .id(COLUMN_2_1_ID) .build()))) .build(); public static final ConstraintsDto TABLE_2_CONSTRAINTS_DTO = ConstraintsDto.builder() .checks(new LinkedHashSet<>(List.of("`mintemp` > 0"))) .foreignKeys(new LinkedList<>(List.of(ForeignKeyDto.builder() - .id(1L) + .id(UUID.fromString("ca833111-1e9a-48a3-bb16-ad6f90196f96")) .name("fk_location") .onDelete(ReferenceTypeDto.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder() - .id(1L) + .id(UUID.fromString("8552f282-0403-424d-b2ba-4ed0f760197c")) .column(TABLE_2_COLUMNS_BRIEF_2_DTO) .referencedColumn(TABLE_1_COLUMNS_BRIEF_0_DTO) .foreignKey(null) // set later @@ -8147,7 +8106,7 @@ public abstract class BaseTest { .onUpdate(ReferenceTypeDto.NO_ACTION) .build()))) .uniques(new LinkedList<>(List.of(UniqueDto.builder() - .id(1L) + .id(UUID.fromString("b9aba807-dd9c-43a3-9614-2493cb4b26bd")) .table(TABLE_2_BRIEF_DTO) .name("uk_1") .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS_BRIEF_DTO.get(1)))) @@ -8155,7 +8114,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_2_BRIEF_DTO) .column(TABLE_2_COLUMNS_BRIEF_0_DTO) - .id(2L) + .id(COLUMN_2_1_ID) .build()))) .build(); @@ -8166,7 +8125,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_3) .column(TABLE_3_COLUMNS.get(0)) - .id(3L) + .id(COLUMN_3_1_ID) .build()))) .build(); @@ -8177,7 +8136,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_3_BRIEF_DTO) .column(TABLE_3_COLUMNS_BRIEF_0_DTO) - .id(3L) + .id(COLUMN_3_1_ID) .build()))) .build(); @@ -8188,7 +8147,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_4) .column(TABLE_4_COLUMNS.get(0)) - .id(4L) + .id(COLUMN_4_1_ID) .build()))) .build(); @@ -8199,7 +8158,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_4_BRIEF_DTO) .column(TABLE_4_COLUMNS_BRIEF_0_DTO) - .id(4L) + .id(COLUMN_4_1_ID) .build()))) .build(); @@ -8210,7 +8169,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_5) .column(TABLE_5_COLUMNS.get(0)) - .id(5L) + .id(COLUMN_5_1_ID) .build()))) .build(); @@ -8221,7 +8180,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_5_BRIEF_DTO) .column(TABLE_5_COLUMNS_BRIEF_0_DTO) - .id(5L) + .id(COLUMN_5_1_ID) .build()))) .build(); @@ -8232,7 +8191,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_6) .column(TABLE_6_COLUMNS.get(0)) - .id(6L) + .id(COLUMN_6_1_ID) .build()))) .build(); @@ -8243,18 +8202,18 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_6_BRIEF_DTO) .column(TABLE_6_COLUMNS_BRIEF_0_DTO) - .id(6L) + .id(COLUMN_6_1_ID) .build()))) .build(); public static final Constraints TABLE_7_CONSTRAINTS = Constraints.builder() .checks(new LinkedHashSet<>()) .foreignKeys(new LinkedList<>(List.of(ForeignKey.builder() - .id(8L) + .id(UUID.fromString("421c3dd8-ae09-4c72-a6ca-09de009e755f")) .name("fk_name_id") .onDelete(ReferenceType.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReference.builder() - .id(2L) + .id(UUID.fromString("7c0e4a3c-88b8-4276-8924-403fd122fbf1")) .column(TABLE_6_COLUMNS.get(0)) .referencedColumn(TABLE_7_COLUMNS.get(0)) .foreignKey(null) // set later @@ -8264,11 +8223,11 @@ public abstract class BaseTest { .onUpdate(ReferenceType.NO_ACTION) .build(), ForeignKey.builder() - .id(9L) + .id(UUID.fromString("fce75207-6009-49ff-a646-d3e18aed787a")) .name("fk_zoo_id") .onDelete(ReferenceType.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReference.builder() - .id(3L) + .id(UUID.fromString("e6cb1daa-a210-41c4-bb79-2c98ef25a02c")) .column(TABLE_5_COLUMNS.get(0)) .referencedColumn(TABLE_7_COLUMNS.get(1)) .foreignKey(null) // set later @@ -8281,16 +8240,16 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_7) .column(TABLE_7_COLUMNS.get(0)) - .id(7L) + .id(COLUMN_7_1_ID) .build()))) .build(); public static final ForeignKeyDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_0_DTO = ForeignKeyDto.builder() - .id(2L) + .id(UUID.fromString("561b4933-54e5-4dad-a536-39836da87fe3")) .name("fk_name_id") .onDelete(ReferenceTypeDto.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder() - .id(2L) + .id(UUID.fromString("0f4b00c0-f2a8-4929-8619-bdc941b5dc8c")) .column(TABLE_6_COLUMNS_BRIEF_0_DTO) .referencedColumn(TABLE_7_COLUMNS_BRIEF_0_DTO) .foreignKey(null) // set later @@ -8301,15 +8260,15 @@ public abstract class BaseTest { .build(); public static final ForeignKeyBriefDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_BRIEF_0_DTO = ForeignKeyBriefDto.builder() - .id(2L) + .id(UUID.fromString("a92f09c5-9bce-4f77-8f7b-a9afc1d30ec2")) .build(); public static final ForeignKeyDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_1_DTO = ForeignKeyDto.builder() - .id(3L) + .id(UUID.fromString("f2e82566-ddc3-4b76-8d27-adc3c51780a9")) .name("fk_zoo_id") .onDelete(ReferenceTypeDto.NO_ACTION) .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder() - .id(3L) + .id(UUID.fromString("7a393166-25d2-4b8c-a5e7-7d1b3b33b823")) .column(TABLE_5_COLUMNS_BRIEF_0_DTO) .referencedColumn(TABLE_7_COLUMNS_BRIEF_1_DTO) .foreignKey(null) // set later @@ -8320,7 +8279,7 @@ public abstract class BaseTest { .build(); public static final ForeignKeyBriefDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_BRIEF_1_DTO = ForeignKeyBriefDto.builder() - .id(3L) + .id(UUID.fromString("6ce1f707-0bdf-4930-be77-157801d2735a")) .build(); public static final ConstraintsDto TABLE_7_CONSTRAINTS_DTO = ConstraintsDto.builder() @@ -8331,7 +8290,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_7_BRIEF_DTO) .column(TABLE_7_COLUMNS_BRIEF_0_DTO) - .id(7L) + .id(UUID.fromString("9969e13f-2a2f-45c7-bccf-a7df0ac813a8")) .build()))) .build(); @@ -8342,7 +8301,7 @@ public abstract class BaseTest { .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder() .table(TABLE_8) .column(TABLE_8_COLUMNS.get(0)) - .id(8L) + .id(UUID.fromString("cd23b601-966c-4aa7-9722-6bcb009200cc")) .build()))) .build(); @@ -8353,7 +8312,7 @@ public abstract class BaseTest { .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_8_BRIEF_DTO) .column(TABLE_8_COLUMNS_BRIEF_0_DTO) - .id(8L) + .id(UUID.fromString("c61196d1-a902-405c-a825-0781c0c94df1")) .build()))) .build(); @@ -8362,25 +8321,4 @@ public abstract class BaseTest { .resource(new InputStreamResource(InputStream.nullInputStream())) .build(); - public static void saveObservedMetrics(Map<String, String> observedMetrics) throws IOException { - final int keySize = observedMetrics.keySet().stream().max(Comparator.comparingInt(String::length)).get().length(); - final int valueSize = observedMetrics.values().stream().max(Comparator.comparingInt(String::length)).get().length(); - final StringBuilder content = new StringBuilder("| ") - .append(StringUtils.rightPad("**Metric**", Integer.max(keySize + 2, 16))) - .append(" | ") - .append(StringUtils.rightPad("**Description**", Integer.max(valueSize, 19))) - .append(" |\n") - .append("|-") - .append(StringUtils.leftPad("", Integer.max(keySize + 2, 16), "-")) - .append("-|-") - .append(StringUtils.leftPad("", Integer.max(valueSize, 19), "-")) - .append("-|\n"); - observedMetrics.forEach((key, value) -> content.append("| ") - .append(StringUtils.rightPad("`" + key + "`", Integer.max(keySize + 2, 16))) - .append(" | ") - .append(StringUtils.rightPad(value, Integer.max(valueSize, 19))) - .append(" |\n")); - FileUtils.writeStringToFile(new File("../metrics.md"), content.toString(), Charset.defaultCharset()); - } - } diff --git a/dbrepo-search-service/.coveragerc b/dbrepo-search-service/.coveragerc index 4683a93d3748d16ab20a61f318e3016d3f4a8e09..a387be84259ecf1c8b1387a407e3cfc528960a30 100644 --- a/dbrepo-search-service/.coveragerc +++ b/dbrepo-search-service/.coveragerc @@ -1,5 +1,9 @@ [report] omit = - */test/* - */omlib/* - */init/* \ No newline at end of file + # omit tests + ./tests/* + # omit ext lib + ./omlib/* + +[html] +directory = htmlcov diff --git a/dbrepo-search-service/Pipfile b/dbrepo-search-service/Pipfile index 536a5f3a9172dfa50a38671ff50a7d06b9e4a8b2..6284708cc1d7f99f10843ad47c05b35a25916bf4 100644 --- a/dbrepo-search-service/Pipfile +++ b/dbrepo-search-service/Pipfile @@ -18,7 +18,7 @@ jwt = "~=1.3" testcontainers-opensearch = "*" pytest = "*" rdflib = "*" -dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"} gunicorn = "*" [dev-packages] diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index ee4559cd98d5de000c481dde00e5176390b61fc9..4dd148a5e49ea67bed885631abe6a387c133682b 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2f5a0ee9d98b5e49a8d4957fb07a5231178b3fe8cc2016850c9b42c67780004d" + "sha256": "30aa6fefdbdbb9f57d58ebc8660eee64445a831cea44c6ca1fa605f2a2e1adc3" }, "pipfile-spec": 6, "requires": { @@ -369,9 +369,9 @@ }, "dbrepo": { "hashes": [ - "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], - "path": "./lib/dbrepo-1.6.5.tar.gz" + "path": "./lib/dbrepo-1.7.0.tar.gz" }, "docker": { "hashes": [ @@ -748,11 +748,11 @@ }, "mistune": { "hashes": [ - "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a", - "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c" + "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319", + "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff" ], "markers": "python_version >= '3.8'", - "version": "==3.1.1" + "version": "==3.1.2" }, "multidict": { "hashes": [ diff --git a/dbrepo-search-service/app.py b/dbrepo-search-service/app.py index 13a9be870405ad27463cb5e21681f76dd82947aa..8e265465326bea0a61a9772c93b22143243921a3 100644 --- a/dbrepo-search-service/app.py +++ b/dbrepo-search-service/app.py @@ -5,6 +5,8 @@ from json import dumps from typing import List, Any import requests +from clients.keycloak_client import User, KeycloakClient +from clients.opensearch_client import OpenSearchClient, flatten from dbrepo.api.dto import Database, ApiError from flasgger import LazyJSONEncoder, Swagger, swag_from from flask import Flask, request, Response @@ -16,9 +18,6 @@ from prometheus_flask_exporter import PrometheusMetrics from pydantic import ValidationError from pydantic.deprecated.json import pydantic_encoder -from clients.keycloak_client import User, KeycloakClient -from clients.opensearch_client import OpenSearchClient, flatten - logging.addLevelName(level=logging.NOTSET, levelName='TRACE') logging.basicConfig(level=logging.DEBUG) @@ -412,11 +411,11 @@ def post_general_search(field_type): return Response(dumps(response, default=pydantic_encoder)), 200, {'Content-Type': 'application/json'} -@app.route("/api/search/database/<int:database_id>", methods=["PUT"], endpoint="search_put_database") +@app.route("/api/search/database/<string:database_id>", methods=["PUT"], endpoint="search_put_database") @metrics.gauge(name='dbrepo_search_update_database', description='Time needed to update a database in the search database') @auth.login_required(role=['update-search-index']) -def update_database(database_id: int): +def update_database(database_id: str): logging.debug(f"updating database with id: {database_id}") try: payload: Database = Database.model_validate(request.json) @@ -429,11 +428,11 @@ def update_database(database_id: int): return database.model_dump(), 202 -@app.route("/api/search/database/<int:database_id>", methods=["DELETE"], endpoint="database_delete_database") +@app.route("/api/search/database/<string:database_id>", methods=["DELETE"], endpoint="database_delete_database") @metrics.gauge(name='dbrepo_search_delete_database', description='Time needed to delete a database in the search database') @auth.login_required(role=['admin']) -def delete_database(database_id: int): +def delete_database(database_id: str): try: OpenSearchClient().delete_database(database_id) return Response(dumps({})), 202 diff --git a/dbrepo-search-service/init/.coveragerc b/dbrepo-search-service/init/.coveragerc index b5a0e606be380a3149f066712428e43c82af2bd8..a387be84259ecf1c8b1387a407e3cfc528960a30 100644 --- a/dbrepo-search-service/init/.coveragerc +++ b/dbrepo-search-service/init/.coveragerc @@ -1,5 +1,9 @@ [report] - omit = # omit tests - ./test/* \ No newline at end of file + ./tests/* + # omit ext lib + ./omlib/* + +[html] +directory = htmlcov diff --git a/dbrepo-search-service/init/Pipfile b/dbrepo-search-service/init/Pipfile index b9a274061348045bc48b80501425bcef8c907721..fb1215f57667a4a54c344b54b047ebb4b00e8ad9 100644 --- a/dbrepo-search-service/init/Pipfile +++ b/dbrepo-search-service/init/Pipfile @@ -9,7 +9,7 @@ opensearch-py = "~=2.2" python-dotenv = "~=1.0" testcontainers-opensearch = "*" pytest = "*" -dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"} rdflib = "*" [dev-packages] diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 5fa254a95c9d93d6bece70f256d29c91983bd25e..11510c1f53745a2c4bd2e01476fdef323f4423b8 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "ff7c99ed5a6bbe231e029a957724c779f019be7456f43ef9cc08df576991d7c3" + "sha256": "f2b08da6e7efe0ce8db0dd5a4a7d2ba9b2992b391f191cf60db744d0e353f614" }, "pipfile-spec": 6, "requires": { @@ -259,9 +259,9 @@ }, "dbrepo": { "hashes": [ - "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], - "path": "./lib/dbrepo-1.6.5.tar.gz" + "path": "./lib/dbrepo-1.7.0.tar.gz" }, "docker": { "hashes": [ diff --git a/dbrepo-search-service/init/clients/opensearch_client.py b/dbrepo-search-service/init/clients/opensearch_client.py index 35c26f03f5f684adc2652c199db7f99afd6cfc13..deca261ce273563bb84aa19e7525440f4d64bdeb 100644 --- a/dbrepo-search-service/init/clients/opensearch_client.py +++ b/dbrepo-search-service/init/clients/opensearch_client.py @@ -51,7 +51,7 @@ class OpenSearchClient: http_auth=(self.username, self.password)) return self.instance - def update_database(self, database_id: int, data: Database) -> Database: + def update_database(self, database_id: str, data: Database) -> Database: """ Updates the database data with given id. @@ -66,7 +66,7 @@ class OpenSearchClient: response: dict = self._instance().get(index="database", id=database_id) return Database.model_validate(response["_source"]) - def delete_database(self, database_id: int) -> None: + def delete_database(self, database_id: str) -> None: """ Deletes the database data with given id. diff --git a/dbrepo-search-service/init/database.json b/dbrepo-search-service/init/database.json index 59cbd78438a5fff391d1237c70a0384d7b397a83..175a50dd9b829d0ce855a5c9eceae694937009cc 100644 --- a/dbrepo-search-service/init/database.json +++ b/dbrepo-search-service/init/database.json @@ -131,7 +131,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "image": { "properties": { @@ -154,9 +160,6 @@ } }, "id": { - "type": "long" - }, - "jdbc_method": { "type": "text", "fields": { "keyword": { @@ -215,18 +218,6 @@ "port": { "type": "long" }, - "sidecar_host": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "sidecar_port": { - "type": "long" - }, "ui_host": { "type": "text", "fields": { @@ -303,7 +294,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "identifiers": { "properties": { @@ -371,7 +368,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "name_identifier": { "type": "text", @@ -412,7 +415,13 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "descriptions": { "properties": { @@ -426,12 +435,24 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "licenses": { "properties": { @@ -512,7 +533,13 @@ "titles": { "properties": { "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "title": { "type": "text", @@ -535,7 +562,13 @@ } }, "view_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, @@ -592,10 +625,22 @@ "type": "long" }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -634,7 +679,13 @@ "type": "float" }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, @@ -645,26 +696,62 @@ "column": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } } @@ -675,26 +762,62 @@ "columns": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } } @@ -758,7 +881,13 @@ "type": "long" }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "description": { "type": "text", @@ -770,7 +899,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -839,10 +974,22 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -926,10 +1073,22 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "identifiers": { "properties": { @@ -997,7 +1156,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "name_identifier": { "type": "text", @@ -1038,7 +1203,13 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "descriptions": { "properties": { @@ -1052,12 +1223,24 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "licenses": { "properties": { @@ -1138,7 +1321,13 @@ "titles": { "properties": { "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "title": { "type": "text", @@ -1161,7 +1350,13 @@ } }, "view_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl deleted file mode 100644 index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz deleted file mode 100644 index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz and /dev/null differ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl deleted file mode 100644 index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz deleted file mode 100644 index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 Binary files /dev/null and b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl differ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323 Binary files /dev/null and b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz differ diff --git a/dbrepo-search-service/init/tests/test_opensearch_client.py b/dbrepo-search-service/init/tests/test_opensearch_client.py index 70328df6387dd9d6743804bb3c240637a35d6f40..fe65fd060a363d5ecebf98fa006db78b6f30c555 100644 --- a/dbrepo-search-service/init/tests/test_opensearch_client.py +++ b/dbrepo-search-service/init/tests/test_opensearch_client.py @@ -1,14 +1,14 @@ +import os import unittest import opensearchpy -import os from dbrepo.api.dto import Database, Table, Column, ColumnType, Constraints, PrimaryKey, \ ConceptBrief, UnitBrief, UserBrief, ContainerBrief, ImageBrief, TableBrief, ColumnBrief from opensearchpy import NotFoundError from clients.opensearch_client import OpenSearchClient -req = Database(id=1, +req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948", name="Test", internal_name="test_tuw1", owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), @@ -16,16 +16,15 @@ req = Database(id=1, exchange_name="dbrepo", is_public=True, is_schema_public=True, - container=ContainerBrief(id=1, + container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", name="MariaDB", internal_name="mariadb", - host="data-db", - image=ImageBrief(id=1, + image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549", name="mariadb", version="11.1.3", jdbc_method="mariadb")), - tables=[Table(id=1, - database_id=1, + tables=[Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", + database_id="209acf92-5c9b-4633-ad99-113c86f6e948", name="Data", internal_name="data", owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), @@ -35,9 +34,9 @@ req = Database(id=1, routing_key="dbrepo.1.1", is_public=True, is_schema_public=True, - columns=[Column(id=1, - database_id=1, - table_id=1, + columns=[Column(id="7bef7e68-88f1-438e-9b94-0a77afd21471", + database_id="209acf92-5c9b-4633-ad99-113c86f6e948", + table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", name="ID", ord=0, internal_name="id", @@ -45,8 +44,9 @@ req = Database(id=1, is_null_allowed=False, size=20, d=0, - concept=ConceptBrief(id=1, uri="http://www.wikidata.org/entity/Q2221906"), - unit=UnitBrief(id=1, + concept=ConceptBrief(id="fb32ecf6-1f68-49b4-85ee-04e76263cbef", + uri="http://www.wikidata.org/entity/Q2221906"), + unit=UnitBrief(id="a67d735e-32ef-4917-b412-fe099c6757a1", uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"), val_min=0, val_max=10)] @@ -56,7 +56,7 @@ req = Database(id=1, class OpenSearchClientTest(unittest.TestCase): def test_update_database_succeeds(self): - req.tables = [Table(id=1, + req.tables = [Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", name="Test Table", internal_name="test_table", queue_name="dbrepo", @@ -64,27 +64,31 @@ class OpenSearchClientTest(unittest.TestCase): is_public=True, is_schema_public=True, database_id=req.id, - constraints=Constraints(uniques=[], foreign_keys=[], checks=[], - primary_key=[PrimaryKey(id=1, - table=TableBrief(id=1, - database_id=req.id, - name="Test Table", - internal_name="test_table", - is_public=True, - is_schema_public=True, - is_versioned=True, - owned_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502"), - column=ColumnBrief(id=1, - name="ID", - database_id=req.id, - table_id=1, - internal_name="id", - type=ColumnType.BIGINT))]), + constraints=Constraints(uniques=[], + foreign_keys=[], + checks=[], + primary_key=[PrimaryKey(id="f0d4dfdf-d987-4c73-aa40-1038db79bb31", + table=TableBrief( + id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", + database_id=req.id, + name="Test Table", + internal_name="test_table", + is_public=True, + is_schema_public=True, + is_versioned=True, + owned_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502"), + column=ColumnBrief( + id="90d81c6a-e69a-4413-97b8-fd2266a6e641", + name="ID", + database_id=req.id, + table_id="90d81c6a-e69a-4413-97b8-fd2266a6e641", + internal_name="id", + type=ColumnType.BIGINT))]), is_versioned=True, owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), - columns=[Column(id=1, + columns=[Column(id="c63bde4a-61e4-42f1-ab64-350579c0691f", database_id=req.id, - table_id=1, + table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", ord=0, name="ID", internal_name="id", @@ -95,7 +99,7 @@ class OpenSearchClientTest(unittest.TestCase): # test database = OpenSearchClient().update_database(database_id=req.id, data=req) - self.assertEqual(1, database.id) + self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.id) self.assertEqual("Test", database.name) self.assertEqual("test_tuw1", database.internal_name) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) @@ -104,34 +108,34 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("foo", database.contact.username) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) - self.assertEqual(1, database.container.id) + self.assertEqual("7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", database.container.id) # ... - self.assertEqual(1, database.container.image.id) + self.assertEqual("f97791b4-baf4-4b18-8f7d-3084818e6549", database.container.image.id) # ... self.assertEqual(1, len(database.tables)) - self.assertEqual(1, database.tables[0].id) + self.assertEqual("f94a6164-cad4-4873-a9fd-3fe5313b2e95", database.tables[0].id) self.assertEqual("Test Table", database.tables[0].name) self.assertEqual("test_table", database.tables[0].internal_name) self.assertEqual("dbrepo", database.tables[0].queue_name) self.assertEqual("dbrepo.test_tuw1.test_table", database.tables[0].routing_key) self.assertEqual(True, database.tables[0].is_public) - self.assertEqual(1, database.tables[0].database_id) + self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.tables[0].database_id) self.assertEqual(True, database.tables[0].is_versioned) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id) self.assertEqual("foo", database.tables[0].owner.username) self.assertEqual(1, len(database.tables[0].columns)) - self.assertEqual(1, database.tables[0].columns[0].id) + self.assertEqual("c63bde4a-61e4-42f1-ab64-350579c0691f", database.tables[0].columns[0].id) self.assertEqual("ID", database.tables[0].columns[0].name) self.assertEqual("id", database.tables[0].columns[0].internal_name) self.assertEqual(ColumnType.BIGINT, database.tables[0].columns[0].type) - self.assertEqual(1, database.tables[0].columns[0].database_id) - self.assertEqual(1, database.tables[0].columns[0].table_id) + self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.tables[0].columns[0].database_id) + self.assertEqual("f94a6164-cad4-4873-a9fd-3fe5313b2e95", database.tables[0].columns[0].table_id) self.assertEqual(False, database.tables[0].columns[0].is_null_allowed) def test_update_database_create_succeeds(self): # test database = OpenSearchClient().update_database(database_id=req.id, data=req) - self.assertEqual(1, database.id) + self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.id) self.assertEqual("Test", database.name) self.assertEqual("test_tuw1", database.internal_name) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) @@ -140,9 +144,9 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("foo", database.contact.username) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) - self.assertEqual(1, database.container.id) + self.assertEqual("7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", database.container.id) # ... - self.assertEqual(1, database.container.image.id) + self.assertEqual("f97791b4-baf4-4b18-8f7d-3084818e6549", database.container.image.id) # ... self.assertEqual(1, len(database.tables)) diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl deleted file mode 100644 index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz deleted file mode 100644 index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz and /dev/null differ diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl deleted file mode 100644 index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz deleted file mode 100644 index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000 Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 Binary files /dev/null and b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl differ diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323 Binary files /dev/null and b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz differ diff --git a/dbrepo-search-service/tests/test_app.py b/dbrepo-search-service/tests/test_app.py index 2b765b77544239bc0f6f3352ced6b07625ab291b..f05171299ef5fe202ee71ce5b5b347364a4eeed8 100644 --- a/dbrepo-search-service/tests/test_app.py +++ b/dbrepo-search-service/tests/test_app.py @@ -8,7 +8,7 @@ from dbrepo.api.dto import Database, Table, Constraints, Column, ColumnType, Con from app import app -req = Database(id=1, +req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948", name="Test", internal_name="test_tuw1", owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), @@ -16,15 +16,17 @@ req = Database(id=1, exchange_name="dbrepo", is_public=True, is_schema_public=True, - container=ContainerBrief(id=1, + container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", name="MariaDB", internal_name="mariadb", - host="data-db", - image=ImageBrief(id=1, + image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549", name="mariadb", version="11.1.3", jdbc_method="mariadb")), - tables=[Table(id=1, database_id=1, name="Data", internal_name="data", + tables=[Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", + database_id="209acf92-5c9b-4633-ad99-113c86f6e948", + name="Data", + internal_name="data", owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[]), is_versioned=False, @@ -32,20 +34,19 @@ req = Database(id=1, routing_key="dbrepo.1.1", is_public=True, is_schema_public=True, - columns=[Column(id=1, - database_id=1, - table_id=1, - ord=0, + columns=[Column(id="7bef7e68-88f1-438e-9b94-0a77afd21471", + database_id="209acf92-5c9b-4633-ad99-113c86f6e948", + table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95", name="ID", + ord=0, internal_name="id", type=ColumnType.BIGINT, - is_public=True, is_null_allowed=False, size=20, d=0, - concept=ConceptBrief(id=1, + concept=ConceptBrief(id="fb32ecf6-1f68-49b4-85ee-04e76263cbef", uri="http://www.wikidata.org/entity/Q2221906"), - unit=UnitBrief(id=1, + unit=UnitBrief(id="a67d735e-32ef-4917-b412-fe099c6757a1", uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"), val_min=0, val_max=10)] diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue index 07fd9d34ea218a91bb6ffb634d210bd5493ad830..177e640aa966f74060a8645297194c6d48d7dd7a 100644 --- a/dbrepo-ui/components/database/DatabaseCreate.vue +++ b/dbrepo-ui/components/database/DatabaseCreate.vue @@ -46,7 +46,7 @@ return-object required> <template - v-if="engine" + v-if="engine && engine.quota" v-slot:details> {{ $t('pages.database.subpages.create.utilization.label') }} {{ engine.count }}/{{ engine.quota }} </template> @@ -139,7 +139,7 @@ export default { this.loadingContainers = true containerService.findAll() .then((containers) => { - const freeContainers = containers.filter(c => c.count < c.quota) + const freeContainers = containers.filter(c => c.quota === null || c.count < c.quota) const defaultContainers = freeContainers.filter(c => c.image.default) defaultContainers.sort(this.compareContainerUtilization) this.engines = defaultContainers diff --git a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue index 4940e75d66b28254449ce3ddf834dfa9fce83c7f..d391ac153a290256db7f287d75d71c346379ce68 100644 --- a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue +++ b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue @@ -89,7 +89,7 @@ import { useCacheStore } from '@/stores/cache.js' export default { props: { id: { - type: Number, + type: String, default () { return null } diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue index e68a4fa55d245cbcb6ad052a8952ad96a9de5e53..5c028cbcb68c6390234127e568096bf3ab1d70b6 100644 --- a/dbrepo-ui/components/dialogs/Semantics.vue +++ b/dbrepo-ui/components/dialogs/Semantics.vue @@ -55,6 +55,7 @@ v-if="recommendations.length === 0"> <v-col> <v-btn + v-if="finishedRecommendations" color="secondary" variant="flat" size="small" @@ -147,8 +148,8 @@ export default { default: () => null }, tableId: { - type: Number, - default: () => -1 + type: String, + default: () => null }, mode: { type: String, @@ -165,6 +166,7 @@ export default { uri: null, valid: false, loading: false, + finishedRecommendations: false, loadingOntologies: false, loadingSemantics: false, cacheStore: useCacheStore() @@ -172,7 +174,7 @@ export default { }, computed: { title () { - return this.$t('pages.table.subpages.semantics.title') + ' ' + this.column.internal_name + return this.$t('pages.table.subpages.semantics.title', { type: this.mode }) + ' ' + this.column.internal_name }, ontologies () { return this.cacheStore.getOntologies.filter(o => o.sparql || o.rdf) @@ -243,6 +245,13 @@ export default { action: 'assign' }) }) + .catch(({code, message}) => { + const toast = useToastInstance() + if (typeof code !== 'string') { + return + } + toast.error(message) + }) .finally(() => { this.recommendation = null this.$refs.form.reset() @@ -255,10 +264,14 @@ export default { tableService.suggest(this.database.id, this.tableId, this.column.id) .then((recommendations) => { this.recommendations = recommendations + this.finishedRecommendations = true }) - .catch((error) => { + .catch(({code, message}) => { const toast = useToastInstance() - toast.error(this.$t('error.semantics.timeout')) + if (typeof code !== 'string') { + return + } + toast.error(message) }) .finally(() => { this.loadingSemantics = false diff --git a/dbrepo-ui/components/dialogs/ViewVisibility.vue b/dbrepo-ui/components/dialogs/ViewVisibility.vue index 6a37bf415348ac9b2fe1c705bd40e762596db26c..7ccdb12df6658de6e6216d632b7fc15619a4a2c6 100644 --- a/dbrepo-ui/components/dialogs/ViewVisibility.vue +++ b/dbrepo-ui/components/dialogs/ViewVisibility.vue @@ -11,7 +11,7 @@ <v-row dense> <v-col - md="6"> + lg="6"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -25,7 +25,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" /> </v-col> <v-col - md="6"> + lg="6"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue index 9ee434c943da8c011e0bfece1c88c06b525845a9..a52cd87159b23f4cad7d64ae5dd4fe177a489b65 100644 --- a/dbrepo-ui/components/identifier/Citation.vue +++ b/dbrepo-ui/components/identifier/Citation.vue @@ -3,12 +3,12 @@ no-gutters> <v-col v-if="!loading" - md="10"> + lg="10"> {{ citation }} </v-col> <v-col v-if="!$vuetify.display.mdAndDown" - md="2" + lg="2" class="cite-style"> <v-select v-model="style" diff --git a/dbrepo-ui/components/identifier/DownloadButton.vue b/dbrepo-ui/components/identifier/DownloadButton.vue index 85b58dc818b49d2dfb43fe15bd229084122990dd..3f9fdd10d90ae2663fcbced834b82d2a0d471bd6 100644 --- a/dbrepo-ui/components/identifier/DownloadButton.vue +++ b/dbrepo-ui/components/identifier/DownloadButton.vue @@ -11,7 +11,7 @@ export default { props: { pid: { - type: Number, + type: String, default () { return null } diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index f37c5c6d7d9893562d94393fe6aa19ab3b448d79..89b1ca9d8ac35e21f4de9aa82a418f73bc96375d 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -867,10 +867,10 @@ export default { error: false, // XXX: `error` is never changed licenses: [], identifier: { - database_id: parseInt(this.$route.params.database_id), - query_id: parseInt(this.$route.params.subset_id), - view_id: parseInt(this.$route.params.view_id), - table_id: parseInt(this.$route.params.table_id), + database_id: this.$route.params.database_id, + query_id: this.$route.params.subset_id, + view_id: this.$route.params.view_id, + table_id: this.$route.params.table_id, titles: [], descriptions: [], publisher: this.$config.public.pid.default.publisher, diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index f670700f2f23aa2a08a6ecf8004fecfb899c6c00..e66f72e362a845c4aff83c67eada608a46d52023 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -42,7 +42,8 @@ v-if="isView" class="mt-1" dense> - <v-col lg="8"> + <v-col + lg="8"> <v-text-field v-model="view.name" :disabled="isExecuted" @@ -63,7 +64,7 @@ v-if="isView" dense> <v-col - md="4"> + lg="4"> <v-select v-model="view.is_public" :items="dataOptions" @@ -78,7 +79,7 @@ :hint="$t('pages.database.resource.data.hint')" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="view.is_schema_public" :items="schemaOptions" @@ -99,7 +100,8 @@ <v-window-item value="0"> <v-row dense> - <v-col lg="4"> + <v-col + lg="4"> <v-select v-model="table" :disabled="isExecuted" @@ -113,7 +115,8 @@ :hint="$t('pages.view.subpages.create.table.hint')" :rules="[v => !!v || $t('validation.required')]" /> </v-col> - <v-col lg="4"> + <v-col + lg="4"> <v-select v-model="select" item-title="internal_name" @@ -147,8 +150,10 @@ </v-select> </v-col> </v-row> - <v-row v-if="select.length > 0"> - <v-col lg="8"> + <v-row + v-if="select.length > 0"> + <v-col + lg="8"> <v-btn v-if="clauses.length === 0" size="small" @@ -160,7 +165,8 @@ </v-col> </v-row> <div class="mb-5"> - <v-row v-if="clauses.length > 0"> + <v-row + v-if="clauses.length > 0"> <v-col lg="8" class="text-center"> @@ -170,7 +176,8 @@ <div v-for="(clause, idx) in clauses" :key="idx"> <v-row v-if="clause.type === 'where'"> - <v-col lg="3"> + <v-col + lg="3"> <v-select v-model="clause.params[0]" :disabled="clausesDisabled" @@ -182,7 +189,8 @@ :hint="$t('pages.subset.subpages.create.filter.column.hint')" :items="select" /> </v-col> - <v-col lg="2"> + <v-col + lg="2"> <v-select v-model="clause.params[1]" :disabled="clausesDisabled" @@ -211,7 +219,8 @@ </template> </v-select> </v-col> - <v-col lg="3"> + <v-col + lg="3"> <v-text-field v-model="clause.params[2]" :disabled="clausesDisabled" @@ -219,7 +228,8 @@ :label="$t('pages.subset.subpages.create.filter.value.label')" :hint="$t('pages.subset.subpages.create.filter.value.hint')" /> </v-col> - <v-col lg="1"> + <v-col + lg="1"> <v-btn :disabled="clausesDisabled" class="mt-4" @@ -469,6 +479,7 @@ export default { }, mounted () { this.selectTable() + this.initViewVisibility() }, methods: { fetchTableColumns (tableId) { @@ -488,6 +499,13 @@ export default { toast.error(this.$t(code)) }) }, + initViewVisibility () { + if (!this.database) { + return + } + this.view.is_public = this.database.is_public + this.view.is_schema_public = this.database.is_schema_public + }, validViewName (name) { if (!name) { return false @@ -499,7 +517,7 @@ export default { if (this.$route.query.tid === undefined) { return } - const tid = parseInt(this.$route.query.tid) + const tid = this.$route.query.tid const selection = this.tables.filter(t => t.id === tid) if (selection.length > 0) { this.table = selection[0] @@ -509,9 +527,9 @@ export default { console.warn('Failed to find table with id', tid) } }, - async execute () { + execute () { if (this.isView) { - await this.createView() + this.createView() return } if (this.timestamp === '') { diff --git a/dbrepo-ui/components/subset/Results.vue b/dbrepo-ui/components/subset/Results.vue index 661c7d1a3d6e7502cf349a63cc695cf7d593f427..a4a2565d7004a92fa9b3b6c0eab2907c8a220306 100644 --- a/dbrepo-ui/components/subset/Results.vue +++ b/dbrepo-ui/components/subset/Results.vue @@ -80,7 +80,7 @@ export default { } }, methods: { - reExecute (id) { + reExecute (id, timestamp) { if (id === null) { return } @@ -110,7 +110,7 @@ export default { }) } else if (this.type === 'table') { const tableService = useTableService() - tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, this.timestamp) + tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, timestamp ? timestamp : this.timestamp) .then((result) => { this.mapResults(result) this.id = id @@ -156,7 +156,7 @@ export default { }) } }, - reExecuteCount (id) { + reExecuteCount (id, timestamp) { if (id === null) { return } @@ -181,7 +181,7 @@ export default { }) } else if (this.type === 'table') { const tableService = useTableService() - tableService.getCount(this.$route.params.database_id, id, this.timestamp) + tableService.getCount(this.$route.params.database_id, id, timestamp ? timestamp : this.timestamp) .then((count) => { this.total = count this.loadingCount = false diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index e6026090978a3745af50b7e9a3e7a559ae5363a5..2e6dae63025d72ad8890ad70ef69daca040cc333 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -110,7 +110,7 @@ export default { identifier () { /* mount pid */ if (this.pid) { - const filter = this.identifiers.filter(i => i.id === Number(this.pid)) + const filter = this.identifiers.filter(i => i.id === this.pid) if (filter.length > 0) { return filter[0] } diff --git a/dbrepo-ui/components/table/TableHistory.vue b/dbrepo-ui/components/table/TableHistory.vue index ccc270c46c22de4933c76a448a9e7db95a2f6a10..c0e2bd7c7aa133fbf4afa64a5d46195f93a8e4fa 100644 --- a/dbrepo-ui/components/table/TableHistory.vue +++ b/dbrepo-ui/components/table/TableHistory.vue @@ -167,8 +167,8 @@ export default { // labels: history ? history.map(d => format(new UTCDate(d.timestamp), 'yyyy-MM-dd HH:mm:ss.SSS')) : [], labels: history ? history.map(d => format(new UTCDate(d.timestamp), 'yyyy-MM-dd HH:mm:ss')) : [], datasets: [ - { backgroundColor: this.$vuetify.theme.current.colors.success, data: this.filterHistoryEventType(history, 'INSERT') }, - { backgroundColor: this.$vuetify.theme.current.colors.error, data: this.filterHistoryEventType(history, 'DELETE') } + { backgroundColor: this.$vuetify.theme.current.colors.success, data: this.filterHistoryEventType(history, 'insert') }, + { backgroundColor: this.$vuetify.theme.current.colors.error, data: this.filterHistoryEventType(history, 'delete') } ] } }) diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue index a4eb63733bb534e83166f76fbf006cf354828291..319fe3b37c798ccfcf471ba82951504030f3dd14 100644 --- a/dbrepo-ui/components/table/TableImport.vue +++ b/dbrepo-ui/components/table/TableImport.vue @@ -14,8 +14,10 @@ :disabled="disabled" @submit.prevent="submit"> <v-container> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.separator" :items="separators" @@ -30,8 +32,10 @@ :label="$t('pages.table.subpages.import.separator.label')"/> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.header" :items="headers" @@ -45,8 +49,10 @@ :label="$t('pages.table.subpages.import.skip.label')" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.quote" :items="quotes" @@ -59,8 +65,10 @@ :label="$t('pages.table.subpages.import.quote.label')"/> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.line_termination" :items="lineTerminationItems" @@ -117,7 +125,7 @@ v-if="step > 1 && suggestedAnalyseSeparator && providedSeparator !== analysedSeparator" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning"> @@ -137,7 +145,7 @@ v-if="step > 1 && suggestedAnalyseLineTerminator && providedTerminator !== analysedTerminator" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning"> @@ -153,7 +161,7 @@ v-if="!hasCompatibleSchema" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning" @@ -236,7 +244,7 @@ <v-row dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/components/table/TableSchema.vue b/dbrepo-ui/components/table/TableSchema.vue index baf04272b40573eb7c9fd8ab96a0f8b2947c82e5..811efae792d9bb2dd82b542d23ee1949558ac034 100644 --- a/dbrepo-ui/components/table/TableSchema.vue +++ b/dbrepo-ui/components/table/TableSchema.vue @@ -6,7 +6,8 @@ :disabled="disabled"> <v-row v-if="showPrimaryKeyWarning"> - <v-col md="8"> + <v-col + lg="8"> <v-alert border="start" color="warning"> @@ -268,7 +269,7 @@ export default { } this.loadingColumnTypes = true const imageService = useImageService() - imageService.findById(this.database.container.id) + imageService.findById(this.database.container.image.id) .then((image) => { const types = image.data_types if (this.columns.filter(c => c.type === 'serial').length > 0) { diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index d9e0bfb6bf6740c19aac53f6b3ac8cc374be7011..9f44c8d4804d8b9ca8b81bdbab5e95b7ae5ce5c5 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -145,12 +145,12 @@ export default { if (!this.view) { return [] } - return this.view.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id)) + return this.view.identifiers.filter(s => s.view_id === this.$route.params.view_id) }, identifier () { /* mount pid */ if (this.pid) { - const filter = this.identifiers.filter(i => i.id === Number(this.pid)) + const filter = this.identifiers.filter(i => i.id === this.pid) if (filter.length > 0) { const identifier = filter[0] console.debug('identifier set according to route pid', identifier) diff --git a/dbrepo-ui/composables/access-service.ts b/dbrepo-ui/composables/access-service.ts index 056efec1171933d7dcf0921c7eff34717d574333..169d5126b73de093e2f0f8824a397cab3ee09019 100644 --- a/dbrepo-ui/composables/access-service.ts +++ b/dbrepo-ui/composables/access-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useAccessService = (): any => { - async function findOne(databaseId: number, userId: string): Promise<DatabaseAccessDto> { + async function findOne(databaseId: string, userId: string): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('find access of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -17,7 +17,7 @@ export const useAccessService = (): any => { }) } - async function create(databaseId: number, userId: number, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> { + async function create(databaseId: string, userId: string, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('create access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useAccessService = (): any => { }) } - async function update(databaseId: number, userId: number, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> { + async function update(databaseId: string, userId: string, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('update access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useAccessService = (): any => { }) } - async function remove(databaseId: number, userId: number): Promise<DatabaseAccessDto> { + async function remove(databaseId: string, userId: string): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('remove access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/container-service.ts b/dbrepo-ui/composables/container-service.ts index f1280517566165b8f190b9bd05eea3b1d4ac98f1..e21622eab14d884840ff872ca4dd1ecab50aa30e 100644 --- a/dbrepo-ui/composables/container-service.ts +++ b/dbrepo-ui/composables/container-service.ts @@ -17,7 +17,7 @@ export const useContainerService = (): any => { }) } - async function findOne(containerId: number): Promise<ContainerDto> { + async function findOne(containerId: string): Promise<ContainerDto> { const axios = useAxiosInstance(); console.debug('find containers'); return new Promise<ContainerDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/database-service.ts b/dbrepo-ui/composables/database-service.ts index f318e073054d6a4283b654bbae985b4f903aec00..0609373923d3fd75d06cfb341cc350d99ad50b3f 100644 --- a/dbrepo-ui/composables/database-service.ts +++ b/dbrepo-ui/composables/database-service.ts @@ -17,7 +17,7 @@ export const useDatabaseService = (): any => { }); } - async function refreshTablesMetadata(databaseId: number): Promise<DatabaseDto> { + async function refreshTablesMetadata(databaseId: string): Promise<DatabaseDto> { const axios = useAxiosInstance(); console.debug('refresh database tables metadata'); return new Promise<DatabaseDto>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useDatabaseService = (): any => { }); } - async function refreshViewsMetadata(databaseId: number): Promise<DatabaseDto> { + async function refreshViewsMetadata(databaseId: string): Promise<DatabaseDto> { const axios = useAxiosInstance(); console.debug('refresh database views metadata'); return new Promise<DatabaseDto>((resolve, reject) => { @@ -66,7 +66,7 @@ export const useDatabaseService = (): any => { }); } - async function findOne(id: number, rawError: boolean = false): Promise<DatabaseDto | null> { + async function findOne(id: string, rawError: boolean = false): Promise<DatabaseDto | null> { const axios = useAxiosInstance(); console.debug('find database with id', id); return new Promise((resolve, reject) => { @@ -85,7 +85,7 @@ export const useDatabaseService = (): any => { }); } - async function findPreviewImage(id: number): Promise<string> { + async function findPreviewImage(id: string): Promise<string> { const axios = useAxiosInstance(); console.debug('find database preview image with id', id); return new Promise((resolve, reject) => { @@ -101,7 +101,7 @@ export const useDatabaseService = (): any => { }); } - async function updateVisibility(id: number, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> { + async function updateVisibility(id: string, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database visibility for database with id', id); return new Promise((resolve, reject) => { @@ -117,7 +117,7 @@ export const useDatabaseService = (): any => { }); } - async function updateImage(id: number, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> { + async function updateImage(id: string, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database image for database with id', id); return new Promise((resolve, reject) => { @@ -133,7 +133,7 @@ export const useDatabaseService = (): any => { }); } - async function updateOwner(id: number, payload: DatabaseTransferDto): Promise<DatabaseDto | null> { + async function updateOwner(id: string, payload: DatabaseTransferDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database owner for database with id', id); return new Promise((resolve, reject) => { diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts index 6875a7cb7b2c168ecfb7357cc314219792930bf8..585356994be12526b4e7c83519a3f36db00b388a 100644 --- a/dbrepo-ui/composables/identifier-service.ts +++ b/dbrepo-ui/composables/identifier-service.ts @@ -2,7 +2,7 @@ import type {AxiosError, AxiosRequestConfig} from 'axios' import {axiosErrorToApiError} from '@/utils' export const useIdentifierService = (): any => { - async function findOne(id: number, accept: string): Promise<IdentifierDto> { + async function findOne(id: string, accept: string): Promise<IdentifierDto> { const axios = useAxiosInstance() console.debug('find identifier with id', id) const config: AxiosRequestConfig = { @@ -55,7 +55,7 @@ export const useIdentifierService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete identifier', id) return new Promise<void>((resolve, reject) => { @@ -71,7 +71,7 @@ export const useIdentifierService = (): any => { }) } - async function publish(id: number): Promise<IdentifierDto> { + async function publish(id: string): Promise<IdentifierDto> { const axios = useAxiosInstance() console.debug('publish identifier', id) return new Promise<IdentifierDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/image-service.ts b/dbrepo-ui/composables/image-service.ts index 9af0304a1620bfda6aa801da61a7de9cb3cb647d..bcddbc5d7d04009850543d2b21dc843afe406cd8 100644 --- a/dbrepo-ui/composables/image-service.ts +++ b/dbrepo-ui/composables/image-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useImageService = (): any => { - async function findById(id: number): Promise<ImageDto> { + async function findById(id: string): Promise<ImageDto> { const axios = useAxiosInstance(); console.debug('find image by id', id); return new Promise<ImageDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/message-service.ts b/dbrepo-ui/composables/message-service.ts index a170b3ba034e743c43ffea58e4731532ffcebb30..648cb6d388c5a1bfd2192dbedfe7fab14f55cd47 100644 --- a/dbrepo-ui/composables/message-service.ts +++ b/dbrepo-ui/composables/message-service.ts @@ -17,7 +17,7 @@ export const useMessageService = (): any => { }) } - async function findOne(id: number): Promise<BannerMessageDto> { + async function findOne(id: string): Promise<BannerMessageDto> { const axios = useAxiosInstance() console.debug('find message with id', id) return new Promise<BannerMessageDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useMessageService = (): any => { }) } - async function update(id: number, data: BannerMessageUpdateDto): Promise<BannerMessageDto> { + async function update(id: string, data: BannerMessageUpdateDto): Promise<BannerMessageDto> { const axios = useAxiosInstance() console.debug('update message with id', id) return new Promise<BannerMessageDto>((resolve, reject) => { @@ -65,7 +65,7 @@ export const useMessageService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete message with id', id) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/ontology-service.ts b/dbrepo-ui/composables/ontology-service.ts index da207d6c56d29722b33b67ee802fca55aa1ba6c0..67c6beaf256c7196e6bf6469f849d550c02c9fb4 100644 --- a/dbrepo-ui/composables/ontology-service.ts +++ b/dbrepo-ui/composables/ontology-service.ts @@ -17,7 +17,7 @@ export const useOntologyService = (): any => { }) } - async function findOne(id: number): Promise<OntologyDto> { + async function findOne(id: string): Promise<OntologyDto> { const axios = useAxiosInstance() console.debug('find ontology for id', id) return new Promise<OntologyDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useOntologyService = (): any => { }) } - async function update(id: number, data: OntologyModifyDto): Promise<OntologyDto> { + async function update(id: string, data: OntologyModifyDto): Promise<OntologyDto> { const axios = useAxiosInstance() console.debug('update ontology with id', id) return new Promise<OntologyDto>((resolve, reject) => { @@ -65,7 +65,7 @@ export const useOntologyService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete ontology with id', id) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/query-service.ts b/dbrepo-ui/composables/query-service.ts index e314993ecd233c486198f7995dff4da5389eb06f..c0d5c0db7c6bab8c949ec581a023a138f7c065ac 100644 --- a/dbrepo-ui/composables/query-service.ts +++ b/dbrepo-ui/composables/query-service.ts @@ -3,7 +3,7 @@ import type {AxiosRequestConfig} from 'axios' import {axiosErrorToApiError} from '@/utils' export const useQueryService = (): any => { - async function findAll(databaseId: number, persisted: boolean): Promise<QueryDto[]> { + async function findAll(databaseId: string, persisted: boolean): Promise<QueryDto[]> { const axios = useAxiosInstance() console.debug('find queries') return new Promise<QueryDto[]>((resolve, reject) => { @@ -23,7 +23,7 @@ export const useQueryService = (): any => { }) } - async function findOne(databaseId: number, queryId: number): Promise<QueryDto> { + async function findOne(databaseId: string, queryId: string): Promise<QueryDto> { const axios = useAxiosInstance() console.debug('find query with id', queryId, 'in database with id', databaseId) return new Promise<QueryDto>((resolve, reject) => { @@ -39,7 +39,7 @@ export const useQueryService = (): any => { }) } - async function update(databaseId: number, queryId: number, data: QueryPersistDto): Promise<QueryDto> { + async function update(databaseId: string, queryId: string, data: QueryPersistDto): Promise<QueryDto> { const axios = useAxiosInstance() console.debug('update query with id', queryId, 'in database with id', databaseId) return new Promise<QueryDto>((resolve, reject) => { @@ -55,7 +55,7 @@ export const useQueryService = (): any => { }) } - async function exportCsv(databaseId: number, queryId: number): Promise<any> { + async function exportCsv(databaseId: string, queryId: string): Promise<any> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { responseType: 'blob', @@ -77,7 +77,7 @@ export const useQueryService = (): any => { }) } - async function execute(databaseId: number, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> { + async function execute(databaseId: string, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('execute query in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -85,7 +85,7 @@ export const useQueryService = (): any => { .then((response) => { console.info('Executed query with id', response.data.id, ' in database with id', databaseId) const result: QueryResultDto = { - id: 1, + id: response.headers['x-id'], headers: [], result: response.data } @@ -98,7 +98,7 @@ export const useQueryService = (): any => { }) } - async function reExecuteData(databaseId: number, queryId: number, page: number, size: number): Promise<QueryResultDto> { + async function reExecuteData(databaseId: string, queryId: string, page: number, size: number): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('re-execute query in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -106,7 +106,7 @@ export const useQueryService = (): any => { .then((response) => { console.info('Re-executed query in database with id', databaseId) const result: QueryResultDto = { - id: Number(response.headers['x-id']), + id: response.headers['x-id'], headers: response.headers['x-headers'] ? response.headers['x-headers'].split(',') : [], result: response.data } @@ -119,7 +119,7 @@ export const useQueryService = (): any => { }) } - async function reExecuteCount(databaseId: number, queryId: number): Promise<number> { + async function reExecuteCount(databaseId: string, queryId: string): Promise<number> { const axios = useAxiosInstance() console.debug('re-execute query in database with id', databaseId) return new Promise<number>((resolve, reject) => { diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index 5f290745245b46a8ce395a489f62aa9171800d5a..45ee0a7b934cb92c2d275b3cb1a23738d4fc0809 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -3,7 +3,7 @@ import {axiosErrorToApiError} from '@/utils' export const useTableService = (): any => { - function findAll(databaseId: number): Promise<TableBriefDto> { + function findAll(databaseId: string): Promise<TableBriefDto> { const axios = useAxiosInstance() console.debug('find tables') return new Promise<TableBriefDto>((resolve, reject) => { @@ -19,7 +19,7 @@ export const useTableService = (): any => { }) } - async function findOne(databaseId: number, tableId: number): Promise<TableDto> { + async function findOne(databaseId: string, tableId: string): Promise<TableDto> { const axios = useAxiosInstance() console.debug('find table with id', tableId, 'in database with id', databaseId); return new Promise<TableDto>((resolve, reject) => { @@ -35,7 +35,7 @@ export const useTableService = (): any => { }) } - async function updateSemantics(databaseId: number, tableId: number, columnId: number, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { + async function updateSemantics(databaseId: string, tableId: string, columnId: string, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { const axios = useAxiosInstance() console.debug('update column with id', columnId, 'table with id', tableId, 'in database with id', databaseId); return new Promise<ColumnDto>((resolve, reject) => { @@ -51,7 +51,7 @@ export const useTableService = (): any => { }) } - async function update(databaseId: number, tableId: number, data: TableUpdateDto): Promise<TableDto> { + async function update(databaseId: string, tableId: string, data: TableUpdateDto): Promise<TableDto> { const axios = useAxiosInstance() console.debug('update table with id', tableId, 'in database with id', databaseId); return new Promise<TableDto>((resolve, reject) => { @@ -67,7 +67,7 @@ export const useTableService = (): any => { }) } - async function importCsv(databaseId: number, tableId: number, data: ImportCsv): Promise<ImportDto> { + async function importCsv(databaseId: string, tableId: string, data: ImportCsv): Promise<ImportDto> { const axios = useAxiosInstance() console.debug('import csv to table with id', tableId, 'in database with id', databaseId); return new Promise<ImportDto>((resolve, reject) => { @@ -83,7 +83,7 @@ export const useTableService = (): any => { }) } - async function getData(databaseId: number, tableId: number, page: number, size: number, timestamp: Date): Promise<QueryResultDto> { + async function getData(databaseId: string, tableId: string, page: number, size: number, timestamp: Date): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('get data for table with id', tableId, 'in database with id', databaseId); return new Promise<QueryResultDto>((resolve, reject) => { @@ -104,7 +104,7 @@ export const useTableService = (): any => { }) } - async function getCount(databaseId: number, tableId: number, timestamp: Date): Promise<number> { + async function getCount(databaseId: string, tableId: string, timestamp: Date): Promise<number> { const axios = useAxiosInstance() console.debug('get data count for table with id', tableId, 'in database with id', databaseId); return new Promise<number>((resolve, reject) => { @@ -121,7 +121,7 @@ export const useTableService = (): any => { }) } - async function exportData(databaseId: number, tableId: number, timestamp: Date): Promise<QueryResultDto> { + async function exportData(databaseId: string, tableId: string, timestamp: Date): Promise<QueryResultDto> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { params: (timestamp && {timestamp}), @@ -144,7 +144,7 @@ export const useTableService = (): any => { }) } - async function create(databaseId: number, data: TableCreateDto): Promise<TableDto> { + async function create(databaseId: string, data: TableCreateDto): Promise<TableDto> { const axios = useAxiosInstance() console.debug('create table in database with id', databaseId, data) return new Promise<TableDto>((resolve, reject) => { @@ -160,7 +160,7 @@ export const useTableService = (): any => { }); } - async function remove(databaseId: number, tableId: number): Promise<void> { + async function remove(databaseId: string, tableId: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -176,7 +176,7 @@ export const useTableService = (): any => { }); } - async function removeTuple(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> { + async function removeTuple(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> { const axios = useAxiosInstance() console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -192,7 +192,7 @@ export const useTableService = (): any => { }); } - async function history(databaseId: number, tableId: number): Promise<TableHistoryDto[]> { + async function history(databaseId: string, tableId: string): Promise<TableHistoryDto[]> { const axios = useAxiosInstance() console.debug('Load history of table with id', tableId, 'in database with id', databaseId) return new Promise<TableHistoryDto[]>((resolve, reject) => { @@ -208,7 +208,7 @@ export const useTableService = (): any => { }); } - async function suggest(databaseId: number, tableId: number, columnId: number): Promise<TableColumnEntityDto[]> { + async function suggest(databaseId: string, tableId: string, columnId: string): Promise<TableColumnEntityDto[]> { const axios = useAxiosInstance() console.debug('suggest semantic entities for table column with id', columnId, 'of table with id', tableId, 'of database with id', databaseId) return new Promise<TableColumnEntityDto[]>((resolve, reject) => { diff --git a/dbrepo-ui/composables/tuple-service.ts b/dbrepo-ui/composables/tuple-service.ts index e54cbe6a0dc71407dc5339de79eace1eee762560..aa8407a2581a9b263cdd052fd30a5eb44f131446 100644 --- a/dbrepo-ui/composables/tuple-service.ts +++ b/dbrepo-ui/composables/tuple-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useTupleService = (): any => { - async function create(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> { + async function create(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> { const axios = useAxiosInstance() console.debug('create tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -17,7 +17,7 @@ export const useTupleService = (): any => { }) } - async function update(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> { + async function update(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> { const axios = useAxiosInstance() console.debug('update tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useTupleService = (): any => { }) } - async function remove(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> { + async function remove(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> { const axios = useAxiosInstance() console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts index 417f5a645e978cc8f93e7fc524df22756c5b093e..9029a553ac782248d33707380f2ed72efcfc8032 100644 --- a/dbrepo-ui/composables/view-service.ts +++ b/dbrepo-ui/composables/view-service.ts @@ -2,7 +2,7 @@ import {axiosErrorToApiError} from '@/utils' import type {AxiosRequestConfig} from "axios"; export const useViewService = (): any => { - async function remove(databaseId: number, viewId: number): Promise<void> { + async function remove(databaseId: string, viewId: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete view with id', viewId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -18,7 +18,7 @@ export const useViewService = (): any => { }) } - async function findOne(databaseId: number, viewId: number): Promise<ViewDto> { + async function findOne(databaseId: string, viewId: string): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('get view with id', viewId, 'in database with id', databaseId) return new Promise<ViewDto>((resolve, reject) => { @@ -34,7 +34,7 @@ export const useViewService = (): any => { }) } - async function create(databaseId: number, payload: ViewCreateDto): Promise<ViewDto> { + async function create(databaseId: string, payload: ViewCreateDto): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('create view in database with id', databaseId) return new Promise<ViewDto>((resolve, reject) => { @@ -50,7 +50,7 @@ export const useViewService = (): any => { }) } - async function update(databaseId: number, viewId: number, payload: ViewUpdateDto): Promise<ViewDto> { + async function update(databaseId: string, viewId: string, payload: ViewUpdateDto): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('update view with id', viewId) return new Promise<ViewDto>((resolve, reject) => { @@ -66,7 +66,7 @@ export const useViewService = (): any => { }) } - async function reExecuteData(databaseId: number, viewId: number, page: number | null, size: number | null): Promise<QueryResultDto> { + async function reExecuteData(databaseId: string, viewId: string, page: number | null, size: number | null): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -87,7 +87,7 @@ export const useViewService = (): any => { }) } - async function reExecuteCount(databaseId: number, viewId: number): Promise<number> { + async function reExecuteCount(databaseId: string, viewId: string): Promise<number> { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) return new Promise<number>((resolve, reject) => { @@ -104,7 +104,7 @@ export const useViewService = (): any => { }) } - async function exportData(databaseId: number, viewId: number): Promise<QueryResultDto> { + async function exportData(databaseId: string, viewId: string): Promise<QueryResultDto> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { responseType: 'blob', diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index 605a7c0db9984525632570c70e76dd542845f225..2f20f174299cc789abe52c94f39d121dd8faa30d 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -1,5 +1,5 @@ interface DatabaseDto { - id: number; + id: string; name: string; creator: UserDto; owner: UserDto; @@ -22,7 +22,7 @@ interface DatabaseDto { interface DatabaseCreateDto { name: string; - container_id: number; + container_id: string; is_public: boolean; } @@ -69,7 +69,7 @@ interface ContainerBriefDto { } interface ImageDto { - id: number; + id: string; registry: string; name: string; version: string; @@ -82,15 +82,15 @@ interface ImageDto { } interface OperatorDto { - id: number; - image_id: number; + id: string; + image_id: string; display_name: string; documentation: string; value: string; } interface TableBriefDto { - id: number; + id: string; name: string; description: string; internal_name: string; @@ -107,18 +107,18 @@ interface TableUpdateDto { } interface ColumnBriefDto { - id: number; + id: string; name: string; alias: string; - database_id: number; - table_id: number; + database_id: string; + table_id: string; internal_name: string; column_type: string; } interface TableDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifiers: IdentifierDto[]; creator: UserDto; @@ -170,18 +170,18 @@ interface DataTypesDto { } interface UniqueDto { - uid: number; + uid: string; table: TableBriefDto; columns: ColumnDto[]; } interface IdentifierCreateDto { - database_id: number; + database_id: string; doi: string | null; } interface IdentifierSaveDto { - id: number; + id: string; type: string; doi: string | null; titles: IdentifierSaveTitleDto[] | []; @@ -191,10 +191,10 @@ interface IdentifierSaveDto { publisher: string | null; language: string | null; creators: CreatorSaveDto[] | []; - database_id: number | null; - query_id: number | null; - view_id: number | null; - table_id: number | null; + database_id: string | null; + query_id: string | null; + view_id: string | null; + table_id: string | null; publication_day: number | null; publication_month: number | null; publication_year: number | null; @@ -223,11 +223,11 @@ interface IdentifierFunderSaveDto { } interface IdentifierDto { - id: number; - database_id: number | null; - query_id: number | null; - table_id: number | null; - view_id: number | null; + id: string; + database_id: string; + query_id: string | null; + table_id: string | null; + view_id: string | null; type: IdentifierTypeDto; titles: IdentifierTitleDto[] | []; descriptions: IdentifierDescriptionDto[] | []; @@ -263,11 +263,11 @@ enum IdentifierStatusTypeDto { } interface IdentifierBriefDto { - id: number; - database_id: number | null; - query_id: number | null; - table_id: number | null; - view_id: number | null; + id: string; + database_id: string | null; + query_id: string | null; + table_id: string | null; + view_id: string | null; type: IdentifierTypeDto; creators: CreatorBriefDto[] | []; titles: IdentifierTitleDto[] | []; @@ -280,21 +280,21 @@ interface IdentifierBriefDto { } interface IdentifierTitleDto { - id: number; + id: string; title: string; language: string; type: string; } interface IdentifierDescriptionDto { - id: number; + id: string; description: string; language: string; type: string; } interface IdentifierFunderDto { - id: number; + id: string; funder_name: string; funder_identifier: string; funder_identifier_type: string; @@ -309,7 +309,7 @@ enum NameTypeDto { } interface CreatorDto { - id: number; + id: string; firstname: string; lastname: string; affiliation: string; @@ -324,7 +324,7 @@ interface CreatorDto { } interface CreatorBriefDto { - id: number; + id: string; affiliation: string; creator_name: string; name_type: NameTypeDto | null; @@ -335,7 +335,7 @@ interface CreatorBriefDto { } interface RelatedIdentifierDto { - id: number; + id: string; value: string; type: string; relation: string; @@ -362,7 +362,7 @@ interface RelatedIdentifierSaveDto { } interface ColumnDto { - id: number; + id: string; name: string; alias: string; size: number; @@ -379,8 +379,8 @@ interface ColumnDto { unit: UnitDto; enums: string[]; sets: string[]; - database_id: number; - table_id: number; + database_id: string; + table_id: string; internal_name: string; is_primary_key: boolean; index_length: number; @@ -391,7 +391,7 @@ interface ColumnDto { } interface ConceptDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -400,7 +400,7 @@ interface ConceptDto { } interface UnitDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -446,14 +446,14 @@ interface ViewUpdateDto { } interface QueryDto { - id: number; + id: string; creator: UserDto; execution: Date; query: string; type: string | null; identifiers: IdentifierDto[]; created: Date; - database_id: number; + database_id: string; query_normalized: string | null; query_hash: string; is_persisted: boolean; @@ -515,8 +515,8 @@ interface KeycloakErrorDto { } interface ViewBriefDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifier: any[]; query: string; @@ -530,8 +530,8 @@ interface ViewBriefDto { } interface ViewDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifiers: IdentifierDto[]; query: string; @@ -545,14 +545,14 @@ interface ViewDto { } interface ImageBriefDto { - id: number; + id: string; name: string; version: string; jdbc_method: string; } interface ImageDto { - id: number; + id: string; registry: string; name: string; version: string; @@ -600,7 +600,7 @@ interface ImportCsv { } interface QueryResultDto { - id: number | null; + id: string | null; result: any; headers: string[]; } @@ -660,7 +660,7 @@ interface ForeignKeyCreateDto { } interface OntologyDto { - id: number; + id: string; uri: string; prefix: string; sparql: boolean; @@ -686,7 +686,7 @@ interface OntologyCreateDto { } interface UnitDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -695,7 +695,7 @@ interface UnitDto { } interface ConceptDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -704,9 +704,9 @@ interface ConceptDto { } interface TableColumnEntityDto { - database_id: number; - table_id: number; - column_id: number; + database_id: string; + table_id: string; + column_id: string; uri: string; label: string; description: string; @@ -739,7 +739,7 @@ interface BannerMessageUpdateDto { } interface BannerMessageDto { - id: number; + id: string; type: string; message: string; link: string; diff --git a/dbrepo-ui/dto/jwt.ts b/dbrepo-ui/dto/jwt.ts deleted file mode 100644 index a47085114e3c80c229e80b43fb27adc94fd9d3d3..0000000000000000000000000000000000000000 --- a/dbrepo-ui/dto/jwt.ts +++ /dev/null @@ -1,20 +0,0 @@ -interface Token { - exp: number; - iat: number; - jti: string; - iss: string; - aud: string; - sub: string; - typ: string; - azp: string; - session_state: string; - realm_access: RealmAccess; - scope: string; - sid: string; - uid: string; - preferred_username: string; -} - -interface RealmAccess { - roles: string[]; -} diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 85be5cd6b0bee36a78e451a33abace288bef7219..7267242288c5eadaf184fdb1afe4e485a03f78dc 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -313,14 +313,14 @@ export default { return } if (this.identifier) { - if (newObj.query_id && this.identifier.query_id !== Number(newObj.query_id)) { + if (newObj.query_id && this.identifier.query_id !== newObj.query_id) { this.cacheStore.setIdentifier(null) - } else if (newObj.table_id && this.identifier.table_id !== Number(newObj.table_id)) { + } else if (newObj.table_id && this.identifier.table_id !== newObj.table_id) { this.cacheStore.setIdentifier(null) - } else if (newObj.view_id && this.identifier.view_id !== Number(newObj.view_id)) { + } else if (newObj.view_id && this.identifier.view_id !== newObj.view_id) { this.cacheStore.setIdentifier(null) } - if (this.$route.query.pid && this.identifier.id !== Number(this.$route.query.pid)) { + if (this.$route.query.pid && this.identifier.id !== this.$route.query.pid) { this.cacheStore.setIdentifier(null) } } diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index d17da2341db70b270a9cf780773ea7900afa4c03..a42a56411b825f5eb011b311ce995e9f291c7725 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -541,7 +541,7 @@ } }, "semantics": { - "title": "Assign semantic instance for table column", + "title": "Assign semantic {type} for table column", "subtitle": "Semantic instances help machines to get the proper context of your dataset", "recommended": "Recommended semantic instances", "bullet": "●", @@ -1305,8 +1305,9 @@ "revoked": "Revoked {access} access successfully" }, "data": { - "add": "Successfully added data entry", - "update": "Successfully updated data entry" + "add": "Successfully added data tuple", + "update": "Successfully updated data tuple", + "deleted": "Successfully deleted {total} data tuple(s)" }, "table": { "created": "Created table {table} successfully", diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 025cc9c4c438523c876c346f6ccb219933a5362c..9f2d42655304118c5b585d8618f157fbc86d9627 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -177,7 +177,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -253,7 +253,7 @@ export default { if (!this.database || !this.database.identifiers) { return [] } - return this.database.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.database.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, pid () { return this.$route.query.pid diff --git a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue index 505a7651232b071a03dd2b7ea481ff306e8dc3b4..1adbe4bf9bdb5cb31a633cd4b05bd8b28006e40b 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue @@ -58,7 +58,7 @@ export default { if (!this.database) { return false } - const filter = this.database.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.database.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 8905ede1d2f88c8b2411f65655c4443827c23315..3d82b13bdaa7a988039724342900f57d5f0d2251 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -20,7 +20,8 @@ <v-row v-if="previewImage" dense> - <v-col md="8"> + <v-col + lg="8"> <v-alert v-if="file" border="start" @@ -45,8 +46,10 @@ @click="removeDatabaseImage" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-file-input v-model="file" accept="image/*" @@ -134,7 +137,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modifyVisibility.is_public" :items="dataOptions" @@ -148,7 +151,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'database' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modifyVisibility.is_schema_public" :items="schemaOptions" @@ -184,7 +187,8 @@ rounded="0"> <v-card-text> <v-row> - <v-col md="8"> + <v-col + lg="8"> <v-select v-model="modifyOwner.id" :items="users" diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue index db5d45b4610de195f2a16d213eea60674c8dcf86..d3b5f624d7425992e4858caa2e000dcc82c1ec59 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue @@ -94,7 +94,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -162,11 +162,14 @@ export default { subset () { return this.cacheStore.getSubset }, + access () { + return this.cacheStore.getAccess + }, identifiers () { if (!this.database || !this.database.subsets) { return [] } - return this.database.subsets.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.database.subsets.filter(i => i.query_id === this.$route.params.subset_id) }, canViewInfo () { if (!this.database) { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue index 78878a0015f61ea3dadf38258b747b20fa8e94d9..e97ac3eb885973c0f69addc0a98aaf03c604855e 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue @@ -69,7 +69,7 @@ export default { if (!this.subset) { return false } - const filter = this.subset.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.subset.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue index 13ee3951c80fae3bb0a3f8391133b53aec57bf79..75e95370077bada111db1319a08630a4a55f29bd 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue @@ -45,7 +45,7 @@ class="ml-2" :disabled="loadingData" :loading="loadingData" - @click="reload" /> + @click="reload()" /> <v-btn :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-update' : null" variant="flat" @@ -68,7 +68,7 @@ class="mt-0 mb-0" type="table" :select="canSelectTuples" - :timestamp="versionISO || lastReload.toISOString()" + :timestamp="lastReload.toISOString()" @selection="updateSelect" /> </v-card> <v-dialog @@ -310,7 +310,7 @@ export default { } const tupleService = useTupleService() wait.push(tupleService.remove(this.$route.params.database_id, this.$route.params.table_id, { keys: constraints }) - .catch(({code, message}) => { + .catch(({ code }) => { const toast = useToastInstance() if (typeof code !== 'string') { return @@ -321,7 +321,7 @@ export default { Promise.all(wait) .then(() => { const toast = useToastInstance() - toast.success(`Deleted ${this.selection.length} row(s)`) + toast.success(this.$t('success.data.deleted', { total: this.selection.length })) this.$emit('modified', { success: true, action: 'delete' }) this.selection = [] this.$refs.queryResults.resetSelection() @@ -400,8 +400,8 @@ export default { if (!this.canViewTableData) { return } - this.$refs.queryResults.reExecute(Number(this.$route.params.table_id)) - this.$refs.queryResults.reExecuteCount(Number(this.$route.params.table_id)) + this.$refs.queryResults.reExecute(this.$route.params.table_id, this.lastReload) + this.$refs.queryResults.reExecuteCount(this.$route.params.table_id, this.lastReload) }, isFileField (column) { return ['blob', 'longblob', 'mediumblob', 'tinyblob'].includes(column.type) 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 687358f0290177012dc89f36e23666d6dd6d48d0..18662f55ddf87daafb6d055a17d67f93fb2be737 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 @@ -131,7 +131,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -244,7 +244,7 @@ export default { if (!this.table || !this.table.identifiers) { return [] } - return this.table.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.table.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, brokerExtraInfo () { return this.$config.public.broker.extra diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue index e2d16e8db44efb0f558fa2c42e1225fc9e6b8355..2d7b94744c57a933ca6b139803091f5989eb29fd 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue @@ -67,7 +67,7 @@ export default { if (!this.table) { return false } - const filter = this.table.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.table.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { 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 0f0a8feab62a7fb065c3ecb6af6b63b83a9884be..4667a7f30c7f1d3add1bfb608ef2c472b9daa681 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 @@ -18,7 +18,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-textarea v-model="modify.description" rows="2" @@ -34,7 +34,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -48,7 +48,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'table' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" @@ -90,7 +90,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-btn size="small" variant="flat" diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue index 24aed7f2ffc6b77edfae4a90e1c4dc7607f97955..a2498d799b2ea0ee2ceb8649f4eee7101ad759a8 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -21,7 +21,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-alert border="start" color="info"> @@ -54,7 +54,8 @@ <v-container> <v-row dense> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="tableCreate.name" :rules="[ @@ -69,7 +70,8 @@ :hint="$t('pages.table.subpages.import.name.hint')" :label="$t('pages.table.subpages.import.name.label')"/> </v-col> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="generatedTableName" :rules="[ @@ -88,7 +90,8 @@ </v-row> <v-row dense> - <v-col md="8"> + <v-col + lg="8"> <v-textarea v-model="tableCreate.description" rows="2" @@ -104,7 +107,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_public" name="public" @@ -120,7 +123,7 @@ </v-select> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_schema_public" name="schema-public" @@ -175,7 +178,7 @@ <v-container> <v-row dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue index 804ae03c15072719f7612fd46eeca80d45b1a2b8..1c48d143ca83eafeaa6ed21eac3ee9b3190e94aa 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -32,8 +32,10 @@ :disabled="table" @submit.prevent="submit"> <v-container> - <v-row dense> - <v-col md="4"> + <v-row + dense> + <v-col + lg="4"> <v-text-field v-model="tableCreate.name" :rules="[ @@ -48,7 +50,8 @@ :hint="$t('pages.table.subpages.import.name.hint')" :label="$t('pages.table.subpages.import.name.label')" /> </v-col> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="generatedTableName" :rules="[ @@ -65,8 +68,10 @@ :label="$t('pages.table.subpages.import.generated.label')" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-textarea v-model="tableCreate.description" rows="2" @@ -82,7 +87,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_public" name="public" @@ -98,7 +103,7 @@ </v-select> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_schema_public" name="schema-public" @@ -146,7 +151,8 @@ <v-container> <v-row dense> - <v-col md="8"> + <v-col + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue index f732661f369710b4637f01952f5fab930e9e4812..43e8f491d9cfdb4896b4c824aa39291c0a9a5944 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue @@ -104,8 +104,8 @@ export default { }, methods: { reload () { - this.$refs.queryResults.reExecute(Number(this.$route.params.view_id)) - this.$refs.queryResults.reExecuteCount(Number(this.$route.params.view_id)) + this.$refs.queryResults.reExecute(this.$route.params.view_id) + this.$refs.queryResults.reExecuteCount(this.$route.params.view_id) }, download () { this.downloadLoading = true diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue index 3c0c40e33ce7546e351ea3252a051a0ebb56049e..395be401c08730d0b9880fbbe21c61ccf6bf2db7 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue @@ -72,7 +72,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -143,7 +143,7 @@ export default { if (!this.view || !this.view.identifiers) { return [] } - return this.view.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.view.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, views () { if (!this.database) { diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue index 540bbbdb5e454c725c6d5b9dc6a1da6498e5f8bc..5a1faeb431bf92be87a3b8bab8dc50c952f737e8 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue @@ -69,7 +69,7 @@ export default { if (!this.view) { return false } - const filter = this.view.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.view.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue index d027a4347b5300025f83d23adba52d78278a443f..41285c4d3be02f005736e61c44c534dce0a041e0 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue @@ -17,7 +17,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -31,7 +31,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" @@ -72,7 +72,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-btn size="small" variant="flat" diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index 9c8dbf873d5b7ec4c13a4cde7a42a61790fdc4a3..0f52ca7fcc97e5336e713695feef1dc636b9fb3d 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -14,7 +14,8 @@ variant="flat"> <v-card-text> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.id" disabled @@ -25,7 +26,8 @@ <v-row v-if="cacheUser" dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="cacheUser.preferred_username" disabled @@ -56,7 +58,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.orcid" :disabled="!canModifyInformation" @@ -71,7 +74,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.firstname" :disabled="!canModifyInformation || identityProvider" @@ -83,7 +87,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.lastname" :disabled="!canModifyInformation || identityProvider" @@ -95,7 +100,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.affiliation" :disabled="!canModifyInformation" diff --git a/dbrepo-upload-service/pom.xml b/dbrepo-upload-service/pom.xml index 44b77d7bf59f95af8cabcee93d055e25216db130..e7784d34593c68e3ad1f4c26bc69f9057659aee1 100644 --- a/dbrepo-upload-service/pom.xml +++ b/dbrepo-upload-service/pom.xml @@ -11,9 +11,9 @@ <groupId>at.tuwien</groupId> <artifactId>dbrepo-upload-service</artifactId> <name>dbrepo-upload-service</name> - <version>1.6.5</version> + <version>1.7.0</version> - <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url> <developers> <developer> <name>Martin Weise</name> diff --git a/docker-compose.yml b/docker-compose.yml index 94b5fc30a61c1081e194fd4eb98c45d7af9b261c..5ab6df06af90c6e46c519be04428c39dd7c69f10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,7 @@ services: ports: - "3306:3306" environment: + BITNAMI_DEBUG: true MARIADB_DATABASE: "${METADATA_DB:-dbrepo}" MARIADB_ROOT_PASSWORD: "${METADATA_DB_PASSWORD:-dbrepo}" MARIADB_GALERA_MARIABACKUP_PASSWORD: "${METADATA_DB_BACKUP_PASSWORD:-dbrepobackup}" @@ -484,6 +485,7 @@ services: volumes: - dashboard-service-data:/opt/bitnami/grafana/data environment: + BITNAMI_DEBUG: true GF_SERVER_DOMAIN: "dashboard-service" GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true" LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}" diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index 63f5f997ffc71fbe57e0d42d10d8694a315761c7..6af1965b3f2f93250717913ce464ca975decc341 100644 --- a/helm/dbrepo/Chart.yaml +++ b/helm/dbrepo/Chart.yaml @@ -7,8 +7,8 @@ description: Helm Chart for installing DBRepo sources: - https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services type: application -version: "1.6.5" -appVersion: "1.6.5" +version: "1.7.0" +appVersion: "1.7.0" keywords: - dbrepo maintainers: diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 3c00deb523d8a700e1ee2f36e9746dd00ae007fc..c827d39943f2ce3b2cb262abee51842f4a572d74 100644 --- a/helm/dbrepo/README.md +++ b/helm/dbrepo/README.md @@ -11,7 +11,7 @@ sample [ for your deployment and update the variables, especially `hostname`. ```bash -helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.6.5" +helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.7.0" ``` ## Prerequisites @@ -34,7 +34,7 @@ variable when you increase the available Pod memory for performance. To install the chart with the release name `my-release`: ```bash -helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.6.5" +helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.7.0" ``` The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the diff --git a/helm/dbrepo/files/01-setup-schema.sql b/helm/dbrepo/files/01-setup-schema.sql index e2bde25ed6d64f69c4f8d6e897a49a672e3f9a71..b9055cf884bdb3d310310c52a17471504cdc6fac 100644 --- a/helm/dbrepo/files/01-setup-schema.sql +++ b/helm/dbrepo/files/01-setup-schema.sql @@ -2,390 +2,341 @@ BEGIN; CREATE TABLE IF NOT EXISTS `mdb_users` ( - id character varying(36) NOT NULL, - keycloak_id character varying(36) NOT NULL, - username character varying(255) NOT NULL, - firstname character varying(255), - lastname character varying(255), - orcid character varying(255), - affiliation character varying(255), - is_internal BOOLEAN NOT NULL DEFAULT FALSE, - mariadb_password character varying(255) NOT NULL, - theme character varying(255) NOT NULL default ('light'), - language character varying(3) NOT NULL default ('en'), - PRIMARY KEY (id), - UNIQUE (keycloak_id), - UNIQUE (username) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + keycloak_id VARCHAR(36) NOT NULL, + username VARCHAR(255) NOT NULL, + firstname VARCHAR(255), + lastname VARCHAR(255), + orcid VARCHAR(255), + affiliation VARCHAR(255), + is_internal BOOLEAN NOT NULL DEFAULT FALSE, + mariadb_password VARCHAR(255) NOT NULL, + theme VARCHAR(255) NOT NULL DEFAULT ('light'), + language VARCHAR(3) NOT NULL DEFAULT ('en'), + PRIMARY KEY (`id`), + UNIQUE (`keycloak_id`), + UNIQUE (`username`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_images` ( - id SERIAL, - registry character varying(255) NOT NULL DEFAULT 'docker.io', - name character varying(255) NOT NULL, - version character varying(255) NOT NULL, - default_port integer NOT NULL, - dialect character varying(255) NOT NULL, - driver_class character varying(255) NOT NULL, - jdbc_method character varying(255) NOT NULL, - is_default BOOLEAN NOT NULL DEFAULT FALSE, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - PRIMARY KEY (id), - UNIQUE (name, version), - UNIQUE (is_default) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + registry VARCHAR(255) NOT NULL DEFAULT 'docker.io', + name VARCHAR(255) NOT NULL, + version VARCHAR(255) NOT NULL, + DEFAULT_port INT NOT NULL, + dialect VARCHAR(255) NOT NULL, + driver_class VARCHAR(255) NOT NULL, + jdbc_method VARCHAR(255) NOT NULL, + is_DEFAULT BOOLEAN NOT NULL DEFAULT FALSE, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE (`name`, `version`), + UNIQUE (`is_DEFAULT`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_containers` ( - id SERIAL, - internal_name character varying(255) NOT NULL, - name character varying(255) NOT NULL, - host character varying(255) NOT NULL, - port integer NOT NULL default 3306, - ui_host character varying(255) NOT NULL default host, - ui_port integer NOT NULL default port, - ui_additional_flags text, - sidecar_host character varying(255), - sidecar_port integer, - image_id bigint NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - privileged_username character varying(255) NOT NULL, - privileged_password character varying(255) NOT NULL, - quota integer NOT NULL DEFAULT 50, - PRIMARY KEY (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_data` -( - ID SERIAL, - PROVENANCE text, - FileEncoding text, - FileType character varying(100), - Version text, - Seperator text, - PRIMARY KEY (ID) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + internal_name VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL, + host VARCHAR(255) NOT NULL, + port INT NOT NULL DEFAULT 3306, + ui_host VARCHAR(255) NOT NULL DEFAULT host, + ui_port INT NOT NULL DEFAULT port, + ui_additional_flags TEXT, + image_id VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + privileged_username VARCHAR(255) NOT NULL, + privileged_password VARCHAR(255) NOT NULL, + quota INT, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES mdb_images (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_licenses` ( - identifier character varying(255) NOT NULL, - uri text NOT NULL, - description text NOT NULL, - PRIMARY KEY (identifier), + identifier VARCHAR(255) NOT NULL, + uri TEXT NOT NULL, + description TEXT NOT NULL, + PRIMARY KEY (`identifier`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_databases` ( - id SERIAL, - cid BIGINT UNSIGNED NOT NULL, - name character varying(255) NOT NULL, - internal_name character varying(255) NOT NULL, - exchange_name character varying(255) NOT NULL, - description text, - engine character varying(20), - is_public boolean NOT NULL DEFAULT TRUE, - is_schema_public boolean NOT NULL DEFAULT TRUE, - image longblob, - owned_by character varying(36), - contact_person character varying(36), - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - PRIMARY KEY (id), - FOREIGN KEY (cid) REFERENCES mdb_containers (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id), - FOREIGN KEY (contact_person) REFERENCES mdb_users (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_databases_subjects` -( - dbid BIGINT NOT NULL, - subjects character varying(255) NOT NULL, - PRIMARY KEY (dbid, subjects) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cid VARCHAR(36) NOT NULL, + name VARCHAR(255) NOT NULL, + internal_name VARCHAR(255) NOT NULL, + exchange_name VARCHAR(255) NOT NULL, + description TEXT, + engine VARCHAR(20), + is_public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + image LONGBLOB, + owned_by VARCHAR(36) NOT NULL, + contact_person VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + PRIMARY KEY (`id`), + FOREIGN KEY (`cid`) REFERENCES mdb_containers (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`), + FOREIGN KEY (`contact_person`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_tables` ( - ID SERIAL, - tDBID BIGINT UNSIGNED NOT NULL, - tName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - queue_name VARCHAR(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tDBID VARCHAR(36) NOT NULL, + tName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + queue_name VARCHAR(255) NOT NULL, routing_key VARCHAR(255), tDescription VARCHAR(2048), num_rows BIGINT, data_length BIGINT, max_data_length BIGINT, avg_row_length BIGINT, - `separator` CHAR(1), - quote CHAR(1), - element_null VARCHAR(50), - skip_lines BIGINT, - element_true VARCHAR(50), - element_false VARCHAR(50), - Version TEXT, - created timestamp NOT NULL DEFAULT NOW(), - versioned boolean not null default true, - is_public boolean not null default true, - is_schema_public boolean not null default true, - owned_by character varying(36) NOT NULL, - last_modified timestamp, - PRIMARY KEY (ID), - UNIQUE (tDBID, internal_name), - FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + created TIMESTAMP NOT NULL DEFAULT NOW(), + versioned BOOLEAN NOT NULL DEFAULT TRUE, + is_public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + owned_by VARCHAR(36) NOT NULL DEFAULT UUID(), + last_modified TIMESTAMP, + PRIMARY KEY (`ID`), + UNIQUE (`tDBID`, `internal_name`), + FOREIGN KEY (`tDBID`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns` ( - ID SERIAL, - tID BIGINT UNSIGNED NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, cName VARCHAR(64), internal_name VARCHAR(64) NOT NULL, Datatype ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','SERIAL','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), length BIGINT UNSIGNED NULL, - ordinal_position INTEGER NOT NULL, + ordinal_position INT NOT NULL, index_length BIGINT UNSIGNED NULL, description VARCHAR(2048), size BIGINT UNSIGNED, d BIGINT UNSIGNED, - is_null_allowed BOOLEAN NOT NULL DEFAULT true, + is_null_allowed BOOLEAN NOT NULL DEFAULT TRUE, val_min NUMERIC NULL, val_max NUMERIC NULL, mean NUMERIC NULL, median NUMERIC NULL, std_dev Numeric NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE, - PRIMARY KEY (ID), - UNIQUE (tID, internal_name) + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`ID`), + UNIQUE (`tID`, `internal_name`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_enums` ( - id SERIAL, - column_id BIGINT UNSIGNED NOT NULL, - value CHARACTER VARYING(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, + value VARCHAR(255) NOT NULL, + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_sets` ( - id SERIAL, - column_id BIGINT UNSIGNED NOT NULL, - value CHARACTER VARYING(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_columns_nom` -( - cID BIGINT UNSIGNED, - tID BIGINT UNSIGNED, - maxlength INTEGER, - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_columns_cat` -( - cID BIGINT UNSIGNED, - tID BIGINT UNSIGNED, - num_cat INTEGER, - -- cat_array TEXT[], - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, + value VARCHAR(255) NOT NULL, + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key` ( - fkid SERIAL, - tid BIGINT UNSIGNED NOT NULL, - rtid BIGINT UNSIGNED NOT NULL, - name VARCHAR(255) NOT NULL, - on_update VARCHAR(50) NULL, - on_delete VARCHAR(50) NULL, - position INT NULL, - PRIMARY KEY (fkid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (rtid) REFERENCES mdb_tables (id) + fkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, + rtid VARCHAR(36) NOT NULL, + name VARCHAR(255) NOT NULL, + on_update VARCHAR(50) NULL, + on_delete VARCHAR(50) NULL, + position INT NULL, + PRIMARY KEY (`fkid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`rtid`) REFERENCES mdb_tables (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key` ( - pkid SERIAL, - tID BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (pkid), - FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + pkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`pkid`), + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference` ( - id SERIAL, - fkid BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - rcid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (id), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + fkid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + rcid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), UNIQUE (fkid, cid, rcid), - FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id), - FOREIGN KEY (rcid) REFERENCES mdb_columns (id) + FOREIGN KEY (`fkid`) REFERENCES mdb_constraints_foreign_key (`fkid`) ON UPDATE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`), + FOREIGN KEY (`rcid`) REFERENCES mdb_columns (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_unique` ( - uid SERIAL, - name VARCHAR(255) NOT NULL, - tid BIGINT UNSIGNED NOT NULL, - position INT NULL, - PRIMARY KEY (uid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + uid VARCHAR(36) NOT NULL DEFAULT UUID(), + name VARCHAR(255) NOT NULL, + tid VARCHAR(36) NOT NULL, + position INT NULL, + PRIMARY KEY (`uid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns` ( - id SERIAL, - uid BIGINT UNSIGNED NOT NULL, - cid BIGINT UNSIGNED NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid), - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`uid`) REFERENCES mdb_constraints_unique (`uid`), + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_checks` ( - id SERIAL, - tid BIGINT UNSIGNED NOT NULL, - checks VARCHAR(255) NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, + checks VARCHAR(255) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_concepts` ( - id SERIAL, - uri text not null, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_units` ( - id SERIAL, - uri text not null, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_concepts` ( - id BIGINT UNSIGNED NOT NULL, - cID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cid), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_units` ( - id BIGINT UNSIGNED NOT NULL, - cID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view` ( - id SERIAL, - vdbid BIGINT UNSIGNED NOT NULL, - vName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - Query TEXT NOT NULL, - query_hash VARCHAR(255) NOT NULL, - Public BOOLEAN NOT NULL DEFAULT TRUE, - is_schema_public boolean NOT NULL DEFAULT TRUE, - InitialView BOOLEAN NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - owned_by character varying(36) NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_banner_messages` -( - id SERIAL, - type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL default 'INFO', + id VARCHAR(36) NOT NULL DEFAULT UUID(), + vdbid VARCHAR(36) NOT NULL, + vName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + Query TEXT NOT NULL, + query_hash VARCHAR(255) NOT NULL, + Public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, + InitialView BOOLEAN NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), + last_modified TIMESTAMP, + owned_by VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`vdbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) +) WITH SYSTEM VERSIONING; + +CREATE TABLE IF NOT EXISTS `mdb_messages` +( + id VARCHAR(36) NOT NULL DEFAULT UUID(), + type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL DEFAULT 'INFO', message TEXT NOT NULL, link TEXT NULL, - link_text VARCHAR(255) NULL, - display_start timestamp NULL, - display_end timestamp NULL, - PRIMARY KEY (id) + link_TEXT VARCHAR(255) NULL, + display_start TIMESTAMP NULL, + display_end TIMESTAMP NULL, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_ontologies` ( - id SERIAL, - prefix VARCHAR(8) NOT NULL, - uri TEXT NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + prefix VARCHAR(8) NOT NULL, + uri TEXT NOT NULL, uri_pattern TEXT, - sparql_endpoint TEXT NULL, - rdf_path TEXT NULL, - last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - UNIQUE (prefix), + sparql_endpoint TEXT NULL, + rdf_path TEXT NULL, + last_modified TIMESTAMP, + created TIMESTAMP NOT NULL DEFAULT NOW(), + UNIQUE (`prefix`), UNIQUE (uri(200)), - PRIMARY KEY (id) + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view_columns` ( - id SERIAL, - view_id BIGINT UNSIGNED NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + view_id VARCHAR(36) NOT NULL, name VARCHAR(64), - internal_name VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, column_type ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), - ordinal_position INTEGER NOT NULL, + ordinal_position INT NOT NULL, size BIGINT UNSIGNED, d BIGINT UNSIGNED, - is_null_allowed BOOLEAN NOT NULL DEFAULT true, - PRIMARY KEY (id), - FOREIGN KEY (view_id) REFERENCES mdb_view (id) ON DELETE CASCADE, + is_null_allowed BOOLEAN NOT NULL DEFAULT TRUE, + PRIMARY KEY (`id`), + FOREIGN KEY (`view_id`) REFERENCES mdb_view (`id`) ON DELETE CASCADE, UNIQUE (view_id, internal_name) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifiers` ( - id SERIAL, - dbid BIGINT UNSIGNED NOT NULL, - qid BIGINT UNSIGNED, - vid BIGINT UNSIGNED, - tid BIGINT UNSIGNED, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + dbid VARCHAR(36) NOT NULL, + qid VARCHAR(36) NOT NULL, + vid VARCHAR(36) NOT NULL, + tid VARCHAR(36) NOT NULL, publisher VARCHAR(255) NOT NULL, language VARCHAR(2), - publication_year INTEGER NOT NULL, - publication_month INTEGER, - publication_day INTEGER, + publication_year INT NOT NULL, + publication_month INT, + publication_day INT, identifier_type ENUM ('DATABASE', 'SUBSET', 'VIEW', 'TABLE') NOT NULL, status ENUM ('DRAFT', 'PUBLISHED') NOT NULL DEFAULT ('PUBLISHED'), query TEXT, @@ -398,154 +349,147 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers` created TIMESTAMP NOT NULL DEFAULT NOW(), owned_by VARCHAR(36) NOT NULL, last_modified TIMESTAMP, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (dbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`dbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses` ( - pid BIGINT UNSIGNED NOT NULL, - license_id VARCHAR(255) NOT NULL, + pid VARCHAR(36) NOT NULL DEFAULT UUID(), + license_id VARCHAR(255) NOT NULL, PRIMARY KEY (pid, license_id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), - FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier) + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), + FOREIGN KEY (`license_id`) REFERENCES mdb_licenses (`identifier`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_titles` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - title text NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + title TEXT NOT NULL, title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_funders` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - funder_name VARCHAR(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + funder_name VARCHAR(255) NOT NULL, funder_identifier TEXT, funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'), - scheme_uri text, + scheme_uri TEXT, award_number VARCHAR(255), - award_title text, + award_title TEXT, language VARCHAR(255), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - description text NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + description TEXT NOT NULL, description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; -CREATE TABLE IF NOT EXISTS `mdb_related_identifiers` +CREATE TABLE IF NOT EXISTS `mdb_identifier_related` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - value varchar(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL DEFAULT UUID(), + value VARCHAR(255) NOT NULL, type ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID') NOT NULL, relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), UNIQUE (pid, value) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_creators` ( - id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - given_names text, - family_name text, - creator_name VARCHAR(255) NOT NULL, - name_type ENUM ('PERSONAL', 'ORGANIZATIONAL') default 'PERSONAL', - name_identifier text, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + given_names TEXT, + family_name TEXT, + creator_name VARCHAR(255) NOT NULL, + name_type ENUM ('PERSONAL', 'ORGANIZATIONAL') DEFAULT 'PERSONAL', + name_identifier TEXT, name_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI', 'ORCID'), - name_identifier_scheme_uri text, + name_identifier_scheme_uri TEXT, affiliation VARCHAR(255), - affiliation_identifier text, + affiliation_identifier TEXT, affiliation_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI'), - affiliation_identifier_scheme_uri text, - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) -) WITH SYSTEM VERSIONING; - -CREATE TABLE IF NOT EXISTS `mdb_update` -( - uUserID character varying(255) NOT NULL, - uDBID BIGINT UNSIGNED NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (uUserID, uDBID), - FOREIGN KEY (uDBID) REFERENCES mdb_databases (id) + affiliation_identifier_scheme_uri TEXT, + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_access` ( - aUserID character varying(255) NOT NULL, - aDBID BIGINT UNSIGNED REFERENCES mdb_databases (id), + aUserID VARCHAR(255) NOT NULL, + aDBID VARCHAR(36) NOT NULL, attime TIMESTAMP, download BOOLEAN, - created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (aUserID, aDBID) + created TIMESTAMP NOT NULL DEFAULT NOW(), + PRIMARY KEY (aUserID, aDBID), + FOREIGN KEY (`aDBID`) REFERENCES mdb_databases (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_have_access` ( - user_id character varying(36) NOT NULL, - database_id BIGINT UNSIGNED REFERENCES mdb_databases (id), + user_id VARCHAR(36) NOT NULL, + database_id VARCHAR(36) NOT NULL, access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (user_id, database_id), - FOREIGN KEY (user_id) REFERENCES mdb_users (id) + FOREIGN KEY (`database_id`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`user_id`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_types` ( - id SERIAL, - image_id BIGINT UNSIGNED NOT NULL, - display_name varchar(255) NOT NULL, - value varchar(255) NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, + display_name VARCHAR(255) NOT NULL, + value VARCHAR(255) NOT NULL, size_min INT UNSIGNED, size_max INT UNSIGNED, - size_default INT UNSIGNED, - size_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no size', + size_DEFAULT INT UNSIGNED, + size_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no size', size_step INT UNSIGNED, d_min INT UNSIGNED, d_max INT UNSIGNED, - d_default INT UNSIGNED, - d_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no d', + d_DEFAULT INT UNSIGNED, + d_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no d', d_step INT UNSIGNED, type_hint TEXT, data_hint TEXT, - documentation TEXT NOT NULL, - is_generated BOOLEAN NOT NULL, - is_quoted BOOLEAN NOT NULL, - is_buildable BOOLEAN NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), - UNIQUE (value) + documentation TEXT NOT NULL, + is_generated BOOLEAN NOT NULL, + is_quoted BOOLEAN NOT NULL, + is_buildable BOOLEAN NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), + UNIQUE (`value`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_operators` ( - id SERIAL, - image_id BIGINT UNSIGNED NOT NULL, - display_name varchar(255) NOT NULL, - value varchar(255) NOT NULL, - documentation TEXT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), - UNIQUE (value) + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, + display_name VARCHAR(255) NOT NULL, + value VARCHAR(255) NOT NULL, + documentation TEXT NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), + UNIQUE (image_id, value) ) WITH SYSTEM VERSIONING; COMMIT; @@ -558,110 +502,121 @@ VALUES ('CC0-1.0', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode' ('CC-BY-4.0', 'https://creativecommons.org/licenses/by/4.0/legalcode', 'The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.'); -INSERT INTO `mdb_images` (name, registry, version, default_port, dialect, driver_class, jdbc_method) -VALUES ('mariadb', 'docker.io', '11.1.3', 3306, 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', - 'mariadb'); +INSERT INTO `mdb_images` (id, name, registry, version, DEFAULT_port, dialect, driver_class, jdbc_method) +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'mariadb', 'docker.io', '11.1.3', 3306, + 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', 'mariadb'); -INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_default, size_required, - size_step, d_min, d_max, d_default, d_required, d_step, type_hint, data_hint, +INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_DEFAULT, size_required, + size_step, d_min, d_max, d_DEFAULT, d_required, d_step, type_hint, data_hint, documentation, is_quoted, is_buildable, is_generated) -VALUES (1, 'BIGINT(size)', 'bigint', 0, null, null, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bigint/', false, true, false), - (1, 'BINARY(size)', 'binary', 0, 255, 255, true, 1, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/binary/', false, true, false), - (1, 'BIT(size)', 'bit', 0, 64, null, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bit/', false, true, false), - (1, 'BLOB(size)', 'blob', 0, 65535, null, false, 1, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/blob/', false, false, false), - (1, 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/bool/', false, true, false), - (1, 'CHAR(size)', 'char', 0, 255, 255, false, 1, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/char/', false, true, false), - (1, 'DATE', 'date', null, null, null, null, null, null, null, null, null, null, - 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD', - 'https://mariadb.com/kb/en/date/', true, true, false), - (1, 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, null, null, - 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9', +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIGINT(size)', 'bigint', 0, null, null, FALSE, 1, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/bigint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BINARY(size)', 'binary', 0, 255, 255, TRUE, 1, null, null, null, null, + null, 'size in Bytes', null, 'https://mariadb.com/kb/en/binary/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIT(size)', 'bit', 0, 64, null, FALSE, 1, null, null, null, null, null, + null, null, 'https://mariadb.com/kb/en/bit/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BLOB(size)', 'blob', 0, 65535, null, FALSE, 1, null, null, null, null, + null, 'size in Bytes', null, 'https://mariadb.com/kb/en/blob/', FALSE, FALSE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, + null, null, null, 'https://mariadb.com/kb/en/bool/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'CHAR(size)', 'char', 0, 255, 255, FALSE, 1, null, null, null, null, + null, null, null, 'https://mariadb.com/kb/en/char/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATE', 'date', null, null, null, null, null, null, null, null, null, + null, 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD', + 'https://mariadb.com/kb/en/date/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, + null, null, 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9', 'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD', - 'https://mariadb.com/kb/en/datetime/', true, true, false), - (1, 'DECIMAL(size, d)', 'decimal', 0, 65, null, false, 1, 0, 38, null, false, null, null, null, - 'https://mariadb.com/kb/en/decimal/', false, true, false), - (1, 'DOUBLE(size, d)', 'double', null, null, null, false, null, null, null, null, false, null, null, null, - 'https://mariadb.com/kb/en/double/', false, true, false), - (1, 'ENUM(v1,v2,...)', 'enum', null, null, null, null, null, null, null, null, null, null, null, - 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/enum/', true, true, false), - (1, 'FLOAT(size)', 'float', null, null, null, false, null, null, null, null, null, null, null, null, - 'https://mariadb.com/kb/en/float/', false, true, false), - (1, 'INT(size)', 'int', null, null, null, false, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/int/', false, true, false), - (1, 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null, - 'https://mariadb.com/kb/en/longblob/', false, true, false), - (1, 'LONGTEXT', 'longtext', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null, - 'https://mariadb.com/kb/en/longtext/', true, true, false), - (1, 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, null, null, null, 'max. 15.999 MiB', - null, 'https://mariadb.com/kb/en/mediumblob/', false, true, false), - (1, 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/mediumint/', false, true, false), - (1, 'MEDIUMTEXT', 'mediumtext', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', - null, 'https://mariadb.com/kb/en/mediumtext/', true, true, false), - (1, 'SERIAL', 'serial', null, null, null, null, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/bigint/', true, true, true), - (1, 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, null, null, null, - 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', true, true, false), - (1, 'SMALLINT(size)', 'smallint', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', - null, 'https://mariadb.com/kb/en/smallint/', false, true, false), - (1, 'TEXT(size)', 'text', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', null, - 'https://mariadb.com/kb/en/text/', true, true, false), - (1, 'TIME(fsp)', 'time', 0, 6, 0, false, null, null, null, null, null, null, + 'https://mariadb.com/kb/en/datetime/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DECIMAL(size, d)', 'decimal', 0, 65, null, FALSE, 1, 0, 38, null, + FALSE, null, null, null, 'https://mariadb.com/kb/en/decimal/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DOUBLE(size, d)', 'double', null, null, null, FALSE, null, null, null, + null, FALSE, null, null, null, 'https://mariadb.com/kb/en/double/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ENUM(v1,v2,...)', 'ENUM', null, null, null, null, null, null, null, + null, null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/ENUM/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'FLOAT(size)', 'float', null, null, null, FALSE, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/float/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'INT(size)', 'int', null, null, null, FALSE, null, null, null, null, + null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/int/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, + null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longblob/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGTEXT', 'longTEXT', null, null, null, null, null, null, null, null, + null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, + null, null, null, 'max. 15.999 MiB', null, 'https://mariadb.com/kb/en/mediumblob/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMTEXT', 'mediumTEXT', null, null, null, null, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SERIAL', 'serial', null, null, null, null, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/bigint/', TRUE, TRUE, TRUE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, + null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SMALLINT(size)', 'smallint', 0, null, null, FALSE, null, null, null, + null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/smallint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TEXT(size)', 'TEXT', 0, null, null, FALSE, null, null, null, null, + null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/TEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIME(fsp)', 'time', 0, 6, 0, FALSE, null, null, null, null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S', - 'https://mariadb.com/kb/en/time/', true, true, false), - (1, 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, false, null, null, null, null, null, null, - 'fsp=microsecond precision, min. 0, max. 6', + 'https://mariadb.com/kb/en/time/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, FALSE, null, null, null, null, + null, null, 'fsp=microsecond precision, min. 0, max. 6', 'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD', - 'https://mariadb.com/kb/en/timestamp/', true, true, false), - (1, 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, null, null, null, - 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', false, true, false), - (1, 'TINYINT(size)', 'tinyint', 0, null, null, false, null, null, null, null, null, null, null, - 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', false, true, false), - (1, 'TINYTEXT', 'tinytext', null, null, null, null, null, null, null, null, null, null, null, - 'max. 255 characters', 'https://mariadb.com/kb/en/tinytext/', true, true, false), - (1, 'YEAR', 'year', 2, 4, null, false, 2, null, null, null, null, null, 'min. 1901, max. 2155', 'e.g. YYYY, YY', - 'https://mariadb.com/kb/en/year/', false, true, false), - (1, 'VARBINARY(size)', 'varbinary', 0, null, null, true, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/varbinary/', false, true, false), - (1, 'VARCHAR(size)', 'varchar', 0, 65532, 255, true, null, null, null, null, null, null, null, - null, 'https://mariadb.com/kb/en/varchar/', false, true, false); + 'https://mariadb.com/kb/en/timestamp/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, + null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', FALSE, + TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYINT(size)', 'tinyint', 0, null, null, FALSE, null, null, null, + null, null, null, null, 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYTEXT', 'tinyTEXT', null, null, null, null, null, null, null, null, + null, null, null, 'max. 255 characters', 'https://mariadb.com/kb/en/tinyTEXT/', TRUE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'YEAR', 'year', 2, 4, null, FALSE, 2, null, null, null, null, null, + 'min. 1901, max. 2155', 'e.g. YYYY, YY', 'https://mariadb.com/kb/en/year/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARBINARY(size)', 'varbinary', 0, null, null, TRUE, null, null, null, + null, null, null, null, null, 'https://mariadb.com/kb/en/varbinary/', FALSE, TRUE, FALSE), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARCHAR(size)', 'VARCHAR', 0, 65532, 255, TRUE, null, null, null, null, + null, null, null, null, 'https://mariadb.com/kb/en/VARCHAR/', FALSE, TRUE, FALSE); + INSERT INTO `mdb_image_operators` (image_id, display_name, value, documentation) -VALUES (1, 'Equal operator', '=', 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'), - (1, 'NULL-safe equal operator', '<=>', 'https://mariadb.com/kb/en/null-safe-equal/'), - (1, 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'), - (1, 'Less than or equal operator', '<=', 'https://mariadb.com/kb/en/less-than-or-equal/'), - (1, 'Greater-than operator', '>', 'https://mariadb.com/kb/en/greater-than/'), - (1, 'Greater than or equal operator', '>=', 'https://mariadb.com/kb/en/greater-than-or-equal/'), - (1, 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'), - (1, 'Addition operator', '+', 'https://mariadb.com/kb/en/addition-operator/'), - (1, 'Division operator', '/', 'https://mariadb.com/kb/en/division-operator/'), - (1, 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'), - (1, 'Multiplication operator', '*', 'https://mariadb.com/kb/en/multiplication-operator/'), - (1, 'Subtraction operator', '-', 'https://mariadb.com/kb/en/subtraction-operator-/'), - (1, 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'), - (1, 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'), - (1, 'IN', 'IN', 'https://mariadb.com/kb/en/in/'), - (1, 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'), - (1, 'IS', 'IS', 'https://mariadb.com/kb/en/is/'), - (1, 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'), - (1, 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'), - (1, 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'), - (1, 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'), - (1, 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'), - (1, 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'), - (1, 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'), - (1, 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'), - (1, 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'), - (1, 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'), - (1, 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'), - (1, 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/'); +VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Equal operator', '=', + 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NULL-safe equal operator', '<=>', + 'https://mariadb.com/kb/en/null-safe-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less than or equal operator', '<=', + 'https://mariadb.com/kb/en/less-than-or-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater-than operator', '>', + 'https://mariadb.com/kb/en/greater-than/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater than or equal operator', '>=', + 'https://mariadb.com/kb/en/greater-than-or-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Addition operator', '+', + 'https://mariadb.com/kb/en/addition-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Division operator', '/', + 'https://mariadb.com/kb/en/division-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Multiplication operator', '*', + 'https://mariadb.com/kb/en/multiplication-operator/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Subtraction operator', '-', + 'https://mariadb.com/kb/en/subtraction-operator-/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IN', 'IN', 'https://mariadb.com/kb/en/in/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS', 'IS', 'https://mariadb.com/kb/en/is/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'), + ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/'); INSERT INTO `mdb_ontologies` (prefix, uri, uri_pattern, sparql_endpoint, rdf_path) diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar index f370c8825750a431296ef68c3d482a2e4eee9389..8da93ba40f621cea1db4e46414fd28ef77856fc4 100644 Binary files a/helm/dbrepo/files/create-event-listener.jar and b/helm/dbrepo/files/create-event-listener.jar differ diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 8a23308aff3c047f2fdaec2f56b9768f9d282e54..ff5562eebc310b204b49694fd0c53134a0cbbbf1 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -122,7 +122,7 @@ authservice: setupJob: image: ## @skip authservice.setupJob.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.7.0 ## @param authservice.setupJob.resourcesPreset The container resource preset resourcesPreset: "nano" ## @param authservice.setupJob.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) @@ -415,7 +415,7 @@ analyseservice: enabled: true image: ## @skip analyseservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param analyseservice.podSecurityContext.enabled Enable pods' Security Context @@ -476,7 +476,7 @@ metadataservice: enabled: true image: ## @skip metadataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param metadataservice.podSecurityContext.enabled Enable pods' Security Context @@ -573,7 +573,7 @@ dataservice: endpoint: http://data-service image: ## @skip dataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param dataservice.podSecurityContext.enabled Enable pods' Security Context @@ -659,7 +659,7 @@ searchservice: endpoint: http://search-service image: ## @skip searchservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param searchservice.podSecurityContext.enabled Enable pods' Security Context @@ -706,7 +706,7 @@ searchservice: init: image: ## @skip searchservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0 ## @param searchservice.init.resourcesPreset The container resource preset resourcesPreset: "nano" ## @param searchservice.init.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) @@ -767,7 +767,7 @@ storageservice: init: image: ## @skip storageservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0 s3: ## @param storageservice.init.s3.endpoint The S3-capable endpoint the microservice connects to. endpoint: http://storage-service-s3:8333 @@ -876,7 +876,7 @@ ui: enabled: true image: ## @skip ui.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.5 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param ui.podSecurityContext.enabled Enable pods' Security Context diff --git a/install.sh b/install.sh index 004a29ff1f5ff20445ba5f49f9ed8520eb228429..6de016007f4e4eab84cd331a0a1a7aafca046b38 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash # preset -VERSION="1.6.5" +VERSION="1.7.0" MIN_CPU=8 MIN_RAM=4 MIN_MAP_COUNT=262144 diff --git a/lib/python/.coveragerc b/lib/python/.coveragerc new file mode 100644 index 0000000000000000000000000000000000000000..a387be84259ecf1c8b1387a407e3cfc528960a30 --- /dev/null +++ b/lib/python/.coveragerc @@ -0,0 +1,9 @@ +[report] +omit = + # omit tests + ./tests/* + # omit ext lib + ./omlib/* + +[html] +directory = htmlcov diff --git a/lib/python/coverage.xml b/lib/python/coverage.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c3ca2d8955982cd6cfb705f5b102bf28d8d0be2 --- /dev/null +++ b/lib/python/coverage.xml @@ -0,0 +1,1798 @@ +<?xml version="1.0" ?> +<coverage version="7.6.12" timestamp="1740131337201" lines-valid="1752" lines-covered="1699" line-rate="0.9697" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0"> + <!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.12 --> + <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> + <sources> + <source>/home/mweise/Projects/fda-services/lib/python</source> + </sources> + <packages> + <package name="dbrepo" line-rate="0.9376" branch-rate="0" complexity="0"> + <classes> + <class name="RestClient.py" filename="dbrepo/RestClient.py" complexity="0" line-rate="0.9503" branch-rate="0"> + <methods/> + <lines> + <line number="1" hits="1"/> + <line number="2" hits="1"/> + <line number="3" hits="1"/> + <line number="5" hits="1"/> + <line number="6" hits="1"/> + <line number="7" hits="1"/> + <line number="9" hits="1"/> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="15" hits="1"/> + <line number="19" hits="1"/> + <line number="31" hits="1"/> + <line number="32" hits="1"/> + <line number="33" hits="1"/> + <line number="34" hits="1"/> + <line number="36" hits="1"/> + <line number="41" hits="1"/> + <line number="42" hits="1"/> + <line number="43" hits="1"/> + <line number="44" hits="1"/> + <line number="45" hits="1"/> + <line number="47" hits="1"/> + <line number="48" hits="1"/> + <line number="51" hits="1"/> + <line number="53" hits="1"/> + <line number="54" hits="1"/> + <line number="55" hits="1"/> + <line number="56" hits="1"/> + <line number="57" hits="1"/> + <line number="58" hits="1"/> + <line number="59" hits="1"/> + <line number="60" hits="1"/> + <line number="61" hits="1"/> + <line number="62" hits="1"/> + <line number="63" hits="1"/> + <line number="64" hits="1"/> + <line number="66" hits="1"/> + <line number="67" hits="1"/> + <line number="68" hits="1"/> + <line number="69" hits="1"/> + <line number="70" hits="1"/> + <line number="71" hits="1"/> + <line number="72" hits="1"/> + <line number="73" hits="1"/> + <line number="74" hits="1"/> + <line number="75" hits="1"/> + <line number="76" hits="1"/> + <line number="77" hits="1"/> + <line number="80" hits="1"/> + <line number="86" hits="1"/> + <line number="87" hits="1"/> + <line number="88" hits="1"/> + <line number="89" hits="1"/> + <line number="90" hits="1"/> + <line number="92" hits="1"/> + <line number="100" hits="1"/> + <line number="101" hits="1"/> + <line number="102" hits="1"/> + <line number="103" hits="1"/> + <line number="104" hits="1"/> + <line number="105" hits="1"/> + <line number="108" hits="1"/> + <line number="116" hits="1"/> + <line number="117" hits="1"/> + <line number="118" hits="1"/> + <line number="119" hits="1"/> + <line number="120" hits="1"/> + <line number="121" hits="1"/> + <line number="124" hits="1"/> + <line number="134" hits="1"/> + <line number="135" hits="1"/> + <line number="136" hits="1"/> + <line number="137" hits="1"/> + <line number="138" hits="1"/> + <line number="139" hits="1"/> + <line number="140" hits="1"/> + <line number="141" hits="1"/> + <line number="142" hits="1"/> + <line number="143" hits="1"/> + <line number="146" hits="1"/> + <line number="166" hits="1"/> + <line number="167" hits="1"/> + <line number="170" hits="1"/> + <line number="171" hits="1"/> + <line number="172" hits="1"/> + <line number="173" hits="1"/> + <line number="174" hits="1"/> + <line number="175" hits="1"/> + <line number="176" hits="1"/> + <line number="177" hits="1"/> + <line number="178" hits="1"/> + <line number="179" hits="1"/> + <line number="182" hits="1"/> + <line number="190" hits="1"/> + <line number="191" hits="1"/> + <line number="192" hits="1"/> + <line number="193" hits="1"/> + <line number="194" hits="1"/> + <line number="195" hits="1"/> + <line number="198" hits="1"/> + <line number="207" hits="1"/> + <line number="208" hits="1"/> + <line number="209" hits="1"/> + <line number="210" hits="1"/> + <line number="211" hits="1"/> + <line number="212" hits="1"/> + <line number="213" hits="1"/> + <line number="214" hits="1"/> + <line number="217" hits="1"/> + <line number="225" hits="1"/> + <line number="226" hits="1"/> + <line number="227" hits="1"/> + <line number="228" hits="1"/> + <line number="229" hits="1"/> + <line number="230" hits="1"/> + <line number="233" hits="1"/> + <line number="240" hits="1"/> + <line number="241" hits="1"/> + <line number="242" hits="1"/> + <line number="243" hits="1"/> + <line number="244" hits="1"/> + <line number="247" hits="1"/> + <line number="258" hits="1"/> + <line number="259" hits="1"/> + <line number="260" hits="1"/> + <line number="261" hits="1"/> + <line number="262" hits="1"/> + <line number="263" hits="1"/> + <line number="264" hits="1"/> + <line number="265" hits="1"/> + <line number="266" hits="1"/> + <line number="267" hits="1"/> + <line number="270" hits="1"/> + <line number="290" hits="1"/> + <line number="291" hits="1"/> + <line number="294" hits="1"/> + <line number="295" hits="1"/> + <line number="296" hits="1"/> + <line number="297" hits="1"/> + <line number="298" hits="1"/> + <line number="299" hits="1"/> + <line number="300" hits="1"/> + <line number="301" hits="1"/> + <line number="302" hits="1"/> + <line number="303" hits="1"/> + <line number="304" hits="1"/> + <line number="305" hits="1"/> + <line number="306" hits="1"/> + <line number="307" hits="1"/> + <line number="308" hits="1"/> + <line number="309" hits="1"/> + <line number="312" hits="1"/> + <line number="336" hits="1"/> + <line number="337" hits="1"/> + <line number="342" hits="1"/> + <line number="343" hits="1"/> + <line number="344" hits="1"/> + <line number="345" hits="1"/> + <line number="346" hits="1"/> + <line number="347" hits="1"/> + <line number="348" hits="1"/> + <line number="349" hits="1"/> + <line number="350" hits="1"/> + <line number="351" hits="1"/> + <line number="352" hits="1"/> + <line number="353" hits="1"/> + <line number="356" hits="1"/> + <line number="373" hits="1"/> + <line number="374" hits="1"/> + <line number="376" hits="1"/> + <line number="377" hits="1"/> + <line number="378" hits="1"/> + <line number="379" hits="1"/> + <line number="380" hits="1"/> + <line number="381" hits="1"/> + <line number="382" hits="1"/> + <line number="383" hits="1"/> + <line number="384" hits="1"/> + <line number="385" hits="1"/> + <line number="386" hits="1"/> + <line number="388" hits="1"/> + <line number="389" hits="1"/> + <line number="390" hits="1"/> + <line number="393" hits="1"/> + <line number="409" hits="1"/> + <line number="410" hits="1"/> + <line number="411" hits="1"/> + <line number="412" hits="1"/> + <line number="413" hits="1"/> + <line number="414" hits="1"/> + <line number="415" hits="1"/> + <line number="416" hits="1"/> + <line number="417" hits="1"/> + <line number="418" hits="1"/> + <line number="419" hits="1"/> + <line number="420" hits="1"/> + <line number="421" hits="1"/> + <line number="423" hits="1"/> + <line number="424" hits="1"/> + <line number="426" hits="1"/> + <line number="429" hits="1"/> + <line number="444" hits="1"/> + <line number="445" hits="1"/> + <line number="446" hits="1"/> + <line number="447" hits="1"/> + <line number="448" hits="1"/> + <line number="449" hits="1"/> + <line number="450" hits="1"/> + <line number="451" hits="1"/> + <line number="452" hits="1"/> + <line number="453" hits="1"/> + <line number="454" hits="1"/> + <line number="455" hits="1"/> + <line number="456" hits="1"/> + <line number="457" hits="1"/> + <line number="458" hits="1"/> + <line number="459" hits="1"/> + <line number="460" hits="1"/> + <line number="462" hits="1"/> + <line number="463" hits="1"/> + <line number="464" hits="1"/> + <line number="467" hits="1"/> + <line number="491" hits="1"/> + <line number="492" hits="1"/> + <line number="495" hits="1"/> + <line number="496" hits="1"/> + <line number="497" hits="1"/> + <line number="498" hits="1"/> + <line number="499" hits="1"/> + <line number="500" hits="1"/> + <line number="501" hits="1"/> + <line number="502" hits="1"/> + <line number="503" hits="1"/> + <line number="504" hits="1"/> + <line number="505" hits="1"/> + <line number="506" hits="1"/> + <line number="507" hits="1"/> + <line number="508" hits="1"/> + <line number="509" hits="1"/> + <line number="510" hits="1"/> + <line number="513" hits="1"/> + <line number="525" hits="1"/> + <line number="526" hits="1"/> + <line number="527" hits="1"/> + <line number="528" hits="1"/> + <line number="529" hits="1"/> + <line number="530" hits="1"/> + <line number="531" hits="1"/> + <line number="532" hits="1"/> + <line number="533" hits="1"/> + <line number="534" hits="1"/> + <line number="537" hits="1"/> + <line number="550" hits="1"/> + <line number="551" hits="1"/> + <line number="552" hits="1"/> + <line number="553" hits="1"/> + <line number="554" hits="1"/> + <line number="555" hits="1"/> + <line number="556" hits="1"/> + <line number="557" hits="1"/> + <line number="558" hits="1"/> + <line number="559" hits="1"/> + <line number="562" hits="1"/> + <line number="576" hits="1"/> + <line number="577" hits="1"/> + <line number="578" hits="1"/> + <line number="579" hits="1"/> + <line number="580" hits="1"/> + <line number="581" hits="1"/> + <line number="582" hits="1"/> + <line number="583" hits="1"/> + <line number="584" hits="1"/> + <line number="585" hits="1"/> + <line number="586" hits="1"/> + <line number="587" hits="1"/> + <line number="588" hits="1"/> + <line number="589" hits="1"/> + <line number="590" hits="1"/> + <line number="593" hits="1"/> + <line number="606" hits="1"/> + <line number="607" hits="1"/> + <line number="608" hits="1"/> + <line number="609" hits="1"/> + <line number="610" hits="1"/> + <line number="611" hits="1"/> + <line number="612" hits="1"/> + <line number="613" hits="1"/> + <line number="614" hits="1"/> + <line number="615" hits="1"/> + <line number="616" hits="1"/> + <line number="619" hits="1"/> + <line number="633" hits="1"/> + <line number="634" hits="1"/> + <line number="635" hits="1"/> + <line number="636" hits="1"/> + <line number="637" hits="1"/> + <line number="638" hits="1"/> + <line number="639" hits="1"/> + <line number="640" hits="1"/> + <line number="641" hits="1"/> + <line number="642" hits="1"/> + <line number="643" hits="1"/> + <line number="644" hits="1"/> + <line number="645" hits="1"/> + <line number="646" hits="1"/> + <line number="649" hits="1"/> + <line number="660" hits="1"/> + <line number="661" hits="1"/> + <line number="662" hits="1"/> + <line number="663" hits="1"/> + <line number="664" hits="1"/> + <line number="665" hits="1"/> + <line number="666" hits="1"/> + <line number="667" hits="1"/> + <line number="670" hits="1"/> + <line number="683" hits="1"/> + <line number="684" hits="1"/> + <line number="685" hits="1"/> + <line number="686" hits="1"/> + <line number="687" hits="1"/> + <line number="688" hits="1"/> + <line number="689" hits="1"/> + <line number="690" hits="1"/> + <line number="691" hits="1"/> + <line number="692" hits="1"/> + <line number="695" hits="1"/> + <line number="710" hits="1"/> + <line number="711" hits="1"/> + <line number="713" hits="1"/> + <line number="714" hits="1"/> + <line number="715" hits="1"/> + <line number="716" hits="1"/> + <line number="717" hits="1"/> + <line number="718" hits="1"/> + <line number="719" hits="1"/> + <line number="720" hits="1"/> + <line number="723" hits="1"/> + <line number="743" hits="1"/> + <line number="744" hits="1"/> + <line number="747" hits="1"/> + <line number="748" hits="1"/> + <line number="749" hits="1"/> + <line number="750" hits="1"/> + <line number="751" hits="1"/> + <line number="752" hits="1"/> + <line number="753" hits="1"/> + <line number="754" hits="1"/> + <line number="755" hits="1"/> + <line number="756" hits="1"/> + <line number="757" hits="1"/> + <line number="758" hits="1"/> + <line number="759" hits="1"/> + <line number="760" hits="1"/> + <line number="761" hits="1"/> + <line number="762" hits="1"/> + <line number="765" hits="1"/> + <line number="780" hits="1"/> + <line number="781" hits="1"/> + <line number="782" hits="1"/> + <line number="783" hits="1"/> + <line number="784" hits="1"/> + <line number="785" hits="1"/> + <line number="786" hits="1"/> + <line number="787" hits="1"/> + <line number="788" hits="1"/> + <line number="789" hits="1"/> + <line number="790" hits="1"/> + <line number="791" hits="1"/> + <line number="792" hits="1"/> + <line number="793" hits="1"/> + <line number="794" hits="1"/> + <line number="795" hits="1"/> + <line number="796" hits="1"/> + <line number="799" hits="1"/> + <line number="817" hits="1"/> + <line number="818" hits="1"/> + <line number="819" hits="1"/> + <line number="820" hits="1"/> + <line number="821" hits="1"/> + <line number="822" hits="1"/> + <line number="823" hits="1"/> + <line number="824" hits="1"/> + <line number="825" hits="1"/> + <line number="826" hits="1"/> + <line number="827" hits="1"/> + <line number="828" hits="1"/> + <line number="829" hits="1"/> + <line number="830" hits="1"/> + <line number="831" hits="1"/> + <line number="832" hits="1"/> + <line number="833" hits="1"/> + <line number="834" hits="1"/> + <line number="836" hits="1"/> + <line number="839" hits="1"/> + <line number="858" hits="1"/> + <line number="859" hits="1"/> + <line number="860" hits="1"/> + <line number="861" hits="1"/> + <line number="862" hits="1"/> + <line number="863" hits="1"/> + <line number="864" hits="1"/> + <line number="865" hits="1"/> + <line number="866" hits="1"/> + <line number="867" hits="1"/> + <line number="868" hits="1"/> + <line number="869" hits="1"/> + <line number="870" hits="1"/> + <line number="871" hits="1"/> + <line number="872" hits="1"/> + <line number="873" hits="1"/> + <line number="874" hits="1"/> + <line number="875" hits="1"/> + <line number="877" hits="1"/> + <line number="880" hits="1"/> + <line number="894" hits="1"/> + <line number="895" hits="1"/> + <line number="896" hits="1"/> + <line number="897" hits="1"/> + <line number="898" hits="1"/> + <line number="899" hits="1"/> + <line number="900" hits="1"/> + <line number="901" hits="1"/> + <line number="902" hits="1"/> + <line number="903" hits="1"/> + <line number="904" hits="1"/> + <line number="905" hits="1"/> + <line number="907" hits="1"/> + <line number="910" hits="1"/> + <line number="926" hits="0"/> + <line number="927" hits="0"/> + <line number="928" hits="0"/> + <line number="929" hits="0"/> + <line number="932" hits="0"/> + <line number="933" hits="0"/> + <line number="934" hits="0"/> + <line number="935" hits="0"/> + <line number="936" hits="0"/> + <line number="937" hits="0"/> + <line number="938" hits="0"/> + <line number="939" hits="0"/> + <line number="940" hits="0"/> + <line number="941" hits="0"/> + <line number="943" hits="0"/> + <line number="946" hits="1"/> + <line number="960" hits="0"/> + <line number="961" hits="0"/> + <line number="962" hits="0"/> + <line number="968" hits="0"/> + <line number="969" hits="0"/> + <line number="970" hits="0"/> + <line number="971" hits="0"/> + <line number="972" hits="0"/> + <line number="973" hits="0"/> + <line number="974" hits="0"/> + <line number="975" hits="0"/> + <line number="976" hits="0"/> + <line number="977" hits="0"/> + <line number="980" hits="1"/> + <line number="992" hits="0"/> + <line number="993" hits="0"/> + <line number="994" hits="0"/> + <line number="998" hits="0"/> + <line number="999" hits="0"/> + <line number="1000" hits="0"/> + <line number="1001" hits="0"/> + <line number="1002" hits="0"/> + <line number="1003" hits="0"/> + <line number="1004" hits="0"/> + <line number="1005" hits="0"/> + <line number="1006" hits="0"/> + <line number="1007" hits="0"/> + <line number="1010" hits="1"/> + <line number="1025" hits="1"/> + <line number="1026" hits="1"/> + <line number="1027" hits="1"/> + <line number="1028" hits="1"/> + <line number="1029" hits="1"/> + <line number="1030" hits="1"/> + <line number="1031" hits="1"/> + <line number="1032" hits="1"/> + <line number="1033" hits="1"/> + <line number="1034" hits="1"/> + <line number="1035" hits="1"/> + <line number="1037" hits="1"/> + <line number="1038" hits="1"/> + <line number="1039" hits="1"/> + <line number="1042" hits="1"/> + <line number="1057" hits="1"/> + <line number="1058" hits="1"/> + <line number="1059" hits="1"/> + <line number="1060" hits="1"/> + <line number="1061" hits="1"/> + <line number="1062" hits="1"/> + <line number="1063" hits="1"/> + <line number="1064" hits="1"/> + <line number="1065" hits="1"/> + <line number="1066" hits="1"/> + <line number="1067" hits="1"/> + <line number="1068" hits="1"/> + <line number="1070" hits="1"/> + <line number="1073" hits="1"/> + <line number="1087" hits="1"/> + <line number="1088" hits="1"/> + <line number="1089" hits="1"/> + <line number="1090" hits="1"/> + <line number="1091" hits="1"/> + <line number="1092" hits="1"/> + <line number="1093" hits="1"/> + <line number="1094" hits="1"/> + <line number="1095" hits="1"/> + <line number="1096" hits="1"/> + <line number="1097" hits="1"/> + <line number="1098" hits="1"/> + <line number="1100" hits="1"/> + <line number="1103" hits="1"/> + <line number="1120" hits="1"/> + <line number="1121" hits="1"/> + <line number="1122" hits="1"/> + <line number="1123" hits="1"/> + <line number="1124" hits="1"/> + <line number="1125" hits="1"/> + <line number="1126" hits="1"/> + <line number="1127" hits="1"/> + <line number="1128" hits="1"/> + <line number="1129" hits="1"/> + <line number="1130" hits="1"/> + <line number="1131" hits="1"/> + <line number="1132" hits="1"/> + <line number="1133" hits="1"/> + <line number="1134" hits="1"/> + <line number="1135" hits="1"/> + <line number="1136" hits="1"/> + <line number="1138" hits="1"/> + <line number="1141" hits="1"/> + <line number="1157" hits="1"/> + <line number="1158" hits="1"/> + <line number="1159" hits="1"/> + <line number="1160" hits="1"/> + <line number="1161" hits="1"/> + <line number="1162" hits="1"/> + <line number="1163" hits="1"/> + <line number="1164" hits="1"/> + <line number="1165" hits="1"/> + <line number="1166" hits="1"/> + <line number="1167" hits="1"/> + <line number="1168" hits="1"/> + <line number="1169" hits="1"/> + <line number="1170" hits="1"/> + <line number="1172" hits="1"/> + <line number="1175" hits="1"/> + <line number="1187" hits="1"/> + <line number="1188" hits="1"/> + <line number="1189" hits="1"/> + <line number="1190" hits="1"/> + <line number="1191" hits="1"/> + <line number="1192" hits="1"/> + <line number="1193" hits="1"/> + <line number="1194" hits="1"/> + <line number="1195" hits="1"/> + <line number="1196" hits="1"/> + <line number="1199" hits="1"/> + <line number="1216" hits="1"/> + <line number="1217" hits="1"/> + <line number="1218" hits="1"/> + <line number="1219" hits="1"/> + <line number="1220" hits="1"/> + <line number="1221" hits="1"/> + <line number="1222" hits="1"/> + <line number="1223" hits="1"/> + <line number="1224" hits="1"/> + <line number="1225" hits="1"/> + <line number="1226" hits="1"/> + <line number="1227" hits="1"/> + <line number="1228" hits="1"/> + <line number="1230" hits="1"/> + <line number="1231" hits="1"/> + <line number="1232" hits="1"/> + <line number="1235" hits="1"/> + <line number="1252" hits="1"/> + <line number="1253" hits="1"/> + <line number="1254" hits="1"/> + <line number="1255" hits="1"/> + <line number="1256" hits="1"/> + <line number="1257" hits="1"/> + <line number="1258" hits="1"/> + <line number="1259" hits="1"/> + <line number="1260" hits="1"/> + <line number="1261" hits="1"/> + <line number="1262" hits="1"/> + <line number="1263" hits="1"/> + <line number="1264" hits="1"/> + <line number="1266" hits="1"/> + <line number="1267" hits="1"/> + <line number="1268" hits="1"/> + <line number="1271" hits="1"/> + <line number="1285" hits="1"/> + <line number="1286" hits="1"/> + <line number="1287" hits="1"/> + <line number="1288" hits="1"/> + <line number="1289" hits="1"/> + <line number="1290" hits="1"/> + <line number="1291" hits="1"/> + <line number="1292" hits="1"/> + <line number="1293" hits="1"/> + <line number="1294" hits="1"/> + <line number="1295" hits="1"/> + <line number="1296" hits="1"/> + <line number="1298" hits="1"/> + <line number="1299" hits="1"/> + <line number="1300" hits="1"/> + <line number="1303" hits="1"/> + <line number="1326" hits="1"/> + <line number="1327" hits="1"/> + <line number="1328" hits="1"/> + <line number="1329" hits="1"/> + <line number="1330" hits="1"/> + <line number="1331" hits="1"/> + <line number="1332" hits="1"/> + <line number="1333" hits="1"/> + <line number="1335" hits="1"/> + <line number="1336" hits="1"/> + <line number="1337" hits="1"/> + <line number="1338" hits="1"/> + <line number="1339" hits="1"/> + <line number="1340" hits="1"/> + <line number="1341" hits="1"/> + <line number="1342" hits="1"/> + <line number="1343" hits="1"/> + <line number="1344" hits="1"/> + <line number="1345" hits="1"/> + <line number="1346" hits="1"/> + <line number="1347" hits="1"/> + <line number="1348" hits="1"/> + <line number="1349" hits="1"/> + <line number="1350" hits="1"/> + <line number="1353" hits="1"/> + <line number="1371" hits="1"/> + <line number="1372" hits="1"/> + <line number="1373" hits="1"/> + <line number="1374" hits="1"/> + <line number="1375" hits="1"/> + <line number="1376" hits="1"/> + <line number="1377" hits="1"/> + <line number="1378" hits="1"/> + <line number="1379" hits="1"/> + <line number="1380" hits="1"/> + <line number="1381" hits="1"/> + <line number="1382" hits="1"/> + <line number="1383" hits="1"/> + <line number="1384" hits="1"/> + <line number="1385" hits="1"/> + <line number="1386" hits="1"/> + <line number="1389" hits="1"/> + <line number="1404" hits="1"/> + <line number="1405" hits="1"/> + <line number="1406" hits="1"/> + <line number="1407" hits="1"/> + <line number="1408" hits="1"/> + <line number="1409" hits="1"/> + <line number="1410" hits="1"/> + <line number="1411" hits="1"/> + <line number="1412" hits="1"/> + <line number="1413" hits="1"/> + <line number="1414" hits="1"/> + <line number="1415" hits="1"/> + <line number="1416" hits="1"/> + <line number="1419" hits="1"/> + <line number="1434" hits="1"/> + <line number="1435" hits="1"/> + <line number="1436" hits="1"/> + <line number="1437" hits="1"/> + <line number="1438" hits="1"/> + <line number="1439" hits="1"/> + <line number="1440" hits="1"/> + <line number="1441" hits="1"/> + <line number="1442" hits="1"/> + <line number="1443" hits="1"/> + <line number="1444" hits="1"/> + <line number="1445" hits="1"/> + <line number="1446" hits="1"/> + <line number="1447" hits="1"/> + <line number="1450" hits="1"/> + <line number="1463" hits="1"/> + <line number="1464" hits="1"/> + <line number="1465" hits="1"/> + <line number="1466" hits="1"/> + <line number="1467" hits="1"/> + <line number="1468" hits="1"/> + <line number="1469" hits="1"/> + <line number="1470" hits="1"/> + <line number="1471" hits="1"/> + <line number="1472" hits="1"/> + <line number="1473" hits="1"/> + <line number="1474" hits="1"/> + <line number="1477" hits="1"/> + <line number="1495" hits="1"/> + <line number="1496" hits="1"/> + <line number="1497" hits="1"/> + <line number="1498" hits="1"/> + <line number="1499" hits="1"/> + <line number="1500" hits="1"/> + <line number="1501" hits="1"/> + <line number="1502" hits="1"/> + <line number="1503" hits="1"/> + <line number="1504" hits="1"/> + <line number="1505" hits="1"/> + <line number="1506" hits="1"/> + <line number="1507" hits="1"/> + <line number="1508" hits="1"/> + <line number="1509" hits="1"/> + <line number="1510" hits="1"/> + <line number="1513" hits="1"/> + <line number="1549" hits="1"/> + <line number="1550" hits="1"/> + <line number="1555" hits="1"/> + <line number="1556" hits="1"/> + <line number="1557" hits="1"/> + <line number="1558" hits="1"/> + <line number="1559" hits="1"/> + <line number="1560" hits="1"/> + <line number="1561" hits="1"/> + <line number="1562" hits="1"/> + <line number="1563" hits="1"/> + <line number="1564" hits="1"/> + <line number="1565" hits="1"/> + <line number="1566" hits="1"/> + <line number="1568" hits="1"/> + <line number="1569" hits="1"/> + <line number="1570" hits="1"/> + <line number="1573" hits="1"/> + <line number="1610" hits="1"/> + <line number="1611" hits="1"/> + <line number="1617" hits="1"/> + <line number="1618" hits="1"/> + <line number="1619" hits="1"/> + <line number="1620" hits="1"/> + <line number="1621" hits="1"/> + <line number="1622" hits="1"/> + <line number="1623" hits="1"/> + <line number="1624" hits="1"/> + <line number="1625" hits="1"/> + <line number="1626" hits="1"/> + <line number="1627" hits="1"/> + <line number="1628" hits="1"/> + <line number="1630" hits="1"/> + <line number="1631" hits="1"/> + <line number="1632" hits="1"/> + <line number="1635" hits="1"/> + <line number="1650" hits="1"/> + <line number="1651" hits="1"/> + <line number="1652" hits="1"/> + <line number="1653" hits="1"/> + <line number="1654" hits="1"/> + <line number="1655" hits="1"/> + <line number="1656" hits="1"/> + <line number="1657" hits="1"/> + <line number="1658" hits="1"/> + <line number="1659" hits="1"/> + <line number="1660" hits="1"/> + <line number="1661" hits="1"/> + <line number="1662" hits="1"/> + <line number="1664" hits="1"/> + <line number="1665" hits="1"/> + <line number="1666" hits="1"/> + <line number="1669" hits="1"/> + <line number="1675" hits="1"/> + <line number="1676" hits="1"/> + <line number="1677" hits="1"/> + <line number="1678" hits="1"/> + <line number="1679" hits="1"/> + <line number="1680" hits="1"/> + <line number="1683" hits="1"/> + <line number="1689" hits="1"/> + <line number="1690" hits="1"/> + <line number="1691" hits="1"/> + <line number="1692" hits="1"/> + <line number="1693" hits="1"/> + <line number="1694" hits="1"/> + <line number="1697" hits="1"/> + <line number="1716" hits="1"/> + <line number="1717" hits="1"/> + <line number="1718" hits="1"/> + <line number="1719" hits="1"/> + <line number="1720" hits="1"/> + <line number="1721" hits="1"/> + <line number="1722" hits="1"/> + <line number="1723" hits="1"/> + <line number="1724" hits="1"/> + <line number="1725" hits="1"/> + <line number="1726" hits="1"/> + <line number="1727" hits="1"/> + <line number="1728" hits="1"/> + <line number="1729" hits="1"/> + <line number="1730" hits="1"/> + <line number="1731" hits="1"/> + <line number="1732" hits="1"/> + <line number="1733" hits="1"/> + <line number="1734" hits="1"/> + <line number="1735" hits="1"/> + <line number="1736" hits="1"/> + <line number="1737" hits="1"/> + <line number="1738" hits="1"/> + <line number="1739" hits="1"/> + <line number="1740" hits="1"/> + <line number="1741" hits="1"/> + <line number="1742" hits="1"/> + <line number="1743" hits="1"/> + <line number="1745" hits="1"/> + <line number="1748" hits="1"/> + <line number="1768" hits="1"/> + <line number="1769" hits="1"/> + <line number="1771" hits="1"/> + <line number="1772" hits="1"/> + <line number="1773" hits="1"/> + <line number="1774" hits="1"/> + <line number="1775" hits="1"/> + <line number="1776" hits="1"/> + <line number="1777" hits="1"/> + <line number="1778" hits="1"/> + <line number="1779" hits="1"/> + <line number="1780" hits="1"/> + <line number="1781" hits="1"/> + <line number="1782" hits="1"/> + <line number="1783" hits="1"/> + <line number="1784" hits="1"/> + </lines> + </class> + <class name="UploadClient.py" filename="dbrepo/UploadClient.py" complexity="0" line-rate="0.52" branch-rate="0"> + <methods/> + <lines> + <line number="1" hits="1"/> + <line number="2" hits="1"/> + <line number="3" hits="1"/> + <line number="4" hits="1"/> + <line number="5" hits="1"/> + <line number="7" hits="1"/> + <line number="8" hits="1"/> + <line number="10" hits="1"/> + <line number="12" hits="1"/> + <line number="16" hits="1"/> + <line number="24" hits="1"/> + <line number="26" hits="1"/> + <line number="27" hits="0"/> + <line number="29" hits="1"/> + <line number="30" hits="0"/> + <line number="31" hits="0"/> + <line number="32" hits="0"/> + <line number="33" hits="0"/> + <line number="34" hits="0"/> + <line number="35" hits="0"/> + <line number="36" hits="0"/> + <line number="37" hits="0"/> + <line number="38" hits="0"/> + <line number="39" hits="0"/> + <line number="40" hits="0"/> + </lines> + </class> + <class name="__init__.py" filename="dbrepo/__init__.py" complexity="0" line-rate="1" branch-rate="0"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package name="dbrepo.api" line-rate="1" branch-rate="0" complexity="0"> + <classes> + <class name="__init__.py" filename="dbrepo/api/__init__.py" complexity="0" line-rate="1" branch-rate="0"> + <methods/> + <lines/> + </class> + <class name="dto.py" filename="dbrepo/api/dto.py" complexity="0" line-rate="1" branch-rate="0"> + <methods/> + <lines> + <line number="1" hits="1"/> + <line number="3" hits="1"/> + <line number="4" hits="1"/> + <line number="5" hits="1"/> + <line number="6" hits="1"/> + <line number="8" hits="1"/> + <line number="10" hits="1"/> + <line number="15" hits="1"/> + <line number="16" hits="1"/> + <line number="17" hits="1"/> + <line number="18" hits="1"/> + <line number="19" hits="1"/> + <line number="20" hits="1"/> + <line number="21" hits="1"/> + <line number="22" hits="1"/> + <line number="23" hits="1"/> + <line number="24" hits="1"/> + <line number="27" hits="1"/> + <line number="28" hits="1"/> + <line number="29" hits="1"/> + <line number="30" hits="1"/> + <line number="33" hits="1"/> + <line number="34" hits="1"/> + <line number="35" hits="1"/> + <line number="36" hits="1"/> + <line number="37" hits="1"/> + <line number="40" hits="1"/> + <line number="41" hits="1"/> + <line number="42" hits="1"/> + <line number="45" hits="1"/> + <line number="46" hits="1"/> + <line number="47" hits="1"/> + <line number="48" hits="1"/> + <line number="49" hits="1"/> + <line number="50" hits="1"/> + <line number="51" hits="1"/> + <line number="52" hits="1"/> + <line number="53" hits="1"/> + <line number="56" hits="1"/> + <line number="57" hits="1"/> + <line number="58" hits="1"/> + <line number="59" hits="1"/> + <line number="62" hits="1"/> + <line number="63" hits="1"/> + <line number="64" hits="1"/> + <line number="65" hits="1"/> + <line number="66" hits="1"/> + <line number="67" hits="1"/> + <line number="68" hits="1"/> + <line number="71" hits="1"/> + <line number="72" hits="1"/> + <line number="73" hits="1"/> + <line number="74" hits="1"/> + <line number="75" hits="1"/> + <line number="76" hits="1"/> + <line number="77" hits="1"/> + <line number="78" hits="1"/> + <line number="81" hits="1"/> + <line number="82" hits="1"/> + <line number="83" hits="1"/> + <line number="84" hits="1"/> + <line number="85" hits="1"/> + <line number="86" hits="1"/> + <line number="87" hits="1"/> + <line number="88" hits="1"/> + <line number="89" hits="1"/> + <line number="92" hits="1"/> + <line number="93" hits="1"/> + <line number="94" hits="1"/> + <line number="95" hits="1"/> + <line number="96" hits="1"/> + <line number="97" hits="1"/> + <line number="98" hits="1"/> + <line number="101" hits="1"/> + <line number="102" hits="1"/> + <line number="103" hits="1"/> + <line number="104" hits="1"/> + <line number="105" hits="1"/> + <line number="106" hits="1"/> + <line number="107" hits="1"/> + <line number="108" hits="1"/> + <line number="111" hits="1"/> + <line number="112" hits="1"/> + <line number="113" hits="1"/> + <line number="114" hits="1"/> + <line number="115" hits="1"/> + <line number="116" hits="1"/> + <line number="117" hits="1"/> + <line number="118" hits="1"/> + <line number="119" hits="1"/> + <line number="120" hits="1"/> + <line number="123" hits="1"/> + <line number="124" hits="1"/> + <line number="125" hits="1"/> + <line number="126" hits="1"/> + <line number="127" hits="1"/> + <line number="130" hits="1"/> + <line number="131" hits="1"/> + <line number="132" hits="1"/> + <line number="133" hits="1"/> + <line number="134" hits="1"/> + <line number="135" hits="1"/> + <line number="136" hits="1"/> + <line number="137" hits="1"/> + <line number="140" hits="1"/> + <line number="141" hits="1"/> + <line number="144" hits="1"/> + <line number="145" hits="1"/> + <line number="148" hits="1"/> + <line number="152" hits="1"/> + <line number="153" hits="1"/> + <line number="155" hits="1"/> + <line number="156" hits="1"/> + <line number="158" hits="1"/> + <line number="159" hits="1"/> + <line number="162" hits="1"/> + <line number="166" hits="1"/> + <line number="167" hits="1"/> + <line number="168" hits="1"/> + <line number="169" hits="1"/> + <line number="170" hits="1"/> + <line number="171" hits="1"/> + <line number="172" hits="1"/> + <line number="173" hits="1"/> + <line number="174" hits="1"/> + <line number="175" hits="1"/> + <line number="176" hits="1"/> + <line number="177" hits="1"/> + <line number="178" hits="1"/> + <line number="179" hits="1"/> + <line number="180" hits="1"/> + <line number="181" hits="1"/> + <line number="182" hits="1"/> + <line number="183" hits="1"/> + <line number="184" hits="1"/> + <line number="185" hits="1"/> + <line number="186" hits="1"/> + <line number="187" hits="1"/> + <line number="188" hits="1"/> + <line number="189" hits="1"/> + <line number="190" hits="1"/> + <line number="191" hits="1"/> + <line number="192" hits="1"/> + <line number="193" hits="1"/> + <line number="194" hits="1"/> + <line number="195" hits="1"/> + <line number="198" hits="1"/> + <line number="202" hits="1"/> + <line number="203" hits="1"/> + <line number="204" hits="1"/> + <line number="205" hits="1"/> + <line number="206" hits="1"/> + <line number="207" hits="1"/> + <line number="208" hits="1"/> + <line number="209" hits="1"/> + <line number="210" hits="1"/> + <line number="211" hits="1"/> + <line number="212" hits="1"/> + <line number="213" hits="1"/> + <line number="214" hits="1"/> + <line number="215" hits="1"/> + <line number="216" hits="1"/> + <line number="217" hits="1"/> + <line number="218" hits="1"/> + <line number="219" hits="1"/> + <line number="220" hits="1"/> + <line number="221" hits="1"/> + <line number="222" hits="1"/> + <line number="223" hits="1"/> + <line number="224" hits="1"/> + <line number="225" hits="1"/> + <line number="226" hits="1"/> + <line number="227" hits="1"/> + <line number="228" hits="1"/> + <line number="229" hits="1"/> + <line number="230" hits="1"/> + <line number="231" hits="1"/> + <line number="232" hits="1"/> + <line number="233" hits="1"/> + <line number="234" hits="1"/> + <line number="235" hits="1"/> + <line number="236" hits="1"/> + <line number="237" hits="1"/> + <line number="238" hits="1"/> + <line number="239" hits="1"/> + <line number="240" hits="1"/> + <line number="241" hits="1"/> + <line number="242" hits="1"/> + <line number="243" hits="1"/> + <line number="244" hits="1"/> + <line number="245" hits="1"/> + <line number="246" hits="1"/> + <line number="247" hits="1"/> + <line number="248" hits="1"/> + <line number="249" hits="1"/> + <line number="250" hits="1"/> + <line number="251" hits="1"/> + <line number="252" hits="1"/> + <line number="253" hits="1"/> + <line number="254" hits="1"/> + <line number="255" hits="1"/> + <line number="256" hits="1"/> + <line number="257" hits="1"/> + <line number="258" hits="1"/> + <line number="259" hits="1"/> + <line number="260" hits="1"/> + <line number="261" hits="1"/> + <line number="262" hits="1"/> + <line number="263" hits="1"/> + <line number="264" hits="1"/> + <line number="265" hits="1"/> + <line number="266" hits="1"/> + <line number="267" hits="1"/> + <line number="268" hits="1"/> + <line number="269" hits="1"/> + <line number="270" hits="1"/> + <line number="271" hits="1"/> + <line number="272" hits="1"/> + <line number="273" hits="1"/> + <line number="274" hits="1"/> + <line number="275" hits="1"/> + <line number="276" hits="1"/> + <line number="277" hits="1"/> + <line number="278" hits="1"/> + <line number="279" hits="1"/> + <line number="280" hits="1"/> + <line number="281" hits="1"/> + <line number="282" hits="1"/> + <line number="283" hits="1"/> + <line number="284" hits="1"/> + <line number="285" hits="1"/> + <line number="286" hits="1"/> + <line number="287" hits="1"/> + <line number="288" hits="1"/> + <line number="289" hits="1"/> + <line number="290" hits="1"/> + <line number="291" hits="1"/> + <line number="292" hits="1"/> + <line number="293" hits="1"/> + <line number="294" hits="1"/> + <line number="295" hits="1"/> + <line number="296" hits="1"/> + <line number="297" hits="1"/> + <line number="298" hits="1"/> + <line number="299" hits="1"/> + <line number="300" hits="1"/> + <line number="301" hits="1"/> + <line number="302" hits="1"/> + <line number="303" hits="1"/> + <line number="304" hits="1"/> + <line number="305" hits="1"/> + <line number="306" hits="1"/> + <line number="307" hits="1"/> + <line number="308" hits="1"/> + <line number="309" hits="1"/> + <line number="310" hits="1"/> + <line number="311" hits="1"/> + <line number="312" hits="1"/> + <line number="313" hits="1"/> + <line number="314" hits="1"/> + <line number="315" hits="1"/> + <line number="316" hits="1"/> + <line number="317" hits="1"/> + <line number="318" hits="1"/> + <line number="319" hits="1"/> + <line number="320" hits="1"/> + <line number="321" hits="1"/> + <line number="322" hits="1"/> + <line number="323" hits="1"/> + <line number="324" hits="1"/> + <line number="325" hits="1"/> + <line number="326" hits="1"/> + <line number="327" hits="1"/> + <line number="328" hits="1"/> + <line number="329" hits="1"/> + <line number="330" hits="1"/> + <line number="331" hits="1"/> + <line number="332" hits="1"/> + <line number="333" hits="1"/> + <line number="334" hits="1"/> + <line number="335" hits="1"/> + <line number="336" hits="1"/> + <line number="337" hits="1"/> + <line number="338" hits="1"/> + <line number="339" hits="1"/> + <line number="340" hits="1"/> + <line number="341" hits="1"/> + <line number="342" hits="1"/> + <line number="343" hits="1"/> + <line number="344" hits="1"/> + <line number="345" hits="1"/> + <line number="346" hits="1"/> + <line number="347" hits="1"/> + <line number="348" hits="1"/> + <line number="349" hits="1"/> + <line number="350" hits="1"/> + <line number="351" hits="1"/> + <line number="352" hits="1"/> + <line number="353" hits="1"/> + <line number="354" hits="1"/> + <line number="355" hits="1"/> + <line number="356" hits="1"/> + <line number="357" hits="1"/> + <line number="358" hits="1"/> + <line number="359" hits="1"/> + <line number="360" hits="1"/> + <line number="361" hits="1"/> + <line number="362" hits="1"/> + <line number="363" hits="1"/> + <line number="364" hits="1"/> + <line number="365" hits="1"/> + <line number="366" hits="1"/> + <line number="367" hits="1"/> + <line number="368" hits="1"/> + <line number="369" hits="1"/> + <line number="370" hits="1"/> + <line number="371" hits="1"/> + <line number="372" hits="1"/> + <line number="373" hits="1"/> + <line number="374" hits="1"/> + <line number="375" hits="1"/> + <line number="376" hits="1"/> + <line number="377" hits="1"/> + <line number="378" hits="1"/> + <line number="379" hits="1"/> + <line number="380" hits="1"/> + <line number="381" hits="1"/> + <line number="382" hits="1"/> + <line number="383" hits="1"/> + <line number="384" hits="1"/> + <line number="385" hits="1"/> + <line number="388" hits="1"/> + <line number="389" hits="1"/> + <line number="390" hits="1"/> + <line number="393" hits="1"/> + <line number="394" hits="1"/> + <line number="397" hits="1"/> + <line number="398" hits="1"/> + <line number="401" hits="1"/> + <line number="405" hits="1"/> + <line number="406" hits="1"/> + <line number="407" hits="1"/> + <line number="408" hits="1"/> + <line number="411" hits="1"/> + <line number="412" hits="1"/> + <line number="413" hits="1"/> + <line number="414" hits="1"/> + <line number="417" hits="1"/> + <line number="418" hits="1"/> + <line number="421" hits="1"/> + <line number="422" hits="1"/> + <line number="423" hits="1"/> + <line number="424" hits="1"/> + <line number="425" hits="1"/> + <line number="428" hits="1"/> + <line number="429" hits="1"/> + <line number="430" hits="1"/> + <line number="431" hits="1"/> + <line number="434" hits="1"/> + <line number="435" hits="1"/> + <line number="438" hits="1"/> + <line number="439" hits="1"/> + <line number="440" hits="1"/> + <line number="441" hits="1"/> + <line number="442" hits="1"/> + <line number="443" hits="1"/> + <line number="444" hits="1"/> + <line number="445" hits="1"/> + <line number="448" hits="1"/> + <line number="449" hits="1"/> + <line number="450" hits="1"/> + <line number="451" hits="1"/> + <line number="452" hits="1"/> + <line number="453" hits="1"/> + <line number="454" hits="1"/> + <line number="457" hits="1"/> + <line number="458" hits="1"/> + <line number="461" hits="1"/> + <line number="462" hits="1"/> + <line number="463" hits="1"/> + <line number="464" hits="1"/> + <line number="467" hits="1"/> + <line number="468" hits="1"/> + <line number="471" hits="1"/> + <line number="472" hits="1"/> + <line number="473" hits="1"/> + <line number="476" hits="1"/> + <line number="477" hits="1"/> + <line number="480" hits="1"/> + <line number="481" hits="1"/> + <line number="482" hits="1"/> + <line number="483" hits="1"/> + <line number="484" hits="1"/> + <line number="485" hits="1"/> + <line number="488" hits="1"/> + <line number="489" hits="1"/> + <line number="490" hits="1"/> + <line number="493" hits="1"/> + <line number="494" hits="1"/> + <line number="495" hits="1"/> + <line number="498" hits="1"/> + <line number="499" hits="1"/> + <line number="502" hits="1"/> + <line number="503" hits="1"/> + <line number="504" hits="1"/> + <line number="505" hits="1"/> + <line number="506" hits="1"/> + <line number="507" hits="1"/> + <line number="508" hits="1"/> + <line number="511" hits="1"/> + <line number="512" hits="1"/> + <line number="513" hits="1"/> + <line number="514" hits="1"/> + <line number="515" hits="1"/> + <line number="516" hits="1"/> + <line number="517" hits="1"/> + <line number="518" hits="1"/> + <line number="519" hits="1"/> + <line number="520" hits="1"/> + <line number="521" hits="1"/> + <line number="522" hits="1"/> + <line number="525" hits="1"/> + <line number="526" hits="1"/> + <line number="527" hits="1"/> + <line number="528" hits="1"/> + <line number="529" hits="1"/> + <line number="532" hits="1"/> + <line number="536" hits="1"/> + <line number="537" hits="1"/> + <line number="538" hits="1"/> + <line number="539" hits="1"/> + <line number="542" hits="1"/> + <line number="546" hits="1"/> + <line number="547" hits="1"/> + <line number="548" hits="1"/> + <line number="551" hits="1"/> + <line number="552" hits="1"/> + <line number="553" hits="1"/> + <line number="554" hits="1"/> + <line number="555" hits="1"/> + <line number="556" hits="1"/> + <line number="557" hits="1"/> + <line number="558" hits="1"/> + <line number="559" hits="1"/> + <line number="560" hits="1"/> + <line number="561" hits="1"/> + <line number="562" hits="1"/> + <line number="563" hits="1"/> + <line number="566" hits="1"/> + <line number="567" hits="1"/> + <line number="568" hits="1"/> + <line number="569" hits="1"/> + <line number="570" hits="1"/> + <line number="571" hits="1"/> + <line number="572" hits="1"/> + <line number="573" hits="1"/> + <line number="574" hits="1"/> + <line number="577" hits="1"/> + <line number="578" hits="1"/> + <line number="579" hits="1"/> + <line number="580" hits="1"/> + <line number="581" hits="1"/> + <line number="582" hits="1"/> + <line number="583" hits="1"/> + <line number="584" hits="1"/> + <line number="585" hits="1"/> + <line number="586" hits="1"/> + <line number="587" hits="1"/> + <line number="588" hits="1"/> + <line number="591" hits="1"/> + <line number="592" hits="1"/> + <line number="595" hits="1"/> + <line number="596" hits="1"/> + <line number="597" hits="1"/> + <line number="598" hits="1"/> + <line number="599" hits="1"/> + <line number="602" hits="1"/> + <line number="603" hits="1"/> + <line number="604" hits="1"/> + <line number="605" hits="1"/> + <line number="608" hits="1"/> + <line number="609" hits="1"/> + <line number="612" hits="1"/> + <line number="613" hits="1"/> + <line number="614" hits="1"/> + <line number="615" hits="1"/> + <line number="616" hits="1"/> + <line number="617" hits="1"/> + <line number="618" hits="1"/> + <line number="619" hits="1"/> + <line number="620" hits="1"/> + <line number="621" hits="1"/> + <line number="622" hits="1"/> + <line number="623" hits="1"/> + <line number="624" hits="1"/> + <line number="625" hits="1"/> + <line number="626" hits="1"/> + <line number="627" hits="1"/> + <line number="628" hits="1"/> + <line number="629" hits="1"/> + <line number="630" hits="1"/> + <line number="631" hits="1"/> + <line number="632" hits="1"/> + <line number="633" hits="1"/> + <line number="634" hits="1"/> + <line number="637" hits="1"/> + <line number="638" hits="1"/> + <line number="641" hits="1"/> + <line number="642" hits="1"/> + <line number="643" hits="1"/> + <line number="644" hits="1"/> + <line number="645" hits="1"/> + <line number="646" hits="1"/> + <line number="647" hits="1"/> + <line number="648" hits="1"/> + <line number="649" hits="1"/> + <line number="650" hits="1"/> + <line number="651" hits="1"/> + <line number="652" hits="1"/> + <line number="653" hits="1"/> + <line number="654" hits="1"/> + <line number="655" hits="1"/> + <line number="656" hits="1"/> + <line number="657" hits="1"/> + <line number="658" hits="1"/> + <line number="659" hits="1"/> + <line number="660" hits="1"/> + <line number="661" hits="1"/> + <line number="662" hits="1"/> + <line number="663" hits="1"/> + <line number="664" hits="1"/> + <line number="665" hits="1"/> + <line number="666" hits="1"/> + <line number="669" hits="1"/> + <line number="670" hits="1"/> + <line number="671" hits="1"/> + <line number="672" hits="1"/> + <line number="673" hits="1"/> + <line number="674" hits="1"/> + <line number="675" hits="1"/> + <line number="676" hits="1"/> + <line number="677" hits="1"/> + <line number="678" hits="1"/> + <line number="679" hits="1"/> + <line number="680" hits="1"/> + <line number="681" hits="1"/> + <line number="684" hits="1"/> + <line number="685" hits="1"/> + <line number="686" hits="1"/> + <line number="687" hits="1"/> + <line number="688" hits="1"/> + <line number="689" hits="1"/> + <line number="690" hits="1"/> + <line number="691" hits="1"/> + <line number="692" hits="1"/> + <line number="693" hits="1"/> + <line number="694" hits="1"/> + <line number="695" hits="1"/> + <line number="696" hits="1"/> + <line number="699" hits="1"/> + <line number="700" hits="1"/> + <line number="701" hits="1"/> + <line number="702" hits="1"/> + <line number="703" hits="1"/> + <line number="706" hits="1"/> + <line number="707" hits="1"/> + <line number="708" hits="1"/> + <line number="709" hits="1"/> + <line number="712" hits="1"/> + <line number="713" hits="1"/> + <line number="714" hits="1"/> + <line number="715" hits="1"/> + <line number="716" hits="1"/> + <line number="717" hits="1"/> + <line number="718" hits="1"/> + <line number="719" hits="1"/> + <line number="720" hits="1"/> + <line number="721" hits="1"/> + <line number="722" hits="1"/> + <line number="725" hits="1"/> + <line number="726" hits="1"/> + <line number="727" hits="1"/> + <line number="728" hits="1"/> + <line number="729" hits="1"/> + <line number="732" hits="1"/> + <line number="733" hits="1"/> + <line number="734" hits="1"/> + <line number="735" hits="1"/> + <line number="738" hits="1"/> + <line number="739" hits="1"/> + <line number="742" hits="1"/> + <line number="743" hits="1"/> + <line number="744" hits="1"/> + <line number="745" hits="1"/> + <line number="746" hits="1"/> + <line number="747" hits="1"/> + <line number="750" hits="1"/> + <line number="751" hits="1"/> + <line number="752" hits="1"/> + <line number="753" hits="1"/> + <line number="756" hits="1"/> + <line number="757" hits="1"/> + <line number="760" hits="1"/> + <line number="761" hits="1"/> + <line number="762" hits="1"/> + <line number="763" hits="1"/> + <line number="764" hits="1"/> + <line number="767" hits="1"/> + <line number="768" hits="1"/> + <line number="771" hits="1"/> + <line number="775" hits="1"/> + <line number="776" hits="1"/> + <line number="777" hits="1"/> + <line number="778" hits="1"/> + <line number="781" hits="1"/> + <line number="785" hits="1"/> + <line number="786" hits="1"/> + <line number="789" hits="1"/> + <line number="793" hits="1"/> + <line number="794" hits="1"/> + <line number="795" hits="1"/> + <line number="796" hits="1"/> + <line number="797" hits="1"/> + <line number="798" hits="1"/> + <line number="799" hits="1"/> + <line number="800" hits="1"/> + <line number="801" hits="1"/> + <line number="802" hits="1"/> + <line number="803" hits="1"/> + <line number="804" hits="1"/> + <line number="805" hits="1"/> + <line number="806" hits="1"/> + <line number="807" hits="1"/> + <line number="808" hits="1"/> + <line number="809" hits="1"/> + <line number="810" hits="1"/> + <line number="813" hits="1"/> + <line number="817" hits="1"/> + <line number="818" hits="1"/> + <line number="819" hits="1"/> + <line number="820" hits="1"/> + <line number="821" hits="1"/> + <line number="822" hits="1"/> + <line number="823" hits="1"/> + <line number="824" hits="1"/> + <line number="825" hits="1"/> + <line number="826" hits="1"/> + <line number="827" hits="1"/> + <line number="828" hits="1"/> + <line number="829" hits="1"/> + <line number="830" hits="1"/> + <line number="831" hits="1"/> + <line number="832" hits="1"/> + <line number="833" hits="1"/> + <line number="834" hits="1"/> + <line number="835" hits="1"/> + <line number="836" hits="1"/> + <line number="837" hits="1"/> + <line number="838" hits="1"/> + <line number="839" hits="1"/> + <line number="840" hits="1"/> + <line number="841" hits="1"/> + <line number="842" hits="1"/> + <line number="843" hits="1"/> + <line number="844" hits="1"/> + <line number="845" hits="1"/> + <line number="846" hits="1"/> + <line number="847" hits="1"/> + <line number="848" hits="1"/> + <line number="849" hits="1"/> + <line number="850" hits="1"/> + <line number="853" hits="1"/> + <line number="857" hits="1"/> + <line number="858" hits="1"/> + <line number="859" hits="1"/> + <line number="860" hits="1"/> + <line number="861" hits="1"/> + <line number="862" hits="1"/> + <line number="865" hits="1"/> + <line number="869" hits="1"/> + <line number="870" hits="1"/> + <line number="872" hits="1"/> + <line number="873" hits="1"/> + <line number="876" hits="1"/> + <line number="880" hits="1"/> + <line number="881" hits="1"/> + <line number="883" hits="1"/> + <line number="884" hits="1"/> + <line number="886" hits="1"/> + <line number="887" hits="1"/> + <line number="889" hits="1"/> + <line number="890" hits="1"/> + <line number="893" hits="1"/> + <line number="897" hits="1"/> + <line number="898" hits="1"/> + <line number="900" hits="1"/> + <line number="901" hits="1"/> + <line number="904" hits="1"/> + <line number="908" hits="1"/> + <line number="909" hits="1"/> + <line number="911" hits="1"/> + <line number="912" hits="1"/> + <line number="914" hits="1"/> + <line number="915" hits="1"/> + <line number="917" hits="1"/> + <line number="918" hits="1"/> + <line number="921" hits="1"/> + <line number="922" hits="1"/> + <line number="923" hits="1"/> + <line number="924" hits="1"/> + <line number="925" hits="1"/> + <line number="926" hits="1"/> + <line number="927" hits="1"/> + <line number="928" hits="1"/> + <line number="929" hits="1"/> + <line number="930" hits="1"/> + <line number="931" hits="1"/> + <line number="932" hits="1"/> + <line number="933" hits="1"/> + <line number="936" hits="1"/> + <line number="937" hits="1"/> + <line number="940" hits="1"/> + <line number="941" hits="1"/> + <line number="942" hits="1"/> + <line number="943" hits="1"/> + <line number="944" hits="1"/> + <line number="945" hits="1"/> + <line number="946" hits="1"/> + <line number="947" hits="1"/> + <line number="948" hits="1"/> + <line number="949" hits="1"/> + <line number="950" hits="1"/> + <line number="951" hits="1"/> + <line number="952" hits="1"/> + <line number="953" hits="1"/> + <line number="954" hits="1"/> + <line number="955" hits="1"/> + <line number="958" hits="1"/> + <line number="959" hits="1"/> + <line number="960" hits="1"/> + <line number="961" hits="1"/> + <line number="962" hits="1"/> + <line number="963" hits="1"/> + <line number="964" hits="1"/> + <line number="965" hits="1"/> + <line number="966" hits="1"/> + <line number="967" hits="1"/> + <line number="968" hits="1"/> + <line number="969" hits="1"/> + <line number="970" hits="1"/> + <line number="971" hits="1"/> + <line number="972" hits="1"/> + <line number="973" hits="1"/> + <line number="974" hits="1"/> + <line number="975" hits="1"/> + <line number="976" hits="1"/> + <line number="977" hits="1"/> + <line number="978" hits="1"/> + <line number="979" hits="1"/> + <line number="980" hits="1"/> + <line number="981" hits="1"/> + <line number="982" hits="1"/> + <line number="983" hits="1"/> + <line number="984" hits="1"/> + <line number="987" hits="1"/> + <line number="988" hits="1"/> + <line number="989" hits="1"/> + <line number="990" hits="1"/> + <line number="991" hits="1"/> + <line number="992" hits="1"/> + <line number="993" hits="1"/> + <line number="994" hits="1"/> + <line number="995" hits="1"/> + <line number="996" hits="1"/> + <line number="997" hits="1"/> + <line number="998" hits="1"/> + <line number="999" hits="1"/> + <line number="1000" hits="1"/> + <line number="1001" hits="1"/> + <line number="1002" hits="1"/> + <line number="1003" hits="1"/> + <line number="1006" hits="1"/> + <line number="1007" hits="1"/> + <line number="1008" hits="1"/> + <line number="1009" hits="1"/> + <line number="1010" hits="1"/> + <line number="1011" hits="1"/> + <line number="1012" hits="1"/> + <line number="1013" hits="1"/> + <line number="1014" hits="1"/> + <line number="1015" hits="1"/> + <line number="1016" hits="1"/> + <line number="1017" hits="1"/> + <line number="1018" hits="1"/> + <line number="1019" hits="1"/> + <line number="1020" hits="1"/> + <line number="1021" hits="1"/> + <line number="1022" hits="1"/> + <line number="1023" hits="1"/> + <line number="1024" hits="1"/> + <line number="1025" hits="1"/> + <line number="1028" hits="1"/> + <line number="1029" hits="1"/> + <line number="1030" hits="1"/> + <line number="1031" hits="1"/> + <line number="1032" hits="1"/> + <line number="1033" hits="1"/> + <line number="1034" hits="1"/> + <line number="1035" hits="1"/> + <line number="1036" hits="1"/> + <line number="1037" hits="1"/> + <line number="1038" hits="1"/> + <line number="1041" hits="1"/> + <line number="1042" hits="1"/> + <line number="1043" hits="1"/> + <line number="1044" hits="1"/> + <line number="1045" hits="1"/> + <line number="1046" hits="1"/> + <line number="1047" hits="1"/> + <line number="1048" hits="1"/> + <line number="1049" hits="1"/> + <line number="1050" hits="1"/> + <line number="1051" hits="1"/> + <line number="1052" hits="1"/> + <line number="1053" hits="1"/> + <line number="1054" hits="1"/> + <line number="1055" hits="1"/> + <line number="1056" hits="1"/> + <line number="1057" hits="1"/> + <line number="1058" hits="1"/> + <line number="1061" hits="1"/> + <line number="1062" hits="1"/> + <line number="1063" hits="1"/> + <line number="1064" hits="1"/> + <line number="1067" hits="1"/> + <line number="1068" hits="1"/> + <line number="1069" hits="1"/> + <line number="1070" hits="1"/> + <line number="1071" hits="1"/> + <line number="1074" hits="1"/> + <line number="1078" hits="1"/> + <line number="1079" hits="1"/> + <line number="1080" hits="1"/> + <line number="1081" hits="1"/> + <line number="1082" hits="1"/> + <line number="1085" hits="1"/> + <line number="1086" hits="1"/> + <line number="1089" hits="1"/> + <line number="1090" hits="1"/> + <line number="1091" hits="1"/> + <line number="1092" hits="1"/> + <line number="1093" hits="1"/> + <line number="1094" hits="1"/> + <line number="1095" hits="1"/> + <line number="1096" hits="1"/> + <line number="1099" hits="1"/> + <line number="1100" hits="1"/> + <line number="1101" hits="1"/> + <line number="1102" hits="1"/> + <line number="1103" hits="1"/> + <line number="1104" hits="1"/> + <line number="1107" hits="1"/> + <line number="1108" hits="1"/> + <line number="1109" hits="1"/> + <line number="1110" hits="1"/> + <line number="1113" hits="1"/> + <line number="1114" hits="1"/> + <line number="1115" hits="1"/> + <line number="1116" hits="1"/> + <line number="1117" hits="1"/> + </lines> + </class> + <class name="exceptions.py" filename="dbrepo/api/exceptions.py" complexity="0" line-rate="1" branch-rate="0"> + <methods/> + <lines> + <line number="1" hits="1"/> + <line number="5" hits="1"/> + <line number="8" hits="1"/> + <line number="12" hits="1"/> + <line number="15" hits="1"/> + <line number="19" hits="1"/> + <line number="22" hits="1"/> + <line number="26" hits="1"/> + <line number="29" hits="1"/> + <line number="33" hits="1"/> + <line number="36" hits="1"/> + <line number="40" hits="1"/> + <line number="43" hits="1"/> + <line number="47" hits="1"/> + <line number="50" hits="1"/> + <line number="54" hits="1"/> + <line number="57" hits="1"/> + <line number="61" hits="1"/> + <line number="64" hits="1"/> + <line number="68" hits="1"/> + <line number="71" hits="1"/> + <line number="75" hits="1"/> + <line number="78" hits="1"/> + <line number="82" hits="1"/> + <line number="85" hits="1"/> + <line number="89" hits="1"/> + <line number="92" hits="1"/> + <line number="96" hits="1"/> + <line number="99" hits="1"/> + <line number="103" hits="1"/> + <line number="106" hits="1"/> + <line number="110" hits="1"/> + </lines> + </class> + </classes> + </package> + </packages> +</coverage> diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 11e171b056819b768a008909d2de453227af741d..9e609a70921634ee22377407e398507db46693db 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -195,7 +195,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find containers: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_container(self, container_id: int) -> Container: + def get_container(self, container_id: str) -> Container: """ Get a container with given id. @@ -244,7 +244,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find databases: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_database(self, database_id: int) -> Database: + def get_database(self, database_id: str) -> Database: """ Get a databases with given id. @@ -267,7 +267,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find database: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def create_database(self, name: str, container_id: int, is_public: bool = True, + def create_database(self, name: str, container_id: str, is_public: bool = True, is_schema_public: bool = True) -> Database: """ Create a databases in a container with given container id. @@ -309,7 +309,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create database: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def create_container(self, name: str, host: str, image_id: int, privileged_username: str, privileged_password: str, + def create_container(self, name: str, host: str, image_id: str, privileged_username: str, privileged_password: str, port: int = None, ui_host: str = None, ui_port: int = None) -> Container: """ Register a container instance executing a given container image. Note that this does not create a container, @@ -353,7 +353,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create container: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def update_database_visibility(self, database_id: int, is_public: bool, is_schema_public: bool) -> Database: + def update_database_visibility(self, database_id: str, is_public: bool, is_schema_public: bool) -> Database: """ Updates the database visibility of a database with given database id. @@ -390,7 +390,7 @@ class RestClient: raise ResponseCodeError( f'Failed to update database visibility: response code: {response.status_code} is not 202 (ACCEPTED)') - def update_database_owner(self, database_id: int, user_id: str) -> Database: + def update_database_owner(self, database_id: str, user_id: str) -> Database: """ Updates the database owner of a database with given database id. @@ -426,7 +426,7 @@ class RestClient: raise ResponseCodeError( f'Failed to update database visibility: response code: {response.status_code} is not 202 (ACCEPTED)') - def update_database_schema(self, database_id: int) -> DatabaseBrief: + def update_database_schema(self, database_id: str) -> DatabaseBrief: """ Updates the database table and view metadata of a database with given database id. @@ -464,7 +464,7 @@ class RestClient: raise ResponseCodeError( f'Failed to update database schema: response code: {response.status_code} is not 200 (OK)') - def create_table(self, database_id: int, name: str, is_public: bool, is_schema_public: bool, + def create_table(self, database_id: str, name: str, is_public: bool, is_schema_public: bool, columns: List[CreateTableColumn], constraints: CreateTableConstraints, description: str = None) -> TableBrief: """ @@ -510,7 +510,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create table: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def get_tables(self, database_id: int) -> List[TableBrief]: + def get_tables(self, database_id: str) -> List[TableBrief]: """ Get all tables. @@ -534,7 +534,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get tables: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_table(self, database_id: int, table_id: int) -> Table: + def get_table(self, database_id: str, table_id: str) -> Table: """ Get a table with given database id and table id. @@ -559,7 +559,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find table: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def delete_table(self, database_id: int, table_id: int) -> None: + def delete_table(self, database_id: str, table_id: str) -> None: """ Delete a table with given database id and table id. @@ -590,7 +590,7 @@ class RestClient: raise ResponseCodeError(f'Failed to delete table: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def delete_container(self, container_id: int) -> None: + def delete_container(self, container_id: str) -> None: """ Deletes a container with given id. Note that this does not delete the container, but deletes the entry in the metadata database. The container still needs to be removed, e.g. `docker container stop hash` and then @@ -616,7 +616,7 @@ class RestClient: raise ResponseCodeError(f'Failed to delete container: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def get_table_history(self, database_id: int, table_id: int, size: int = 100) -> [History]: + def get_table_history(self, database_id: str, table_id: str, size: int = 100) -> [History]: """ Get the table history of insert/delete operations. @@ -646,7 +646,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get table history: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_views(self, database_id: int) -> List[ViewBrief]: + def get_views(self, database_id: str) -> List[ViewBrief]: """ Gets views of a database with given database id. @@ -667,7 +667,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find views: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_view(self, database_id: int, view_id: int) -> View: + def get_view(self, database_id: str, view_id: str) -> View: """ Get a view of a database with given database id and view id. @@ -692,7 +692,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find view: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def update_view(self, database_id: int, view_id: int, is_public: bool, is_schema_public: bool) -> ViewBrief: + def update_view(self, database_id: str, view_id: str, is_public: bool, is_schema_public: bool) -> ViewBrief: """ Get a view of a database with given database id and view id. @@ -720,7 +720,7 @@ class RestClient: raise ResponseCodeError(f'Failed to update view: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def create_view(self, database_id: int, name: str, query: str, is_public: bool, is_schema_public: bool) -> View: + def create_view(self, database_id: str, name: str, query: str, is_public: bool, is_schema_public: bool) -> View: """ Create a view in a database with given database id. @@ -762,7 +762,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create view: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def delete_view(self, database_id: int, view_id: int) -> None: + def delete_view(self, database_id: str, view_id: str) -> None: """ Deletes a view in a database with given database id and view id. @@ -796,7 +796,7 @@ class RestClient: raise ResponseCodeError(f'Failed to delete view: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def get_view_data(self, database_id: int, view_id: int, page: int = 0, size: int = 10) -> DataFrame: + def get_view_data(self, database_id: str, view_id: str, page: int = 0, size: int = 10) -> DataFrame: """ Get data of a view in a database with given database id and view id. @@ -836,7 +836,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get view data: response code: {response.status_code} is not ' f'200 (OK):{response.text}') - def get_table_data(self, database_id: int, table_id: int, page: int = 0, size: int = 10, + def get_table_data(self, database_id: str, table_id: str, page: int = 0, size: int = 10, timestamp: datetime.datetime = None) -> DataFrame: """ Get data of a table in a database with given database id and table id. @@ -877,7 +877,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get table data: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def create_table_data(self, database_id: int, table_id: int, data: dict) -> None: + def create_table_data(self, database_id: str, table_id: str, data: dict) -> None: """ Insert data into a table in a database with given database id and table id. @@ -907,7 +907,7 @@ class RestClient: raise ResponseCodeError(f'Failed to insert table data: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def import_table_data(self, database_id: int, table_id: int, dataframe: DataFrame) -> None: + def import_table_data(self, database_id: str, table_id: str, dataframe: DataFrame) -> None: """ Import a csv dataset from a file into a table in a database with given database id and table id. ATTENTION: the import is column-ordering sensitive! The csv dataset must have the same columns in the same order as the @@ -1007,7 +1007,7 @@ class RestClient: raise ResponseCodeError(f'Failed to analyse data types: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def analyse_table_statistics(self, database_id: int, table_id: int) -> TableStatistics: + def analyse_table_statistics(self, database_id: str, table_id: str) -> TableStatistics: """ Analyses the numerical contents of a table in a database with given database id and table id. @@ -1039,7 +1039,7 @@ class RestClient: raise ResponseCodeError(f'Failed to analyse table statistics: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def update_table_data(self, database_id: int, table_id: int, data: dict, keys: dict) -> None: + def update_table_data(self, database_id: str, table_id: str, data: dict, keys: dict) -> None: """ Update data in a table in a database with given database id and table id. @@ -1070,7 +1070,7 @@ class RestClient: raise ResponseCodeError(f'Failed to update table data: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def delete_table_data(self, database_id: int, table_id: int, keys: dict) -> None: + def delete_table_data(self, database_id: str, table_id: str, keys: dict) -> None: """ Delete data in a table in a database with given database id and table id. @@ -1100,7 +1100,7 @@ class RestClient: raise ResponseCodeError(f'Failed to delete table data: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def get_table_data_count(self, database_id: int, table_id: int, timestamp: datetime.datetime = None) -> int: + def get_table_data_count(self, database_id: str, table_id: str, timestamp: datetime.datetime = None) -> int: """ Get data count of a table in a database with given database id and table id. @@ -1138,7 +1138,7 @@ class RestClient: raise ResponseCodeError(f'Failed to count table data: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_view_data_count(self, database_id: int, view_id: int) -> int: + def get_view_data_count(self, database_id: str, view_id: str) -> int: """ Get data count of a view in a database with given database id and view id. @@ -1172,7 +1172,7 @@ class RestClient: raise ResponseCodeError(f'Failed to count view data: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_database_access(self, database_id: int) -> AccessType: + def get_database_access(self, database_id: str) -> AccessType: """ Get access of a view in a database with given database id and view id. @@ -1196,7 +1196,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get database access: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def create_database_access(self, database_id: int, user_id: str, type: AccessType) -> AccessType: + def create_database_access(self, database_id: str, user_id: str, type: AccessType) -> AccessType: """ Create access to a database with given database id and user id. @@ -1232,7 +1232,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create database access: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def update_database_access(self, database_id: int, user_id: str, type: AccessType) -> AccessType: + def update_database_access(self, database_id: str, user_id: str, type: AccessType) -> AccessType: """ Updates the access for a user to a database with given database id and user id. @@ -1268,7 +1268,7 @@ class RestClient: raise ResponseCodeError(f'Failed to update database access: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def delete_database_access(self, database_id: int, user_id: str) -> None: + def delete_database_access(self, database_id: str, user_id: str) -> None: """ Deletes the access for a user to a database with given database id and user id. @@ -1300,7 +1300,7 @@ class RestClient: raise ResponseCodeError(f'Failed to delete database access: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def create_subset(self, database_id: int, query: str, page: int = 0, size: int = 10, + def create_subset(self, database_id: str, query: str, page: int = 0, size: int = 10, timestamp: datetime.datetime = None) -> DataFrame: """ Executes a SQL query in a database where the current user has at least read access with given database id. The @@ -1350,7 +1350,7 @@ class RestClient: raise ResponseCodeError(f'Failed to create subset: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def get_subset_data(self, database_id: int, subset_id: int, page: int = 0, size: int = 10) -> DataFrame: + def get_subset_data(self, database_id: str, subset_id: str, page: int = 0, size: int = 10) -> DataFrame: """ Re-executes a query in a database with given database id and query id. @@ -1386,7 +1386,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get query data: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_subset_data_count(self, database_id: int, subset_id: int) -> int: + def get_subset_data_count(self, database_id: str, subset_id: str) -> int: """ Re-executes a query in a database with given database id and query id and only counts the results. @@ -1416,7 +1416,7 @@ class RestClient: raise ResponseCodeError( f'Failed to get query count: response code: {response.status_code} is not 200 (OK)') - def get_subset(self, database_id: int, subset_id: int) -> Query: + def get_subset(self, database_id: str, subset_id: str) -> Query: """ Get query from a database with given database id and query id. @@ -1447,7 +1447,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find subset: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_queries(self, database_id: int) -> List[Query]: + def get_queries(self, database_id: str) -> List[Query]: """ Get queries from a database with given database id. @@ -1474,7 +1474,7 @@ class RestClient: raise ResponseCodeError(f'Failed to find query: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def update_subset(self, database_id: int, subset_id: int, persist: bool) -> Query: + def update_subset(self, database_id: str, subset_id: str, persist: bool) -> Query: """ Save query or mark it for deletion (at a later time) in a database with given database id and query id. @@ -1510,11 +1510,11 @@ class RestClient: raise ResponseCodeError(f'Failed to update query: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def create_identifier(self, database_id: int, type: IdentifierType, titles: List[CreateIdentifierTitle], + def create_identifier(self, database_id: str, type: IdentifierType, titles: List[CreateIdentifierTitle], publisher: str, creators: List[CreateIdentifierCreator], publication_year: int, descriptions: List[CreateIdentifierDescription] = None, funders: List[CreateIdentifierFunder] = None, licenses: List[License] = None, - language: Language = None, subset_id: int = None, view_id: int = None, table_id: int = None, + language: Language = None, subset_id: str = None, view_id: str = None, table_id: str = None, publication_day: int = None, publication_month: int = None, related_identifiers: List[CreateRelatedIdentifier] = None) -> Identifier: """ @@ -1570,11 +1570,11 @@ class RestClient: raise ResponseCodeError(f'Failed to create identifier: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def update_identifier(self, identifier_id: int, database_id: int, type: IdentifierType, + def update_identifier(self, identifier_id: str, database_id: str, type: IdentifierType, titles: List[SaveIdentifierTitle], publisher: str, creators: List[SaveIdentifierCreator], publication_year: int, descriptions: List[SaveIdentifierDescription] = None, funders: List[SaveIdentifierFunder] = None, licenses: List[License] = None, - language: Language = None, subset_id: int = None, view_id: int = None, table_id: int = None, + language: Language = None, subset_id: str = None, view_id: str = None, table_id: str = None, publication_day: int = None, publication_month: int = None, related_identifiers: List[SaveRelatedIdentifier] = None) -> Identifier: """ @@ -1632,7 +1632,7 @@ class RestClient: raise ResponseCodeError(f'Failed to save identifier: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def publish_identifier(self, identifier_id: int) -> Identifier: + def publish_identifier(self, identifier_id: str) -> Identifier: """ Publish an identifier with given id. @@ -1694,8 +1694,8 @@ class RestClient: raise ResponseCodeError(f'Failed to get concepts: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def get_identifiers(self, database_id: int = None, subset_id: int = None, view_id: int = None, - table_id: int = None, type: IdentifierType = None, status: IdentifierStatusType = None) -> List[ + def get_identifiers(self, database_id: str = None, subset_id: str = None, view_id: str = None, + table_id: str = None, type: IdentifierType = None, status: IdentifierStatusType = None) -> List[ Identifier] | str: """ Get list of identifiers, filter by the remaining optional arguments. @@ -1745,7 +1745,7 @@ class RestClient: raise ResponseCodeError(f'Failed to get identifiers: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def update_table_column(self, database_id: int, table_id: int, column_id: int, concept_uri: str = None, + def update_table_column(self, database_id: str, table_id: str, column_id: str, concept_uri: str = None, unit_uri: str = None) -> Column: """ Update semantic information of a table column by given database id and table id and column id. diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 9e042b966d9a452c29625fbc162886fbf89b2cf8..ac071cb412aa4f2b63306f1d8150397188a181fb 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -13,7 +13,7 @@ Timestamp = Annotated[ class Image(BaseModel): - id: int + id: str registry: str name: str version: str @@ -25,15 +25,14 @@ class Image(BaseModel): class ImageBrief(BaseModel): - id: int + id: str name: str version: str - jdbc_method: str class CreateDatabase(BaseModel): name: str - container_id: int + container_id: str is_public: bool is_schema_public: bool @@ -46,7 +45,7 @@ class UpdateView(BaseModel): class CreateContainer(BaseModel): name: str host: str - image_id: int + image_id: str privileged_username: str privileged_password: str ui_host: Optional[str] = None @@ -80,7 +79,7 @@ class UserBrief(BaseModel): class Container(BaseModel): - id: int + id: str name: str internal_name: str host: str @@ -91,7 +90,7 @@ class Container(BaseModel): class ContainerBrief(BaseModel): - id: int + id: str name: str image: ImageBrief internal_name: str @@ -100,18 +99,18 @@ class ContainerBrief(BaseModel): class ColumnBrief(BaseModel): - id: int + id: str name: str - database_id: int - table_id: int + database_id: str + table_id: str internal_name: str type: ColumnType alias: Optional[str] = None class TableBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str description: Optional[str] = None internal_name: str @@ -403,7 +402,7 @@ class IdentifierTitle(BaseModel): """ Title of an identifier. See external documentation: https://support.datacite.org/docs/datacite-metadata-schema-v44-mandatory-properties#3-title. """ - id: int + id: str title: str language: Optional[Language] = None type: Optional[TitleType] = None @@ -416,11 +415,11 @@ class CreateIdentifierTitle(BaseModel): class SaveIdentifierTitle(CreateIdentifierTitle): - id: int + id: str class IdentifierDescription(BaseModel): - id: int + id: str description: str language: Optional[Language] = None type: Optional[DescriptionType] = None @@ -433,11 +432,11 @@ class CreateIdentifierDescription(BaseModel): class SaveIdentifierDescription(CreateIdentifierDescription): - id: int + id: str class IdentifierFunder(BaseModel): - id: int + id: str funder_name: str funder_identifier: Optional[str] = None funder_identifier_type: Optional[str] = None @@ -456,7 +455,7 @@ class CreateIdentifierFunder(BaseModel): class SaveIdentifierFunder(CreateIdentifierFunder): - id: int + id: str class License(BaseModel): @@ -550,7 +549,7 @@ class AffiliationIdentifierSchemeType(str, Enum): class Creator(BaseModel): - id: int + id: str creator_name: str firstname: Optional[str] = None lastname: Optional[str] = None @@ -565,7 +564,7 @@ class Creator(BaseModel): class CreatorBrief(BaseModel): - id: int + id: str creator_name: str affiliation: Optional[str] = None name_type: Optional[str] = None @@ -590,11 +589,11 @@ class CreateIdentifierCreator(BaseModel): class SaveIdentifierCreator(CreateIdentifierCreator): - id: int + id: str class RelatedIdentifier(BaseModel): - id: int + id: str value: str type: RelatedIdentifierType relation: RelatedIdentifierRelation @@ -607,11 +606,11 @@ class CreateRelatedIdentifier(BaseModel): class SaveRelatedIdentifier(CreateRelatedIdentifier): - id: int + id: str class CreateIdentifier(BaseModel): - database_id: int + database_id: str type: IdentifierType creators: List[CreateIdentifierCreator] publication_year: int @@ -622,9 +621,9 @@ class CreateIdentifier(BaseModel): doi: Optional[str] = None language: Optional[str] = None licenses: Optional[List[License]] = field(default_factory=list) - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None query: Optional[str] = None query_normalized: Optional[str] = None execution: Optional[str] = None @@ -636,12 +635,12 @@ class CreateIdentifier(BaseModel): class IdentifierSave(CreateIdentifier): - id: int + id: str class Identifier(BaseModel): - id: int - database_id: int + id: str + database_id: str type: IdentifierType owner: UserBrief status: IdentifierStatusType @@ -654,9 +653,9 @@ class Identifier(BaseModel): doi: Optional[str] = None language: Optional[str] = None licenses: Optional[List[License]] = field(default_factory=list) - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None query: Optional[str] = None query_normalized: Optional[str] = None execution: Optional[str] = None @@ -668,8 +667,8 @@ class Identifier(BaseModel): class IdentifierBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str type: IdentifierType owned_by: str status: IdentifierStatusType @@ -677,14 +676,14 @@ class IdentifierBrief(BaseModel): publisher: str titles: List[IdentifierTitle] doi: Optional[str] = None - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None class View(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str query: str query_hash: str @@ -711,8 +710,8 @@ class History(BaseModel): class ViewBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str internal_name: str is_public: bool @@ -724,7 +723,7 @@ class ViewBrief(BaseModel): class ConceptBrief(BaseModel): - id: int + id: str uri: str name: Optional[str] = None description: Optional[str] = None @@ -759,7 +758,7 @@ class TableStatistics(BaseModel): class UnitBrief(BaseModel): - id: int + id: str uri: str name: Optional[str] = None description: Optional[str] = None @@ -920,12 +919,12 @@ class IdentifierType(str, Enum): class Query(BaseModel): - id: int + id: str owner: UserBrief execution: Timestamp query: str type: QueryType - database_id: int + database_id: str query_hash: str is_persisted: bool result_hash: str @@ -957,10 +956,10 @@ class DataType(BaseModel): class Column(BaseModel): - id: int + id: str name: str - database_id: int - table_id: int + database_id: str + table_id: str ord: int internal_name: str is_null_allowed: bool @@ -986,10 +985,10 @@ class Column(BaseModel): class ViewColumn(BaseModel): - id: int + id: str name: str ord: int - database_id: int + database_id: str internal_name: str type: ColumnType is_null_allowed: bool @@ -1005,8 +1004,8 @@ class ViewColumn(BaseModel): class Table(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str owner: UserBrief columns: List[Column] @@ -1027,7 +1026,7 @@ class Table(BaseModel): class DatabaseBrief(BaseModel): - id: int + id: str name: str contact: UserBrief owner_id: str @@ -1040,7 +1039,7 @@ class DatabaseBrief(BaseModel): class Database(BaseModel): - id: int + id: str name: str owner: UserBrief contact: UserBrief @@ -1060,13 +1059,13 @@ class Database(BaseModel): class Unique(BaseModel): - id: int + id: str table: TableBrief columns: List[ColumnBrief] class ForeignKeyReference(BaseModel): - id: int + id: str foreign_key: ForeignKeyBrief column: ColumnBrief referenced_column: ColumnBrief @@ -1084,11 +1083,11 @@ class ReferenceType(str, Enum): class ForeignKeyBrief(BaseModel): - id: int + id: str class ForeignKey(BaseModel): - id: int + id: str name: str references: List[ForeignKeyReference] table: TableBrief @@ -1106,7 +1105,7 @@ class CreateForeignKey(BaseModel): class PrimaryKey(BaseModel): - id: int + id: str table: TableBrief column: ColumnBrief diff --git a/lib/python/docs/index.rst b/lib/python/docs/index.rst index 8951bf165f7c5738843ccdcb011c8b932f1531e5..511a08b52d559b8dc252e593dd69c692aacabf6c 100644 --- a/lib/python/docs/index.rst +++ b/lib/python/docs/index.rst @@ -6,7 +6,7 @@ Pandas `DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame provides an object-oriented API as well as low-level access to DBRepo services. .. note:: - The SDK has been implemented and documented for DBRepo version 1.6.5, earlier versions may be supported but are not tested for compatibility. + The SDK has been implemented and documented for DBRepo version 1.7.0, earlier versions may be supported but are not tested for compatibility. Quickstart ---------- diff --git a/lib/python/pyproject.toml b/lib/python/pyproject.toml index cbebfbc8a90c462e808d50def00390739c217b80..49b9bbb1b7e166bff6f58533fbd879559485e239 100644 --- a/lib/python/pyproject.toml +++ b/lib/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dbrepo" -version = "1.6.5" +version = "1.7.0" description = "DBRepo Python Library" keywords = [ "DBRepo", @@ -34,7 +34,7 @@ requires = [ build-backend = "setuptools.build_meta" [project.urls] -Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/" +Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/" Documentation = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/python/" Issues = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues" Source = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/" \ No newline at end of file diff --git a/lib/python/setup.py b/lib/python/setup.py index 19600afc0be83a18d00fff7a75cc082bb73408c1..4fff48185b04734932caad08d4aa06583730a52f 100644 --- a/lib/python/setup.py +++ b/lib/python/setup.py @@ -2,9 +2,9 @@ from distutils.core import setup setup(name="dbrepo", - version="1.6.5", + version="1.7.0", description="A library for communicating with DBRepo", - url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/", + url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/", author="Martin Weise", license="Apache-2.0", author_email="martin.weise@tuwien.ac.at", diff --git a/lib/python/tests/test_unit_concept.py b/lib/python/tests/test_unit_concept.py index 54104dada8b1a69eb4ca61d8aede1ecd9a6a3956..75f8aa52387ee2de10d673fdd298135d8a0880b1 100644 --- a/lib/python/tests/test_unit_concept.py +++ b/lib/python/tests/test_unit_concept.py @@ -11,7 +11,7 @@ class ContainerUnitTest(unittest.TestCase): def test_get_concepts_succeeds(self): with requests_mock.Mocker() as mock: - exp = [ConceptBrief(id=1, + exp = [ConceptBrief(id="65586aef-f5b0-446f-b2e1-9dc2a3c0c359", uri="http://dbpedia.org/page/Category:Precipitation", name="Precipitation")] # mock diff --git a/lib/python/tests/test_unit_container.py b/lib/python/tests/test_unit_container.py index 2edc65bf1983aa836eae6475918a990ae19611a6..1faf4ec738ff689d56ec6fcf84932767ad68379c 100644 --- a/lib/python/tests/test_unit_container.py +++ b/lib/python/tests/test_unit_container.py @@ -12,12 +12,12 @@ class ContainerUnitTest(unittest.TestCase): def test_create_container_succeeds(self): with requests_mock.Mocker() as mock: - exp = Container(id=1, + exp = Container(id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name="MariaDB 10.11.3", internal_name="mariadb_10_11_3", host="data-db", port=12345, - image=Image(id=1, + image=Image(id="b104648b-54d2-4d72-9834-8e0e6d428b39", registry="docker.io", name="mariadb", version="10.11.3", @@ -33,7 +33,8 @@ class ContainerUnitTest(unittest.TestCase): mock.post('/api/container', json=exp.model_dump(), status_code=201) # test response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -42,7 +43,8 @@ class ContainerUnitTest(unittest.TestCase): def test_create_container_anonymous_fails(self): # test try: - response = RestClient().create_container(name='MariaDB 10.11.3', host='data-db2', image_id=1, + response = RestClient().create_container(name='MariaDB 10.11.3', host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) except AuthenticationError: @@ -55,7 +57,8 @@ class ContainerUnitTest(unittest.TestCase): # test try: response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -69,7 +72,8 @@ class ContainerUnitTest(unittest.TestCase): # test try: response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -83,7 +87,8 @@ class ContainerUnitTest(unittest.TestCase): # test try: response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -97,7 +102,8 @@ class ContainerUnitTest(unittest.TestCase): # test try: response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -111,7 +117,8 @@ class ContainerUnitTest(unittest.TestCase): # test try: response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3', - host='data-db2', image_id=1, + host='data-db2', + image_id="b104648b-54d2-4d72-9834-8e0e6d428b39", privileged_username='root', privileged_password='dbrepo', port=3306) @@ -129,14 +136,13 @@ class ContainerUnitTest(unittest.TestCase): def test_get_containers_succeeds(self): with requests_mock.Mocker() as mock: exp = [ - ContainerBrief(id=1, + ContainerBrief(id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name="MariaDB 10.11.3", internal_name="mariadb_10_11_3", running=True, - image=ImageBrief(id=1, + image=ImageBrief(id="b104648b-54d2-4d72-9834-8e0e6d428b39", name="mariadb", - version="10.11.3", - jdbc_method="mariadb"), + version="10.11.3"), hash="f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50") ] # mock @@ -157,12 +163,12 @@ class ContainerUnitTest(unittest.TestCase): def test_get_container_succeeds(self): with requests_mock.Mocker() as mock: - exp = Container(id=1, + exp = Container(id="", name="MariaDB 10.11.3", internal_name="mariadb_10_11_3", host="data-db", port=12345, - image=Image(id=1, + image=Image(id="b104648b-54d2-4d72-9834-8e0e6d428b39", registry="docker.io", name="mariadb", version="10.11.3", @@ -175,82 +181,87 @@ class ContainerUnitTest(unittest.TestCase): documentation="https://mariadb.com/kb/en/bigint/", is_quoted=False, is_buildable=True)])) # mock - mock.get('/api/container/1', json=exp.model_dump()) + mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', json=exp.model_dump()) # test - response = RestClient().get_container(container_id=1) + response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") self.assertEqual(exp, response) def test_get_container_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/container/1', status_code=404) + mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=404) # test try: - response = RestClient().get_container(container_id=1) + response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except NotExistsError: pass def test_get_container_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/container/1', status_code=401) + mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=401) # test try: - response = RestClient().get_container(container_id=1) + response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except ResponseCodeError: pass def test_delete_container_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/container/1', status_code=202) + mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=202) # test - RestClient(username='foo', password='bar').delete_container(container_id=1) + RestClient(username='foo', password='bar').delete_container( + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") def test_delete_container_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/container/1', status_code=400) + mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=400) # test try: - RestClient(username='foo', password='bar').delete_container(container_id=1) + RestClient(username='foo', password='bar').delete_container( + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except MalformedError: pass def test_delete_container_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/container/1', status_code=403) + mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=403) # test try: - RestClient(username='foo', password='bar').delete_container(container_id=1) + RestClient(username='foo', password='bar').delete_container( + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except ForbiddenError: pass def test_delete_container_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/container/1', status_code=404) + mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=404) # test try: - RestClient(username='foo', password='bar').delete_container(container_id=1) + RestClient(username='foo', password='bar').delete_container( + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except NotExistsError: pass def test_delete_container_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/container/1', status_code=200) + mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=200) # test try: - RestClient(username='foo', password='bar').delete_container(container_id=1) + RestClient(username='foo', password='bar').delete_container( + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except ResponseCodeError: pass def test_delete_container_anonymous_fails(self): # test try: - RestClient().delete_container(container_id=1) + RestClient().delete_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74") except AuthenticationError: pass diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index 952b27c61f844e52df9249d386fe900c5099fbc1..3fd7ddcd60a7c78db0bfdacdef471db19361d53e 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -22,7 +22,7 @@ class DatabaseUnitTest(unittest.TestCase): def test_get_databases_succeeds(self): exp = [ DatabaseBrief( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16', contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -68,7 +68,7 @@ class DatabaseUnitTest(unittest.TestCase): def test_get_database_succeeds(self): exp = Database( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -77,57 +77,56 @@ class DatabaseUnitTest(unittest.TestCase): is_public=True, is_schema_public=True, container=ContainerBrief( - id=1, + id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name='MariaDB Galera 11.1.3', internal_name='mariadb', image=ImageBrief( - id=1, + id="b104648b-54d2-4d72-9834-8e0e6d428b39", name='mariadb', - version='11.2.2', - jdbc_method='mariadb' + version='11.2.2' ) ) ) with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1', json=exp.model_dump()) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', json=exp.model_dump()) # test - response = RestClient().get_database(1) + response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_get_database_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=403) # test try: - response = RestClient().get_database(1) + response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError as e: pass def test_get_database_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=404) # test try: - response = RestClient().get_database(1) + response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError as e: pass def test_get_database_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=202) # test try: - response = RestClient().get_database(1) + response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError as e: pass def test_create_database_succeeds(self): exp = Database( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -136,14 +135,13 @@ class DatabaseUnitTest(unittest.TestCase): is_public=True, is_schema_public=True, container=ContainerBrief( - id=1, + id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name='MariaDB Galera 11.1.3', internal_name='mariadb', image=ImageBrief( - id=1, + id="b104648b-54d2-4d72-9834-8e0e6d428b39", name='mariadb', - version='11.2.2', - jdbc_method='mariadb' + version='11.2.2' ) ) ) @@ -152,7 +150,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', json=exp.model_dump(), status_code=201) # test client = RestClient(username="a", password="b") - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) self.assertEqual(response.name, 'test') @@ -162,7 +161,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=400) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except MalformedError as e: pass @@ -173,7 +173,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=403) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except ForbiddenError as e: pass @@ -184,7 +185,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=404) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except NotExistsError as e: pass @@ -195,7 +197,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=409) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except QueryStoreError as e: pass @@ -206,7 +209,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=502) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except ServiceConnectionError as e: pass @@ -217,7 +221,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=503) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except ServiceError as e: pass @@ -228,7 +233,8 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=202) # test try: - response = RestClient(username="a", password="b").create_database(name='test', container_id=1, + response = RestClient(username="a", password="b").create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", is_public=True) except ResponseCodeError as e: pass @@ -239,13 +245,15 @@ class DatabaseUnitTest(unittest.TestCase): mock.post('/api/database', status_code=404) # test try: - response = RestClient().create_database(name='test', container_id=1, is_public=True) + response = RestClient().create_database(name='test', + container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", + is_public=True) except AuthenticationError as e: pass def test_update_database_visibility_succeeds(self): exp = Database( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -254,33 +262,34 @@ class DatabaseUnitTest(unittest.TestCase): is_public=True, is_schema_public=True, container=ContainerBrief( - id=1, + id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name='MariaDB Galera 11.1.3', internal_name='mariadb', image=ImageBrief( - id=1, + id="b104648b-54d2-4d72-9834-8e0e6d428b39", name='mariadb', - version='11.2.2', - jdbc_method='mariadb' + version='11.2.2' ) ) ) with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', json=exp.model_dump(), status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', json=exp.model_dump(), + status_code=202) # test client = RestClient(username="a", password="b") - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, is_public=True, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + is_public=True, is_schema_public=True) self.assertEqual(response.is_public, True) def test_update_database_visibility_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=400) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except MalformedError: @@ -289,10 +298,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=403) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except ForbiddenError: @@ -301,10 +310,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=404) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except NotExistsError: @@ -313,10 +322,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=502) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=502) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except ServiceConnectionError: @@ -325,10 +334,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=503) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except ServiceError: @@ -337,10 +346,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/visibility', status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=200) # test try: - response = RestClient(username="a", password="b").update_database_visibility(database_id=1, + response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except ResponseCodeError: @@ -349,13 +358,13 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_visibility_anonymous_fails(self): # test try: - response = RestClient().update_database_visibility(database_id=1, is_public=True, is_schema_public=True) + response = RestClient().update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True) except AuthenticationError: pass def test_update_database_owner_succeeds(self): exp = Database( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -364,33 +373,32 @@ class DatabaseUnitTest(unittest.TestCase): is_public=True, is_schema_public=True, container=ContainerBrief( - id=1, + id="44d811a8-4019-46ba-bd57-ea10a2eb0c74", name='MariaDB Galera 11.1.3', internal_name='mariadb', image=ImageBrief( - id=1, + id="b104648b-54d2-4d72-9834-8e0e6d428b39", name='mariadb', - version='11.2.2', - jdbc_method='mariadb' + version='11.2.2' ) ) ) with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', json=exp.model_dump(), status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', json=exp.model_dump(), status_code=202) # test client = RestClient(username="a", password="b") - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') self.assertEqual(response.owner.id, 'abdbf897-e599-4e5a-a3f0-7529884ea011') def test_update_database_owner_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=400) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except MalformedError: pass @@ -398,10 +406,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=403) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ForbiddenError: pass @@ -409,10 +417,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=404) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except NotExistsError: pass @@ -420,10 +428,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=502) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=502) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceConnectionError: pass @@ -431,10 +439,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=503) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceError: pass @@ -442,10 +450,10 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=200) # test try: - response = RestClient(username="a", password="b").update_database_owner(database_id=1, + response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ResponseCodeError: pass @@ -453,17 +461,17 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_owner_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/owner', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=404) # test try: - response = RestClient().update_database_owner(database_id=1, + response = RestClient().update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except AuthenticationError: pass def test_update_database_schema_succeeds(self): exp = DatabaseBrief( - id=1, + id="6bd39359-b154-456d-b9c2-caa516a45732", name='test', owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16', contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), @@ -473,142 +481,142 @@ class DatabaseUnitTest(unittest.TestCase): ) with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json=exp.model_dump()) - mock.put('/api/database/1/metadata/view', json=exp.model_dump()) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json=exp.model_dump()) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', json=exp.model_dump()) # test - response = RestClient(username='foo', password='bar').update_database_schema(database_id=1) + response = RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_update_database_schema_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=400) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except MalformedError: pass def test_update_database_schema_view_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=400) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except MalformedError: pass def test_update_database_schema_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=403) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError: pass def test_update_database_schema_view_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=403) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError: pass def test_update_database_schema_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=404) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_update_database_schema_view_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=404) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_update_database_schema_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=502) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=502) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ServiceConnectionError: pass def test_update_database_schema_view_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=502) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=502) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ServiceConnectionError: pass def test_update_database_schema_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=503) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ServiceError: pass def test_update_database_schema_view_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=503) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ServiceError: pass def test_update_database_schema_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=202) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass def test_update_database_schema_view_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/metadata/table', json={}, status_code=200) - mock.put('/api/database/1/metadata/view', status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=202) # test try: - RestClient(username='foo', password='bar').update_database_schema(database_id=1) + RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass def test_update_database_schema_anonymous_fails(self): # test try: - RestClient().update_database_schema(database_id=1) + RestClient().update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except AuthenticationError: pass @@ -617,38 +625,38 @@ class DatabaseUnitTest(unittest.TestCase): user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/access', json=exp.model_dump()) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', json=exp.model_dump()) # test - response = RestClient().get_database_access(database_id=1) + response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(response, AccessType.READ) def test_get_database_access_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/access', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=403) # test try: - response = RestClient().get_database_access(database_id=1) + response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError: pass def test_get_database_access_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/access', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=404) # test try: - response = RestClient().get_database_access(database_id=1) + response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_get_database_access_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/access', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=202) # test try: - response = RestClient().get_database_access(database_id=1) + response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass @@ -657,10 +665,11 @@ class DatabaseUnitTest(unittest.TestCase): user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(), + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + json=exp.model_dump(), status_code=202) # test - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') self.assertEqual(response, exp.type) @@ -668,10 +677,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=400) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except MalformedError: @@ -680,10 +690,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=400) # test try: - response = RestClient().create_database_access(database_id=1, type=AccessType.READ, + response = RestClient().create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except AuthenticationError: pass @@ -691,10 +702,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=403) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ForbiddenError: @@ -703,10 +715,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=404) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except NotExistsError: @@ -715,10 +728,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=502) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceConnectionError: @@ -727,10 +741,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=503) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceError: @@ -739,10 +754,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=200) # test try: - response = RestClient(username="a", password="b").create_database_access(database_id=1, + response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ResponseCodeError: @@ -753,10 +769,11 @@ class DatabaseUnitTest(unittest.TestCase): user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(), + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + json=exp.model_dump(), status_code=202) # test - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') self.assertEqual(response, exp.type) @@ -764,10 +781,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=400) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except MalformedError: @@ -776,10 +794,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=403) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ForbiddenError: @@ -788,10 +807,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=404) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except NotExistsError: @@ -800,10 +820,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=502) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceConnectionError: @@ -812,10 +833,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=503) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceError: @@ -824,10 +846,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=200) # test try: - response = RestClient(username="a", password="b").update_database_access(database_id=1, + response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ResponseCodeError: @@ -836,10 +859,11 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=404) # test try: - response = RestClient().update_database_access(database_id=1, type=AccessType.READ, + response = RestClient().update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except AuthenticationError: pass @@ -847,19 +871,23 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=202) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=202) # test client = RestClient(username="a", password="b") - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') def test_delete_database_access_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=400) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except MalformedError: pass @@ -867,10 +895,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=403) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ForbiddenError: pass @@ -878,10 +908,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=404) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except NotExistsError: pass @@ -889,10 +921,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=502) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceConnectionError: pass @@ -900,10 +934,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=503) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ServiceError: pass @@ -911,10 +947,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=200) # test try: - RestClient(username="a", password="b").delete_database_access(database_id=1, + RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except ResponseCodeError: pass @@ -922,10 +960,12 @@ class DatabaseUnitTest(unittest.TestCase): def test_delete_database_access_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011', + status_code=404) # test try: - RestClient().delete_database_access(database_id=1, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') + RestClient().delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011') except AuthenticationError: pass diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py index 36630e3df00559aea6a5ac43bd0c18fe10e6b648..6509bcac5a3e9e20a13bf25f67c86b2196712517 100644 --- a/lib/python/tests/test_unit_identifier.py +++ b/lib/python/tests/test_unit_identifier.py @@ -16,20 +16,26 @@ class IdentifierUnitTest(unittest.TestCase): def test_create_identifier_succeeds(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="ffaf9e0c-c37d-4655-bd68-80cd991cf24c", + title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232", + creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock @@ -37,7 +43,7 @@ class IdentifierUnitTest(unittest.TestCase): # test client = RestClient(username="a", password="b") response = client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, @@ -57,7 +63,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -73,7 +79,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -89,7 +95,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -105,7 +111,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -121,7 +127,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -137,7 +143,7 @@ class IdentifierUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") client.create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -149,7 +155,7 @@ class IdentifierUnitTest(unittest.TestCase): # test try: RestClient().create_identifier( - database_id=1, type=IdentifierType.VIEW, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, titles=[CreateIdentifierTitle(title='Test Title')], descriptions=[CreateIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, @@ -159,26 +165,33 @@ class IdentifierUnitTest(unittest.TestCase): def test_get_identifiers_view_succeeds(self): with requests_mock.Mocker() as mock: - exp = [Identifier(id=10, - database_id=1, - view_id=32, + exp = [Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], - related_identifiers=[RelatedIdentifier(id=7, value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232", + creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))] # mock mock.get('/api/identifiers', json=[exp[0].model_dump()], headers={"Accept": "application/json"}) # test - response = RestClient().get_identifiers(database_id=1, view_id=32, type=IdentifierType.VIEW, + response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", + type=IdentifierType.VIEW, status=IdentifierStatusType.PUBLISHED) self.assertEqual(exp, response) @@ -188,7 +201,8 @@ class IdentifierUnitTest(unittest.TestCase): # mock mock.get('/api/identifiers', json=[], headers={"Accept": "application/json"}) # test - response = RestClient().get_identifiers(database_id=1, subset_id=2) + response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="0831bf54-9dd9-46fe-8c2c-c539332ea177") self.assertEqual(exp, response) def test_get_identifiers_table_succeeds(self): @@ -197,27 +211,28 @@ class IdentifierUnitTest(unittest.TestCase): # mock mock.get('/api/identifiers', json=[], headers={"Accept": "application/json"}) # test - response = RestClient().get_identifiers(database_id=1, table_id=3) + response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") self.assertEqual(exp, response) def test_get_identifiers_view_param_database_fails(self): # test try: - RestClient().get_identifiers(view_id=1) + RestClient().get_identifiers(view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c") except RequestError: pass def test_get_identifiers_subset_param_database_fails(self): # test try: - RestClient().get_identifiers(subset_id=1) + RestClient().get_identifiers(subset_id="0831bf54-9dd9-46fe-8c2c-c539332ea177") except RequestError: pass def test_get_identifiers_table_param_database_fails(self): # test try: - RestClient().get_identifiers(table_id=1) + RestClient().get_identifiers(table_id="b3230b86-4743-498d-9015-3fad58049692") except RequestError: pass @@ -253,62 +268,78 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_succeeds(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232", + creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10', json=exp.model_dump(), status_code=202) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', json=exp.model_dump(), status_code=202) # test client = RestClient(username="a", password="b") - response = client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + response = client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, - creator_name='Carberry, Josiah')]) + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[ + SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", + creator_name='Carberry, Josiah')]) self.assertEqual(exp, response) def test_update_identifier_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=400) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=400) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except MalformedError: pass @@ -316,23 +347,27 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=403) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=403) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except ForbiddenError: pass @@ -340,23 +375,27 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=404) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=404) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except NotExistsError: pass @@ -364,23 +403,27 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=502) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=502) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except ServiceConnectionError: pass @@ -388,23 +431,27 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=503) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=503) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except ServiceError: pass @@ -412,23 +459,27 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/identifier/10', status_code=200) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=200) # test client = RestClient(username="a", password="b") try: - client.update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except ResponseCodeError: pass @@ -436,208 +487,239 @@ class IdentifierUnitTest(unittest.TestCase): def test_update_identifier_anonymous_fails(self): # test try: - RestClient().update_identifier(identifier_id=10, - database_id=1, type=IdentifierType.VIEW, - titles=[SaveIdentifierTitle(id=10, title='Test Title')], + RestClient().update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW, + titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[SaveIdentifierFunder(id=2, funder_name='FWF')], - related_identifiers=[SaveRelatedIdentifier(id=2, - value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[SaveIdentifierDescription(id=2, - description='Test Description')], - creators=[SaveIdentifierCreator(id=30, + funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", + funder_name='FWF')], + related_identifiers=[ + SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", + value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[ + SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260", creator_name='Carberry, Josiah')]) except AuthenticationError: pass def test_publish_identifier_succeeds(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=202) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=202) # test client = RestClient(username="a", password="b") - response = client.publish_identifier(identifier_id=10) + response = client.publish_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") self.assertEqual(exp, response) def test_publish_identifier_400_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=400) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=400) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except MalformedError: pass def test_publish_identifier_403_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=403) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=403) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except ForbiddenError: pass def test_publish_identifier_404_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=404) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=404) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except NotExistsError: pass def test_publish_identifier_502_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=502) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=502) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except ServiceConnectionError: pass def test_publish_identifier_503_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=503) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=503) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except ServiceError: pass def test_publish_identifier_unknown_fails(self): with requests_mock.Mocker() as mock: - exp = Identifier(id=10, - database_id=1, - view_id=32, + exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c", publication_year=2024, publisher='TU Wien', type=IdentifierType.VIEW, language=Language.EN, - descriptions=[IdentifierDescription(id=2, description='Test Description')], - titles=[IdentifierTitle(id=3, title='Test Title')], - funders=[IdentifierFunder(id=4, funder_name='FWF')], + descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b", + description='Test Description')], + titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')], + funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')], related_identifiers=[ - RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, + RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[Creator(id=5, creator_name='Carberry, Josiah')], + creators=[ + Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock - mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=200) + mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=200) # test try: - RestClient(username="a", password="b").publish_identifier(identifier_id=10) + RestClient(username="a", password="b").publish_identifier( + identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except ResponseCodeError: pass def test_publish_identifier_anonymous_fails(self): # test try: - RestClient().publish_identifier(identifier_id=10) + RestClient().publish_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3") except AuthenticationError: pass diff --git a/lib/python/tests/test_unit_query.py b/lib/python/tests/test_unit_query.py index 415a35b86ce3f2e44d517506cf0fe70644ad5659..fb23a3c9491305e6be650c81c1566a985d6c9f04 100644 --- a/lib/python/tests/test_unit_query.py +++ b/lib/python/tests/test_unit_query.py @@ -18,10 +18,11 @@ class QueryUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.post('/api/database/1/subset', json=json.dumps(exp), headers={'X-Id': '1'}, status_code=201) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=json.dumps(exp), + headers={'X-Id': '1'}, status_code=201) # test client = RestClient(username="a", password="b") - response = client.create_subset(database_id=1, page=0, size=10, + response = client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", page=0, size=10, timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query="SELECT id, username FROM some_table WHERE id IN (1,2)") self.assertTrue(DataFrame.equals(df, response)) @@ -29,11 +30,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=400) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=400) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except MalformedError: pass @@ -41,11 +42,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=403) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=403) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except ForbiddenError: pass @@ -53,11 +54,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=404) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=404) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except NotExistsError: pass @@ -65,11 +66,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_417_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=417) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=417) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except QueryStoreError: pass @@ -77,11 +78,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_501_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=501) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=501) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except FormatNotAvailable: pass @@ -89,11 +90,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=503) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=503) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except ServiceError: pass @@ -101,11 +102,11 @@ class QueryUnitTest(unittest.TestCase): def test_create_subset_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/subset', status_code=200) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=200) # test try: client = RestClient(username="a", password="b") - client.create_subset(database_id=1, + client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", query="SELECT id, username FROM some_table WHERE id IN (1,2)") except ResponseCodeError: pass @@ -115,81 +116,94 @@ class QueryUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.post('/api/database/1/subset', json=json.dumps(exp), headers={'X-Id': '1'}, status_code=201) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=json.dumps(exp), + headers={'X-Id': '1'}, status_code=201) # test client = RestClient() - response = client.create_subset(database_id=1, page=0, size=10, + response = client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", page=0, size=10, query="SELECT id, username FROM some_table WHERE id IN (1,2)") self.assertTrue(DataFrame.equals(df, response)) def test_get_subset_succeeds(self): with requests_mock.Mocker() as mock: - exp = Query(id=6, + exp = Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query='SELECT id, username FROM some_table WHERE id IN (1,2)', query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)', type=QueryType.QUERY, - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8', result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4', is_persisted=False, result_number=None, identifiers=[]) # mock - mock.get('/api/database/1/subset/6', json=exp.model_dump()) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + json=exp.model_dump()) # test - response = RestClient().get_subset(database_id=1, subset_id=6) + response = RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") self.assertEqual(exp, response) def test_get_subset_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=403) # test try: - RestClient().get_subset(database_id=1, subset_id=6) + RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ForbiddenError: pass def test_get_subset_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=404) # test try: - RestClient().get_subset(database_id=1, subset_id=6) + RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except NotExistsError: pass def test_get_subset_406_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6', status_code=406) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=406) # test try: - RestClient().get_subset(database_id=1, subset_id=6) + RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except FormatNotAvailable: pass def test_get_subset_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6', status_code=503) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=503) # test try: - RestClient().get_subset(database_id=1, subset_id=6) + RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ServiceError: pass def test_get_subset_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=202) # test try: - RestClient().get_subset(database_id=1, subset_id=6) + RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ResponseCodeError: pass @@ -197,156 +211,180 @@ class QueryUnitTest(unittest.TestCase): with requests_mock.Mocker() as mock: exp = [] # mock - mock.get('/api/database/1/subset', json=[]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=[]) # test - response = RestClient().get_queries(database_id=1) + response = RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_update_subset_succeeds(self): with requests_mock.Mocker() as mock: - exp = Query(id=6, + exp = Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query='SELECT id, username FROM some_table WHERE id IN (1,2)', query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)', type=QueryType.QUERY, - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8', result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4', is_persisted=True, result_number=None, identifiers=[]) # mock - mock.put('/api/database/1/subset/6', json=exp.model_dump(), status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + json=exp.model_dump(), + status_code=202) # test - response = RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, - persist=True) + response = RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", + persist=True) self.assertEqual(exp, response) def test_update_subset_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=400) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=400) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True) except MalformedError: pass def test_update_subset_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=403) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True) except ForbiddenError: pass def test_update_subset_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=404) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True) except NotExistsError: pass def test_update_subset_417_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=417) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=417) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True) except QueryStoreError: pass def test_update_subset_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=503) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=503) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True) except ServiceError: pass def test_update_subset_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/subset/6', status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939', + status_code=200) # test try: - RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True) + RestClient(username='foo', password='bar').update_subset( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", + persist=True) except ResponseCodeError: pass def test_update_subset_anonymous_fails(self): # test try: - RestClient().update_subset(database_id=1, subset_id=6, persist=True) + RestClient().update_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", + persist=True) except AuthenticationError: pass def test_get_queries_succeeds(self): with requests_mock.Mocker() as mock: - exp = [Query(id=6, + exp = [Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query='SELECT id, username FROM some_table WHERE id IN (1,2)', query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)', type=QueryType.QUERY, - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8', result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4', is_persisted=False, result_number=None, identifiers=[])] # mock - mock.get('/api/database/1/subset', json=[exp[0].model_dump()]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=[exp[0].model_dump()]) # test - response = RestClient().get_queries(database_id=1) + response = RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_get_queries_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=403) # test try: - RestClient().get_queries(database_id=1) + RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError: pass def test_get_queries_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=404) # test try: - RestClient().get_queries(database_id=1) + RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_get_queries_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset', status_code=503) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=503) # test try: - RestClient().get_queries(database_id=1) + RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ServiceError: pass def test_get_queries_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=202) # test try: - RestClient().get_queries(database_id=1) + RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass @@ -355,9 +393,12 @@ class QueryUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/subset/6/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + json=json.dumps(exp)) # test - response = RestClient().get_subset_data(database_id=1, subset_id=6) + response = RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") self.assertTrue(DataFrame.equals(df, response)) def test_get_subset_data_dataframe_succeeds(self): @@ -365,59 +406,77 @@ class QueryUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/subset/6/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + json=json.dumps(exp)) # test - response = RestClient().get_subset_data(database_id=1, subset_id=6) + response = RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") self.assertEqual(df.shape, response.shape) self.assertTrue(DataFrame.equals(df, response)) def test_get_subset_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6/data', status_code=400) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=400) # test try: - RestClient().get_subset_data(database_id=1, subset_id=6) + RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except MalformedError: pass def test_get_subset_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6/data', status_code=403) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=403) # test try: - RestClient().get_subset_data(database_id=1, subset_id=6) + RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ForbiddenError: pass def test_get_subset_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6/data', status_code=404) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=404) # test try: - RestClient().get_subset_data(database_id=1, subset_id=6) + RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except NotExistsError: pass def test_get_subset_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6/data', status_code=503) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=503) # test try: - RestClient().get_subset_data(database_id=1, subset_id=6) + RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ServiceError: pass def test_get_subset_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/subset/6/data', status_code=202) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=202) # test try: - RestClient().get_subset_data(database_id=1, subset_id=6) + RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ResponseCodeError: pass @@ -425,58 +484,76 @@ class QueryUnitTest(unittest.TestCase): with requests_mock.Mocker() as mock: exp = 2 # mock - mock.head('/api/database/1/subset/6/data', headers={'X-Count': str(exp)}) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + headers={'X-Count': str(exp)}) # test - response = RestClient().get_subset_data_count(database_id=1, subset_id=6) + response = RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") self.assertEqual(exp, response) def test_get_subset_data_count_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/subset/6/data', status_code=400) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=400) # test try: - RestClient().get_subset_data_count(database_id=1, subset_id=6) + RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except MalformedError: pass def test_get_subset_data_count_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/subset/6/data', status_code=403) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=403) # test try: - RestClient().get_subset_data_count(database_id=1, subset_id=6) + RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ForbiddenError: pass def test_get_subset_data_count_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/subset/6/data', status_code=404) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=404) # test try: - RestClient().get_subset_data_count(database_id=1, subset_id=6) + RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except NotExistsError: pass def test_get_subset_data_count_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/subset/6/data', status_code=503) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=503) # test try: - RestClient().get_subset_data_count(database_id=1, subset_id=6) + RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ServiceError: pass def test_get_subset_data_count_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/subset/6/data', status_code=202) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data', + status_code=202) # test try: - RestClient().get_subset_data_count(database_id=1, subset_id=6) + RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939") except ResponseCodeError: pass diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py index 3518439b8c4166d9fe2b891b095ca7086ddef7c2..a5632f4237f2ab9a34b111e5168cebe7fc084ef6 100644 --- a/lib/python/tests/test_unit_table.py +++ b/lib/python/tests/test_unit_table.py @@ -15,8 +15,8 @@ from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError class TableUnitTest(unittest.TestCase): def test_create_table_succeeds(self): - exp = TableBrief(id=2, - database_id=1, + exp = TableBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", description="Test Table", internal_name="test", @@ -26,10 +26,12 @@ class TableUnitTest(unittest.TestCase): is_schema_public=True) with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', json=exp.model_dump(), status_code=201) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=exp.model_dump(), + status_code=201) # test client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) self.assertEqual(exp, response) @@ -37,11 +39,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=400) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=400) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except MalformedError: @@ -50,10 +53,11 @@ class TableUnitTest(unittest.TestCase): def test_create_table_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=403) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=403) # test try: - RestClient(username="a", password="b").create_table(database_id=1, name="Test", + RestClient(username="a", password="b").create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + name="Test", description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) @@ -63,11 +67,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=404) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=404) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except NotExistsError: @@ -76,11 +81,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_409_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=409) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=409) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except NameExistsError: @@ -89,11 +95,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=502) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=502) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except ServiceConnectionError: @@ -102,11 +109,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=503) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=503) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except ServiceError: @@ -115,11 +123,12 @@ class TableUnitTest(unittest.TestCase): def test_create_table_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=200) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=200) # test try: client = RestClient(username="a", password="b") - response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except ResponseCodeError: @@ -128,10 +137,11 @@ class TableUnitTest(unittest.TestCase): def test_create_table_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table', status_code=409) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=409) # test try: - response = RestClient().create_table(database_id=1, name="Test", description="Test Table", columns=[], + response = RestClient().create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test", + description="Test Table", columns=[], is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except AuthenticationError: @@ -140,64 +150,64 @@ class TableUnitTest(unittest.TestCase): def test_get_tables_empty_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table', json=[]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=[]) # test - response = RestClient().get_tables(database_id=1) + response = RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual([], response) def test_get_tables_succeeds(self): with requests_mock.Mocker() as mock: - exp = [TableBrief(id=2, + exp = [TableBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", name="Test", description="Test Table", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", internal_name="test", is_public=True, is_schema_public=True, owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16', is_versioned=True)] # mock - mock.get('/api/database/1/table', json=[exp[0].model_dump()]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=[exp[0].model_dump()]) # test - response = RestClient().get_tables(database_id=1) + response = RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_get_tables_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=403) # test try: - RestClient().get_tables(database_id=1) + RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ForbiddenError: pass def test_get_tables_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=404) # test try: - RestClient().get_tables(database_id=1) + RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_get_tables_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=202) # test try: - RestClient().get_tables(database_id=1) + RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass def test_get_table_succeeds(self): with requests_mock.Mocker() as mock: - exp = Table(id=2, + exp = Table(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", name="Test", description="Test Table", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", internal_name="test", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_versioned=True, @@ -208,146 +218,174 @@ class TableUnitTest(unittest.TestCase): constraints=Constraints(uniques=[], foreign_keys=[], checks=[], - primary_key=[PrimaryKey(id=1, - table=TableBrief(id=2, database_id=1, - name='Other', - internal_name='other', - description=None, - is_versioned=True, - is_public=True, - is_schema_public=True, - owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16'), - column=ColumnBrief(id=1, table_id=2, - database_id=1, - name='id', - alias=None, - internal_name='id', - type=ColumnType.BIGINT))]), - columns=[Column(id=1, + primary_key=[PrimaryKey(id="1516310f-ecb5-4614-abe2-3b96114e1484", + table=TableBrief( + id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + name='Other', + internal_name='other', + description=None, + is_versioned=True, + is_public=True, + is_schema_public=True, + owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16'), + column=ColumnBrief( + id="31a533b6-8ddf-43d6-ac6a-b9da597cb976", + table_id="", + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + name='id', + alias=None, + internal_name='id', + type=ColumnType.BIGINT))]), + columns=[Column(id="31a533b6-8ddf-43d6-ac6a-b9da597cb976", name="ID", ord=0, - database_id=1, - table_id=2, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", internal_name="id", type=ColumnType.BIGINT, is_null_allowed=False)]) # mock - mock.get('/api/database/1/table/2', json=exp.model_dump()) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + json=exp.model_dump()) # test - response = RestClient().get_table(database_id=1, table_id=2) + response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") self.assertEqual(exp, response) def test_get_table_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/2', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=403) # test try: - response = RestClient().get_table(database_id=1, table_id=2) + response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ForbiddenError: pass def test_get_table_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/2', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=404) # test try: - response = RestClient().get_table(database_id=1, table_id=2) + response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_get_table_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/2', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=202) # test try: - response = RestClient().get_table(database_id=1, table_id=2) + response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass def test_delete_table_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=202) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=202) # test client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") def test_delete_table_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=400) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except MalformedError: pass def test_delete_table_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=403) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ForbiddenError: pass def test_delete_table_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=404) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_delete_table_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=502) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=502) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceConnectionError: pass def test_delete_table_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=503) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceError: pass def test_delete_table_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=200) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.delete_table(database_id=1, table_id=2) + client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass def test_delete_table_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/2', status_code=404) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692', + status_code=404) # test try: - RestClient().delete_table(database_id=1, table_id=2) + RestClient().delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except AuthenticationError: pass @@ -357,58 +395,76 @@ class TableUnitTest(unittest.TestCase): total=2, timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc))] # mock - mock.get('/api/database/1/table/9/history?size=100', json=[exp[0].model_dump()]) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + json=[exp[0].model_dump()]) # test - response = RestClient().get_table_history(database_id=1, table_id=9) + response = RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") self.assertEqual(exp, response) def test_get_table_history_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/history?size=100', status_code=400) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + status_code=400) # test try: - RestClient().get_table_history(database_id=1, table_id=9) + RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except MalformedError: pass def test_get_table_history_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/history?size=100', status_code=403) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + status_code=403) # test try: - RestClient().get_table_history(database_id=1, table_id=9) + RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ForbiddenError: pass def test_get_table_history_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/history?size=100', status_code=404) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + status_code=404) # test try: - RestClient().get_table_history(database_id=1, table_id=9) + RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_get_table_history_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/history?size=100', status_code=503) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + status_code=503) # test try: - RestClient().get_table_history(database_id=1, table_id=9) + RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceError: pass def test_get_table_history_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/history?size=100', status_code=202) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100', + status_code=202) # test try: - RestClient().get_table_history(database_id=1, table_id=9) + RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass @@ -417,9 +473,12 @@ class TableUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/table/9/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + json=json.dumps(exp)) # test - response = RestClient().get_table_data(database_id=1, table_id=9, + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc)) self.assertTrue(DataFrame.equals(df, response)) @@ -429,59 +488,77 @@ class TableUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/table/9/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + json=json.dumps(exp)) # test - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") self.assertEqual(df.shape, response.shape) self.assertTrue(DataFrame.equals(df, response)) def test_get_table_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/data', status_code=400) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=400) # test try: - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except MalformedError: pass def test_get_table_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/data', status_code=403) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=403) # test try: - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ForbiddenError: pass def test_get_table_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/data', status_code=404) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_get_table_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/data', status_code=503) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceError: pass def test_get_table_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/table/9/data', status_code=202) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=202) # test try: - response = RestClient().get_table_data(database_id=1, table_id=9) + response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass @@ -489,89 +566,116 @@ class TableUnitTest(unittest.TestCase): with requests_mock.Mocker() as mock: exp = 2 # mock - mock.head('/api/database/1/table/9/data', headers={'X-Count': str(exp)}) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + headers={'X-Count': str(exp)}) # test - response = RestClient().get_table_data_count(database_id=1, table_id=9, + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0)) self.assertEqual(exp, response) def test_get_table_data_count_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=400) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=400) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except MalformedError: pass def test_get_table_data_count_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=403) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=403) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ForbiddenError: pass def test_get_table_data_count_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=404) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_get_table_data_count_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=503) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceError: pass def test_get_table_data_count_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=202) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=202) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass def test_get_table_data_count_not_countable_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/table/9/data', status_code=409) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=409) # test try: - response = RestClient().get_table_data_count(database_id=1, table_id=9) + response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ExternalSystemError: pass def test_create_table_data_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=201) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=201) # test client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) def test_create_table_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=400) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except MalformedError: pass @@ -579,11 +683,14 @@ class TableUnitTest(unittest.TestCase): def test_create_table_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=403) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except ForbiddenError: pass @@ -591,11 +698,14 @@ class TableUnitTest(unittest.TestCase): def test_create_table_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=404) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except NotExistsError: pass @@ -603,11 +713,14 @@ class TableUnitTest(unittest.TestCase): def test_create_table_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=503) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except ServiceError: pass @@ -615,11 +728,14 @@ class TableUnitTest(unittest.TestCase): def test_create_table_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=200) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.create_table_data(database_id=1, table_id=9, + client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except ResponseCodeError: pass @@ -627,10 +743,13 @@ class TableUnitTest(unittest.TestCase): def test_create_table_data_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/table/9/data', status_code=503) + mock.post( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: - RestClient().create_table_data(database_id=1, table_id=9, + RestClient().create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}) except AuthenticationError: pass @@ -638,21 +757,27 @@ class TableUnitTest(unittest.TestCase): def test_update_table_data_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=202) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=202) # test client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) def test_update_table_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=400) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) except MalformedError: @@ -661,11 +786,14 @@ class TableUnitTest(unittest.TestCase): def test_update_table_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=403) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) except ForbiddenError: @@ -674,11 +802,14 @@ class TableUnitTest(unittest.TestCase): def test_update_table_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=404) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) except NotExistsError: @@ -687,11 +818,14 @@ class TableUnitTest(unittest.TestCase): def test_update_table_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=503) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) except ServiceError: @@ -700,11 +834,14 @@ class TableUnitTest(unittest.TestCase): def test_update_table_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/9/data', status_code=200) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.update_table_data(database_id=1, table_id=9, + client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", data={'name': 'Josiah', 'age': 45, 'gender': 'male'}, keys={'id': 1}) except ResponseCodeError: @@ -713,97 +850,124 @@ class TableUnitTest(unittest.TestCase): def test_delete_table_data_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=202) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=202) # test client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) def test_delete_table_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=400) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) except MalformedError: pass def test_delete_table_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=403) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) except ForbiddenError: pass def test_delete_table_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=404) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) except NotExistsError: pass def test_delete_table_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=503) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) except ServiceError: pass def test_delete_table_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=200) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1}) except ResponseCodeError: pass def test_delete_table_data_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/table/9/data', status_code=404) + mock.delete( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data', + status_code=404) # test try: - RestClient().delete_table_data(database_id=1, table_id=9, keys={'id': 1}) + RestClient().delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + keys={'id': 1}) except AuthenticationError: pass def test_update_table_column_succeeds(self): with requests_mock.Mocker() as mock: - exp = Column(id=1, + exp = Column(id="2f30858d-b47b-4068-9028-fb0524ddf6cb", ord=0, name="ID", - database_id=1, - table_id=2, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", internal_name="id", type=ColumnType.BIGINT, - concept=ConceptBrief(id=2, + concept=ConceptBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", uri="http://dbpedia.org/page/Category:Precipitation", name="Precipitation"), - unit=UnitBrief(id=2, + unit=UnitBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc", uri="http://www.wikidata.org/entity/Q119856947", name="liters per square meter"), is_null_allowed=False) # mock - mock.put('/api/database/1/table/2/column/1', json=exp.model_dump(), status_code=202) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + json=exp.model_dump(), + status_code=202) # test client = RestClient(username="a", password="b") - response = client.update_table_column(database_id=1, table_id=2, column_id=1, + response = client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") self.assertEqual(exp, response) @@ -811,11 +975,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=400) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except MalformedError: @@ -824,11 +992,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=403) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except ForbiddenError: @@ -837,11 +1009,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=404) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except NotExistsError: @@ -850,11 +1026,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=502) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=502) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except ServiceConnectionError: @@ -863,11 +1043,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=503) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except ServiceError: @@ -876,11 +1060,15 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=200) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.update_table_column(database_id=1, table_id=2, column_id=1, + client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except ResponseCodeError: @@ -889,10 +1077,14 @@ class TableUnitTest(unittest.TestCase): def test_update_table_column_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/table/2/column/1', status_code=404) + mock.put( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc', + status_code=404) # test try: - RestClient().update_table_column(database_id=1, table_id=2, column_id=1, + RestClient().update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692", + column_id="758da021-f809-4d87-a866-9d4664a039dc", unit_uri="http://www.wikidata.org/entity/Q119856947", concept_uri="http://dbpedia.org/page/Category:Precipitation") except AuthenticationError: @@ -903,58 +1095,76 @@ class TableUnitTest(unittest.TestCase): exp = TableStatistics( columns={"id": ColumnStatistic(val_min=1.0, val_max=9.0, mean=5.0, median=5.0, std_dev=2.73)}) # mock - mock.get('/api/analyse/database/1/table/2/statistics', json=exp.model_dump(), status_code=202) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + json=exp.model_dump(), status_code=202) # test - response = RestClient().analyse_table_statistics(database_id=1, table_id=2) + response = RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") self.assertEqual(exp, response) def test_analyse_table_statistics_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/analyse/database/1/table/2/statistics', status_code=400) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + status_code=400) # test try: - RestClient().analyse_table_statistics(database_id=1, table_id=2) + RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except MalformedError: pass def test_analyse_table_statistics_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/analyse/database/1/table/2/statistics', status_code=404) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + status_code=404) # test try: - RestClient().analyse_table_statistics(database_id=1, table_id=2) + RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except NotExistsError: pass def test_analyse_table_statistics_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/analyse/database/1/table/2/statistics', status_code=502) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + status_code=502) # test try: - RestClient().analyse_table_statistics(database_id=1, table_id=2) + RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceConnectionError: pass def test_analyse_table_statistics_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/analyse/database/1/table/2/statistics', status_code=503) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + status_code=503) # test try: - RestClient().analyse_table_statistics(database_id=1, table_id=2) + RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ServiceError: pass def test_analyse_table_statistics_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/analyse/database/1/table/2/statistics', status_code=200) + mock.get( + '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics', + status_code=200) # test try: - RestClient().analyse_table_statistics(database_id=1, table_id=2) + RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + table_id="b3230b86-4743-498d-9015-3fad58049692") except ResponseCodeError: pass diff --git a/lib/python/tests/test_unit_unit.py b/lib/python/tests/test_unit_unit.py index efea8b69bb335cf4618216e7822dd5a7d2a1e467..3af429b74ebcb84767105d3b4da23540fd3fdf31 100644 --- a/lib/python/tests/test_unit_unit.py +++ b/lib/python/tests/test_unit_unit.py @@ -11,7 +11,7 @@ class UserUnitTest(unittest.TestCase): def test_get_units_succeeds(self): with requests_mock.Mocker() as mock: - exp = [UnitBrief(id=1, + exp = [UnitBrief(id="d8eec1ab-7b37-4eb3-bdf7-b44a8b384c0b", uri='http://www.ontology-of-units-of-measure.org/resource/om-2/CelsiusTemperature', name='Celsius Temperature')] # mock diff --git a/lib/python/tests/test_unit_view.py b/lib/python/tests/test_unit_view.py index 7a8bebe4e01fc538a004d87b30493c6bfbe913aa..5792d028b37726d1c3e1f29a941387c12306cfc2 100644 --- a/lib/python/tests/test_unit_view.py +++ b/lib/python/tests/test_unit_view.py @@ -15,17 +15,17 @@ class ViewUnitTest(unittest.TestCase): def test_get_views_empty_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view', json=[]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=[]) # test - response = RestClient().get_views(database_id=1) + response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual([], response) def test_get_views_succeeds(self): with requests_mock.Mocker() as mock: - exp = [ViewBrief(id=1, + exp = [ViewBrief(id="1b3449d2-780e-4683-9af0-8733e608a4aa", name="Data", internal_name="data", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", @@ -33,93 +33,101 @@ class ViewUnitTest(unittest.TestCase): is_public=True, is_schema_public=True)] # mock - mock.get('/api/database/1/view', json=[exp[0].model_dump()]) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=[exp[0].model_dump()]) # test - response = RestClient().get_views(database_id=1) + response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732") self.assertEqual(exp, response) def test_get_views_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404) # test try: - response = RestClient().get_views(database_id=1) + response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except NotExistsError: pass def test_get_views_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=202) # test try: - response = RestClient().get_views(database_id=1) + response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732") except ResponseCodeError: pass def test_get_view_succeeds(self): with requests_mock.Mocker() as mock: - exp = View(id=3, + exp = View(id="1b3449d2-780e-4683-9af0-8733e608a4aa", name="Data", internal_name="data", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_public=True, is_schema_public=True, - columns=[ViewColumn(id=1, + columns=[ViewColumn(id="1b3449d2-780e-4683-9af0-8733e608a4aa", ord=0, name="id", internal_name="id", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=ColumnType.BIGINT, is_null_allowed=False)], identifiers=[]) # mock - mock.get('/api/database/1/view/3', json=exp.model_dump()) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + json=exp.model_dump()) # test - response = RestClient().get_view(database_id=1, view_id=3) + response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") self.assertEqual(exp, response) def test_get_view_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3', status_code=403) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=403) # test try: - response = RestClient().get_view(database_id=1, view_id=3) + response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ForbiddenError: pass def test_get_view_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3', status_code=404) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=404) # test try: - response = RestClient().get_view(database_id=1, view_id=3) + response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except NotExistsError: pass def test_get_view_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3', status_code=202) + mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=202) # test try: - response = RestClient().get_view(database_id=1, view_id=3) + response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ResponseCodeError: pass def test_update_view_succeeds(self): with requests_mock.Mocker() as mock: - exp = ViewBrief(id=1, + exp = ViewBrief(id="1b3449d2-780e-4683-9af0-8733e608a4aa", name="Data", internal_name="data", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", @@ -127,91 +135,99 @@ class ViewUnitTest(unittest.TestCase): is_public=False, is_schema_public=False) # mock - mock.put('/api/database/1/view/1', json=exp.model_dump(), status_code=202) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', json=exp.model_dump(), + status_code=202) # test - response = RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, - is_public=False, is_schema_public=False) + response = RestClient(username='foo', password='bar').update_view( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, + is_public=False, is_schema_public=False) self.assertEqual(exp, response) def test_update_view_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/view/1', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=403) # test try: - RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False, - is_schema_public=False) + RestClient(username='foo', password='bar').update_view( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False, + is_schema_public=False) except ForbiddenError: pass def test_update_view_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/view/1', status_code=404) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=404) # test try: - RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False, - is_schema_public=False) + RestClient(username='foo', password='bar').update_view( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False, + is_schema_public=False) except NotExistsError: pass def test_update_view_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/view/1', status_code=200) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=200) # test try: - RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False, - is_schema_public=False) + RestClient(username='foo', password='bar').update_view( + database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False, + is_schema_public=False) except ResponseCodeError: pass def test_update_view_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.put('/api/database/1/view/1', status_code=403) + mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=403) # test try: - RestClient().update_view(database_id=1, view_id=1, is_public=False, is_schema_public=False) + RestClient().update_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False, + is_schema_public=False) except AuthenticationError: pass def test_create_view_succeeds(self): with requests_mock.Mocker() as mock: - exp = View(id=3, + exp = View(id="1b3449d2-780e-4683-9af0-8733e608a4aa", name="Data", internal_name="data", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_public=True, is_schema_public=True, - columns=[ViewColumn(id=1, + columns=[ViewColumn(id="1b3449d2-780e-4683-9af0-8733e608a4aa", ord=0, name="id", internal_name="id", - database_id=1, + database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=ColumnType.BIGINT, is_null_allowed=False)], identifiers=[]) # mock - mock.post('/api/database/1/view', json=exp.model_dump(), status_code=201) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=exp.model_dump(), status_code=201) # test client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") self.assertEqual(exp, response) def test_create_view_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=400) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=400) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except MalformedError: pass @@ -219,11 +235,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=403) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=403) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ForbiddenError: pass @@ -231,11 +248,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=404) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except NotExistsError: pass @@ -243,11 +261,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_423_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=423) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=423) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ExternalSystemError: pass @@ -255,11 +274,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=502) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=502) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ServiceConnectionError: pass @@ -267,11 +287,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=503) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=503) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ServiceError: pass @@ -279,11 +300,12 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=200) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=200) # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ResponseCodeError: pass @@ -291,10 +313,11 @@ class ViewUnitTest(unittest.TestCase): def test_create_view_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.post('/api/database/1/view', status_code=404) + mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404) # test try: - response = RestClient().create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, + response = RestClient().create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data", + is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except AuthenticationError: pass @@ -302,95 +325,113 @@ class ViewUnitTest(unittest.TestCase): def test_delete_view_succeeds(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=202) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=202) # test client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") def test_delete_view_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=400) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=400) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except MalformedError: pass def test_delete_view_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=403) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=403) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ForbiddenError: pass def test_delete_view_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=404) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=404) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except NotExistsError: pass def test_delete_view_423_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=423) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=423) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ExternalSystemError: pass def test_delete_view_502_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=502) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=502) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ServiceConnectionError: pass def test_delete_view_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=503) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=503) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ServiceError: pass def test_delete_view_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=200) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=200) # test try: client = RestClient(username="a", password="b") - client.delete_view(database_id=1, view_id=3) + client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ResponseCodeError: pass def test_delete_view_anonymous_fails(self): with requests_mock.Mocker() as mock: # mock - mock.delete('/api/database/1/view/3', status_code=403) + mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa', + status_code=403) # test try: - RestClient().delete_view(database_id=1, view_id=3) + RestClient().delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except AuthenticationError: pass @@ -399,9 +440,12 @@ class ViewUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/view/3/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + json=json.dumps(exp)) # test - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") self.assertTrue(DataFrame.equals(df, response)) def test_get_view_data_dataframe_succeeds(self): @@ -409,69 +453,90 @@ class ViewUnitTest(unittest.TestCase): exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}] df = DataFrame.from_records(json.dumps(exp)) # mock - mock.get('/api/database/1/view/3/data', json=json.dumps(exp)) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + json=json.dumps(exp)) # test - response: DataFrame = RestClient().get_view_data(database_id=1, view_id=3) + response: DataFrame = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") self.assertEqual(df.shape, response.shape) self.assertTrue(DataFrame.equals(df, response)) def test_get_view_data_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=400) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=400) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except MalformedError: pass def test_get_view_data_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=403) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=403) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ForbiddenError: pass def test_get_view_data_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=404) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=404) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except NotExistsError: pass def test_get_view_data_409_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=409) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=409) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ExternalSystemError: pass def test_get_view_data_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=503) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=503) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ServiceError: pass def test_get_view_data_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.get('/api/database/1/view/3/data', status_code=202) + mock.get( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=202) # test try: - response = RestClient().get_view_data(database_id=1, view_id=3) + response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ResponseCodeError: pass @@ -479,68 +544,89 @@ class ViewUnitTest(unittest.TestCase): with requests_mock.Mocker() as mock: exp = 844737 # mock - mock.head('/api/database/1/view/3/data', headers={'X-Count': str(exp)}) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + headers={'X-Count': str(exp)}) # test - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") self.assertEqual(exp, response) def test_get_view_data_count_400_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=400) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=400) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except MalformedError: pass def test_get_view_data_count_403_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=403) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=403) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ForbiddenError: pass def test_get_view_data_count_404_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=404) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=404) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except NotExistsError: pass def test_get_view_data_count_409_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=409) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=409) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ExternalSystemError: pass def test_get_view_data_count_503_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=503) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=503) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ServiceError: pass def test_get_view_data_count_unknown_fails(self): with requests_mock.Mocker() as mock: # mock - mock.head('/api/database/1/view/3/data', status_code=202) + mock.head( + '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data', + status_code=202) # test try: - response = RestClient().get_view_data_count(database_id=1, view_id=3) + response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732", + view_id="1b3449d2-780e-4683-9af0-8733e608a4aa") except ResponseCodeError: pass diff --git a/mkdocs.yml b/mkdocs.yml index 5ec3a92799fba08d9299e466e780422f20bf1a65..536eed294ed4f5683d601f2e0a460a8ade5267d1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: Database Repository -site_url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/ +site_url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/ repo_url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services repo_name: fda-services site_author: Research Unit Data Science, Technische Universität Wien @@ -120,9 +120,9 @@ markdown_extensions: custom_icons: - .docs/overrides/.icons extra: - homepage: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/ + homepage: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/ version: - default: 1.6 + default: 1.7 provider: mike social: - icon: simple/artifacthub diff --git a/sonar-project.properties b/sonar-project.properties index c044de9ff1cd165bdd794b1959d5bae87369f5a0..0d25b112d7133494be618d3f61e3e17a2c415e94 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,7 +2,7 @@ sonar.projectKey=fair-data-austria-db-repository_fda-services_a57fa043-ab99-4cdd-a721-162d9a916d77 sonar.host.url=https://s39.datalab.tuwien.ac.at # project -sonar.projectVersion=1.6.5 +sonar.projectVersion=1.7.0 # general sonar.qualitygate.wait=true sonar.projectCreation.mainBranchName=master diff --git a/versions.json b/versions.json index b42a3dfd7d8ac8f78858923d4ac6d89906452771..95ca2a62a6fec4b73534bc3d6981b1bcdfd8fff2 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,9 @@ [ + { + "version": "1.7", + "title": "1.7", + "aliases": [] + }, { "version": "1.6", "title": "1.6",