From 590b70ddece8106a509218bcd1f71116e847f75b Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 21 Jan 2025 10:05:22 +0100 Subject: [PATCH 01/52] Bumped version of DBRepo Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/index.md | 2 +- .docs/kubernetes.md | 2 +- .gitlab-ci.yml | 4 +- Makefile | 4 +- dbrepo-analyse-service/.gitignore | 6 - dbrepo-analyse-service/Pipfile | 2 +- dbrepo-analyse-service/Pipfile.lock | 313 +++++++++--------- .../lib/dbrepo-1.6.0.tar.gz | Bin 39925 -> 0 bytes .../lib/dbrepo-1.6.1.tar.gz | Bin 40022 -> 0 bytes .../lib/dbrepo-1.6.2.tar.gz | Bin 0 -> 40056 bytes dbrepo-data-service/pom.xml | 2 +- dbrepo-data-service/querystore/pom.xml | 4 +- dbrepo-data-service/report/pom.xml | 4 +- dbrepo-data-service/rest-service/pom.xml | 6 +- dbrepo-data-service/services/pom.xml | 6 +- dbrepo-metadata-service/api/pom.xml | 6 +- dbrepo-metadata-service/entities/pom.xml | 4 +- dbrepo-metadata-service/oai/pom.xml | 4 +- dbrepo-metadata-service/pom.xml | 2 +- dbrepo-metadata-service/report/pom.xml | 4 +- dbrepo-metadata-service/repositories/pom.xml | 4 +- dbrepo-metadata-service/rest-service/pom.xml | 4 +- dbrepo-metadata-service/services/pom.xml | 4 +- dbrepo-metadata-service/test/pom.xml | 4 +- dbrepo-search-service/Pipfile | 2 +- dbrepo-search-service/Pipfile.lock | 126 +++---- dbrepo-search-service/init/Pipfile | 2 +- dbrepo-search-service/init/Pipfile.lock | 130 ++++---- .../init/lib/dbrepo-1.6.0.tar.gz | Bin 39925 -> 0 bytes .../init/lib/dbrepo-1.6.1.tar.gz | Bin 40022 -> 0 bytes .../init/lib/dbrepo-1.6.2.tar.gz | Bin 0 -> 40056 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 39925 -> 0 bytes dbrepo-search-service/lib/dbrepo-1.6.1.tar.gz | Bin 40022 -> 0 bytes dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz | Bin 0 -> 40056 bytes dbrepo-upload-service/pom.xml | 2 +- helm/dbrepo/Chart.lock | 2 +- helm/dbrepo/Chart.yaml | 4 +- helm/dbrepo/README.md | 4 +- helm/dbrepo/values.yaml | 16 +- install.sh | 2 +- lib/python/docs/index.rst | 2 +- lib/python/pyproject.toml | 2 +- lib/python/setup.py | 2 +- sonar-project.properties | 2 +- 44 files changed, 345 insertions(+), 344 deletions(-) delete mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz delete mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.1.tar.gz create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz delete mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.0.tar.gz delete mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.1.tar.gz create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz delete mode 100644 dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz delete mode 100644 dbrepo-search-service/lib/dbrepo-1.6.1.tar.gz create mode 100644 dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz diff --git a/.docs/index.md b/.docs/index.md index e16f9f5da6..64b807cae2 100644 --- a/.docs/index.md +++ b/.docs/index.md @@ -14,7 +14,7 @@ author: Martin Weise   -Documentation for version: [v1.6.1](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). +Documentation for version: [v1.6.2](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/kubernetes.md b/.docs/kubernetes.md index cc16bbe210..60f87eb6d4 100644 --- a/.docs/kubernetes.md +++ b/.docs/kubernetes.md @@ -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.1" \ + --version "1.6.2" \ --create-namespace \ --cleanup-on-fail ``` diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 122597e695..01e1f79c16 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,8 +10,8 @@ variables: SONARQUBE_VERSION: "10.0" BUN_VERSION: "1.1.40" DOC_VERSION: "1.6" - APP_VERSION: "1.6.1" - CHART_VERSION: "1.6.1" + APP_VERSION: "1.6.2" + CHART_VERSION: "1.6.2" 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. diff --git a/Makefile b/Makefile index 2479e382e5..e5d0dbec5f 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all -APP_VERSION ?= 1.6.1 -CHART_VERSION ?= 1.6.1 +APP_VERSION ?= 1.6.2 +CHART_VERSION ?= 1.6.2 REPOSITORY_URL ?= registry.datalab.tuwien.ac.at/dbrepo .PHONY: all diff --git a/dbrepo-analyse-service/.gitignore b/dbrepo-analyse-service/.gitignore index d339f8575c..4ae9f6930d 100644 --- a/dbrepo-analyse-service/.gitignore +++ b/dbrepo-analyse-service/.gitignore @@ -17,12 +17,6 @@ venv/ .venv/ env* -# Libraries -./lib/dbrepo-1.4.4* -./lib/dbrepo-1.4.5* -./lib/dbrepo-1.4.6* -./lib/dbrepo-1.4.7rc* - # LLM *.bin diff --git a/dbrepo-analyse-service/Pipfile b/dbrepo-analyse-service/Pipfile index 831f8e532d..9c7b709520 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.1.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.2.tar.gz"} opensearch-py = "*" [dev-packages] diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 99d70b6132..9f00d97ca6 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "683cc19a3205b9b5f9b99db8b71c0abadadfd652a94dcf710a73aeca92b97227" + "sha256": "5fbd87c094d93565d64444fc1734d9183e7095d47447d30d6493dfc6bb7e8201" }, "pipfile-spec": 6, "requires": { @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:7d398f66a11e67777c189d1f58c0a75d9d60f98d0ee51b8817e828930bf19e4e", - "sha256:8e49416216a6e3a62c2a0c44fba4dd2852c85472e7b702516605b1363867d220" + "sha256:76cfc9a705be46e8d22607efacc8d688c064f923d785a01c00b28e9a96425d1a", + "sha256:fde1c29996b77274a60b7bc9f741525afa6267bb1716eb644a764fb7c124a0d2" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.35.97" + "version": "==1.36.2" }, "botocore": { "hashes": [ - "sha256:88f2fab29192ffe2f2115d5bafbbd823ff4b6eb2774296e03ec8b5b0fe074f61", - "sha256:fed4f156b1a9b8ece53738f702ba5851b8c6216b4952de326547f349cc494f14" + "sha256:a1fe6610983f0214b0c7655fe6990b6a731746baf305b182976fc7b568fc3cb0", + "sha256:bc3b7e3b573a48af2bd7116b80fe24f9a335b0b67314dcb2697a327d009abf29" ], "markers": "python_version >= '3.8'", - "version": "==1.35.97" + "version": "==1.36.2" }, "certifi": { "hashes": [ @@ -412,9 +412,9 @@ }, "dbrepo": { "hashes": [ - "sha256:7cddcbdcb3eade84f67db01fa32e0649ecc01d4c3cc5e7542d3c402ad52efc19" + "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" ], - "path": "./lib/dbrepo-1.6.1.tar.gz" + "path": "./lib/dbrepo-1.6.2.tar.gz" }, "events": { "hashes": [ @@ -829,12 +829,12 @@ }, "minio": { "hashes": [ - "sha256:868dfe907e1702ce4bec86df1f3ced577a73ca85f344ef898d94fe2b5237f8c1", - "sha256:f5c24bf236fefd2edc567cd4455dc49a11ad8ff7ac984bb031b849d82f01222a" + "sha256:5247df5d4dca7bfa4c9b20093acd5ad43e82d8710ceb059d79c6eea970f49f79", + "sha256:c06ef7a43e5d67107067f77b6c07ebdd68733e5aa7eed03076472410ca19d876" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.2.14" + "version": "==7.2.15" }, "mistune": { "hashes": [ @@ -944,65 +944,65 @@ }, "numpy": { "hashes": [ - "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2", - "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5", - "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60", - "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71", - "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631", - "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8", - "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2", - "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16", - "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa", - "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591", - "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964", - "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821", - "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484", - "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957", - "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800", - "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918", - "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95", - "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0", - "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e", - "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d", - "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73", - "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59", - "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51", - "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355", - "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348", - "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e", - "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440", - "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675", - "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84", - "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046", - "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab", - "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712", - "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308", - "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315", - "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3", - "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008", - "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5", - "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2", - "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e", - "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7", - "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf", - "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab", - "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd", - "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf", - "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8", - "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb", - "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268", - "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d", - "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780", - "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716", - "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e", - "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528", - "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af", - "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7", - "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51" + "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f", + "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0", + "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd", + "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2", + "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4", + "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648", + "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be", + "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb", + "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160", + "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd", + "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a", + "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84", + "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e", + "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748", + "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825", + "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60", + "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957", + "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715", + "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317", + "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e", + "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283", + "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278", + "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9", + "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de", + "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369", + "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb", + "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189", + "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014", + "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323", + "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e", + "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49", + "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50", + "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d", + "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37", + "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39", + "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576", + "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a", + "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba", + "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7", + "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826", + "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467", + "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495", + "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc", + "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391", + "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0", + "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97", + "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c", + "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac", + "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369", + "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8", + "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2", + "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff", + "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a", + "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", + "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==2.2.1" + "version": "==2.2.2" }, "opensearch-py": { "hashes": [ @@ -1427,11 +1427,11 @@ }, "referencing": { "hashes": [ - "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", - "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de" + "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", + "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade" ], - "markers": "python_version >= '3.8'", - "version": "==0.35.1" + "markers": "python_version >= '3.9'", + "version": "==0.36.1" }, "requests": { "hashes": [ @@ -1553,11 +1553,11 @@ }, "s3transfer": { "hashes": [ - "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e", - "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7" + "sha256:3f25c900a367c8b7f7d8f9c34edc87e300bde424f779dc9f0a8ae4f9df9264f6", + "sha256:8fa0aa48177be1f3425176dfe1ab85dcd3d962df603c3dbfc585e6bf857ef0ff" ], "markers": "python_version >= '3.8'", - "version": "==0.10.4" + "version": "==0.11.1" }, "setuptools": { "hashes": [ @@ -1612,7 +1612,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "werkzeug": { @@ -2079,12 +2079,12 @@ }, "minio": { "hashes": [ - "sha256:868dfe907e1702ce4bec86df1f3ced577a73ca85f344ef898d94fe2b5237f8c1", - "sha256:f5c24bf236fefd2edc567cd4455dc49a11ad8ff7ac984bb031b849d82f01222a" + "sha256:5247df5d4dca7bfa4c9b20093acd5ad43e82d8710ceb059d79c6eea970f49f79", + "sha256:c06ef7a43e5d67107067f77b6c07ebdd68733e5aa7eed03076472410ca19d876" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.2.14" + "version": "==7.2.15" }, "opensearch-py": { "hashes": [ @@ -2236,86 +2236,93 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "wrapt": { "hashes": [ - "sha256:09f5141599eaf36d6cc0b760ad87c2ab6b8618d009b2922639266676775a73a6", - "sha256:0aad4f54b3155d673a5c4706a71a0a84f3d415b2fc8a2a399a964d70f18846a2", - "sha256:0eb33799b7582bb73787b9903b70595f8eff67eecc9455f668ed01adf53f9eea", - "sha256:0ee037e4cc9d039efe712b13c483f4efa2c3499642369e01570b3bb1842eea3f", - "sha256:0fdc4e73a3fa0c25eed4d836d9732226f0326957cb075044a7f252b465299433", - "sha256:13887d1415dc0e213a9adeb9026ae1f427023f77110d988fbd478643490aa40c", - "sha256:144ed42a4ec3aca5d6f1524f99ee49493bbd0d9c66c24da7ec44b4661dca4dcc", - "sha256:14f78f8c313884f889c6696af62aa881af302a989a7c0df398d2b541fa53e8a9", - "sha256:15f96fe5e2efdc613983327240ae89cf6368c07eeb0f194d240e9549aa1ea739", - "sha256:162d5f15bdd3b8037e06540902227ef9e0f298496c0afaadd9e2875851446693", - "sha256:169033329022739c6f0d8cd3031a113953b0ba500f3d5978904bdd40baec4568", - "sha256:16b2fdfa09a74a3930175b6d9d7d008022aa72a4f02de2b3eecafcc1adfd3cfe", - "sha256:181a844005c9818792212a32e004cb4c6bd8e35cae8e97b1a39a1918d95cef58", - "sha256:18fb16fb6bb75f4ec6272829007f3129a9a5264d0230372f9651e5f75cfec552", - "sha256:1c119802ae432b8c5d55dd5253825d09c1dca1c97ffc7b32c53ecdb348712f64", - "sha256:20888d886186d19eab53816db2e615950b1ce7dbd5c239107daf2c8a6a4a03c6", - "sha256:21ffcf16f5c243a626b0f8da637948e3d5984e3bc0c1bc500ad990e88e974e3b", - "sha256:27a49f217839bf559d436308bae8fc4a9dd0ac98ffdb9d6aeb3f00385b0fb72c", - "sha256:2b20fcef5a3ee410671a5a59472e1ff9dda21cfbe5dfd15e23ee4b99ac455c8e", - "sha256:2c160bb8815787646b27a0c8575a26a4d6bf6abd7c5eb250ad3f2d38b29cb2cb", - "sha256:2f1bc359f6c52e53565e7af24b423e7a1eea97d155f38ac9e90e95303514710b", - "sha256:30c0c08434fe2af6e40c5c75c036d7e3c7e7f499079fc479e740d9586b09fb0d", - "sha256:3260178f3bc006acae93378bfd6dbf33c9249de93cc1b78d8cc7b7416f4ea99a", - "sha256:3dfd4738a630eddfcb7ff6c8e9fe863df3821f9c991dec73821e05450074ae09", - "sha256:50a4e3b45e62b1ccb96b3fc0e427f1b458ff2e0def34ae084de88418157a09d1", - "sha256:50bbfa7a92da7540426c774e09d6901e44d8f9b513b276ebae03ae244f0c6dbf", - "sha256:52f0907287d9104112dbebda46af4db0793fcc4c64c8a867099212d116b6db64", - "sha256:53e2986a65eba7c399d7ad1ccd204562d4ffe6e937344fe5a49eb5a83858f797", - "sha256:5660e470edfa15ae7ef407272c642d29e9962777a6b30bfa8fc0da2173dc9afd", - "sha256:57e932ad1908b53e9ad67a746432f02bc8473a9ee16e26a47645a2b224fba5fd", - "sha256:589f24449fd58508533c4a69b2a0f45e9e3419b86b43a0607e2fdb989c6f2552", - "sha256:5c2e24ba455af4b0a237a890ea6ed9bafd01fac2c47095f87c53ea3344215d43", - "sha256:5ebea3ebb6a394f50f150a52e279508e91c8770625ac8fcb5d8cf35995a320f2", - "sha256:67c30d3fe245adb0eb1061a0e526905970a0dabe7c5fba5078e0ee9d19f28167", - "sha256:6bb82447ddae4e3d9b51f40c494f66e6cbd8fb0e8e8b993678416535c67f9a0d", - "sha256:6ce4cff3922707048d754e365c4ebf41a3bcbf29b329349bf85d51873c7c7e9e", - "sha256:6d44b14f3a2f6343a07c90344850b7af5515538ce3a5d01f9c87d8bae9bd8724", - "sha256:6fd88935b12b59a933ef45facb57575095f205d30d0ae8dd1a3b485bc4fa2fbd", - "sha256:78da796b74f2c8e0af021ee99feb3bff7cb46f8e658fe25c20e66be1080db4a2", - "sha256:7966f98fa36933333d8a1c3d8552aa3d0735001901a4aabcfbd5a502b4ef14fe", - "sha256:7eca3a1afa9820785b79cb137c68ca38c2f77cfedc3120115da42e1d5800907e", - "sha256:823a262d967cbdf835787039b873ff551e36c14658bdc2e43267968b67f61f88", - "sha256:88623fd957ba500d8bb0f7427a76496d99313ca2f9e932481c0882e034cf1add", - "sha256:889587664d245dae75c752b643061f922e8a590d43a4cd088eca415ca83f2d13", - "sha256:9176057c60438c2ce2284cdefc2b3ee5eddc8c87cd6e24c558d9f5c64298fa4a", - "sha256:93018dbb956e0ad99ea2fa2c3c22f033549dcb1f56ad9f4555dfe25e49688c5d", - "sha256:97eaff096fcb467e0f486f3bf354c1072245c2045859d71ba71158717ec97dcc", - "sha256:997e8f9b984e4263993d3baf3329367e7c7673b63789bc761718a6f9ed68653d", - "sha256:99e544e6ce26f89ad5acc6f407bc4daf7c1d42321e836f5c768f834100bdf35c", - "sha256:9e04f3bd30e0b23c0ca7e1d4084e7d28b6d7d2feb8b7bc69b496fe881280579b", - "sha256:a7aa07603d67007c15b33d20095cc9276f3e127bfb1b8106b3e84ec6907d137e", - "sha256:a992f9e019145e84616048556546edeaba68e05e1c1ffbe8391067a63cdadb0c", - "sha256:b1a4c8edd038fee0ce67bf119b16eaa45d22a52bbaf7d0a17d2312eb0003b1bb", - "sha256:b8bd35c15bc82c5cbe397e8196fa57a17ce5d3f30e925a6fd39e4c5bb02fdcff", - "sha256:b9a58a1cbdc0588ed4c8ab0c191002d5d831a58c3bad88523fe471ea97eaf57d", - "sha256:bac64f57a5a7926ebc9ab519fb9eba1fc6dcd1f65d7f45937b2ce38da65c2270", - "sha256:bca1c0824f824bcd97b4b179dd55dcad1dab419252be2b2faebbcacefa3b27b2", - "sha256:bdf7b0e3d3713331c0bb9daac47cd10e5aa60d060e53696f50de4e560bd5617f", - "sha256:c53ef8936c4d587cb96bb1cf0d076e822fa38266c2b646837ef60465da8db22e", - "sha256:cbead724daa13cae46e8ab3bb24938d8514d123f34345535b184f3eb1b7ad717", - "sha256:cd7649f0c493d35f9aad9790bbecd7b6fd2e2f7141f6cb1e1e9bb7a681d6d0a4", - "sha256:d609f0ab0603bbcbf2de906b366b9f9bec75c32b4493550a940de658cc2ce512", - "sha256:d792631942a102d6d4f71e4948aceb307310ac0a0af054be6d28b4f79583e0f1", - "sha256:d87334b521ab0e2564902c0b10039dee8670485e9d397fe97c34b88801f474f7", - "sha256:da0d0c1c4bd55f9ace919454776dbf0821f537b9a77f739f0c3e34b14728b3b3", - "sha256:e0f0e731e0ca1583befd3af71b9f90d64ded1535da7b80181cb9e907cc10bbae", - "sha256:e5bd9186d52cf3d36bf1823be0e85297e4dbad909bc6dd495ce0d272806d84a7", - "sha256:e72053cc4706dac537d5a772135dc3e1de5aff52883f49994c1757c1b2dc9db2", - "sha256:e8a7b0699a381226d81d75b48ea58414beb5891ba8982bdc8e42912f766de074", - "sha256:ec3e763e7ca8dcba0792fc3e8ff7061186f59e9aafe4438e6bb1f635a6ab0901", - "sha256:f17e8d926f63aed65ff949682c922f96d00f65c2e852c24272232313fa7823d5", - "sha256:f3117feb1fc479eaf84b549d3f229d5d2abdb823f003bc2a1c6dd70072912fa0" + "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f", + "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", + "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", + "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", + "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", + "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", + "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", + "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", + "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8", + "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", + "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061", + "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", + "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb", + "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", + "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", + "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", + "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", + "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", + "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7", + "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", + "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", + "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", + "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", + "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", + "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", + "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", + "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", + "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a", + "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", + "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", + "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9", + "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", + "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82", + "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9", + "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", + "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", + "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", + "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", + "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", + "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", + "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", + "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", + "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", + "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a", + "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3", + "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a", + "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", + "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", + "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", + "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", + "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", + "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", + "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", + "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", + "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", + "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", + "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2", + "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", + "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", + "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", + "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f", + "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9", + "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04", + "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", + "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9", + "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f", + "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", + "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", + "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", + "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", + "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", + "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", + "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", + "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6", + "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", + "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb", + "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119", + "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b", + "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58" ], "markers": "python_version >= '3.8'", - "version": "==1.17.1" + "version": "==1.17.2" } } } diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz deleted file mode 100644 index 80c2ba74f662e7b02895122a37e301fde2157b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39925 zcmb2|=HR$+z9yaNe@aqOYC*oPp`MwZfnG^s5yP9kzpHM$O|qD^|EoyE+ml_tcwO)6 zSYFgipFZuy4B@+OOCFu9_;XU=;u3*o2IhuIlKJyq)jVgd^DkSqN<Sl}vRUJ%+WsR- zjr&5v!>_Mhy(|0n*0=w6n%M76Tz2%&d%35Z58GGPmzRBuce(%Z=eu+F-rXxdw*39H z50b14UpjxkUpssLUilu!4E~7P?@#|dy!Y>3|L*Fo&GKb&e?C0!&%VFbF8=TFU0-ir zxP5D_?6tCO`>XeS{r~9!!~b{tY;Iiqzshv~??+GndH;C+^q$_D|9i!E{Ntat^B+6^ z8NP_Rou2RaU+{lx`QiWG!zTal$AA34^uvGKqyN9x+1Oazxy$Uf;nAP_YX9wXWzEmu zK6^akf4hF%6OiJ&f0>{Bw{ExA{~ou8C2qs+|4b208#kZ%`oH(nf79ek%MDF-m!GlN zy88@oMBvZ(8S*#gWxu&vw(8h@pYoJn$;tWY&t3DD?lzE-%gwj9vAN>&YT2`&e{<W* zMRV3C9`*bDYE7=mIscx=-Jd6iEiWy+XBHP9BYFL8+SMIdadEM8V&oq`)|zUSxz##+ zZTR&cEmAkuN~*6(-(ALWfOV@W<Jnyj7k3HXnc0`jGvlR{VvkA6KLrDy>qfigWq*uv zJO8;i@W3iI9r62{-C}EEM12z@PxCq5-zWR9_%II-_wJNwh1O=b)|{5U+4`+E|H^*j zI+Hzee>N<fb6u8qhP2wlPk%%bV)HG&z5N%PQNgeGnU{f6>(;{?2JR2%KEGWbP`_yI z8mWhKC8aK8-Zx*k==O3aCVnY~HThO<lV|xc8Wt5cu-F=((c7xDkio<u@?sA=D@%hJ zcg6LF3m3l6S(W(9=U)NG3#~r3`F$}LoFCjxc(8MkYT$*64Tr7o@x9-Ww&z<-Q?kXU zcDVqbmQd4&MSa&?wO^Y|Ik4i!>^-Z#ANZr?GoOERi^C1Q|8b^H=U>b+cp2fh<xspJ zTTODpuC)0NpCs--xT0E}VYL*0c~2YvX8*slu59a@$u7N;Giv1x22Nl9f^`0kOXuBX z&f%MR|L8JpcI*53LFIA_+LhzXOt>1W8TS~l8~ECBr*vO<qFc<!87sZa=-Mu}bd#t1 zs}`3oW-9$Sd;h+b=dJ#<TkPDvR&d)>X{*`}wj1gV*Z2ek8mbf683k=FO2)I8=xPRK zJLktnG;P?!=IJH<Yt8W*`Bj&1%O(C%E;Ia~Bi)vEY1Jg*oZYeME-M;bGj_yfSbRHh z>|UZA^LlYRg-X^diauSeH>PLzO9`F*z!bXkUv*jilgrgJ#M(38Jbv`eT%pzE#WL$> z=M${l_}2E%d(ZnI_4~OJ#;lzV4O({?yk|{X@S;<>?i<hL2QL;rTlJB#%S`BSORDjf zLdQy$ITC5|8jQyn`jeTj?G*3%GOzeO!|jLJ<p*?bn;iNWApb4;{QntAT>Kv<D5%-B zOcB#%ygl`B0C&S;Kb~xcw)Vt(v$rMRvnu+VU9+<5jtJ+5Y_1?9(fA2>crP%tidH|K z(R9dc;Z+{zDY`9+oNF@{F)=61KXXu^s;%q5t;REzt~xg*_$0sl;S`(v*fz&4!Xj~B zEq}zGbT%cG2>&34Zxef&4XZ8+9dBg$bB(9qQ%qEs*tf<j{8tWFik7)vZq0u9@Z7t5 znP(W(v{@t>v@fTBH}h2uGF;%cM!1==%{KmDliCrJ*Q-5E+JgF69W+~Ng{?lzM2Q5P zeRo^$%cOaqP3))DtP+p@7pmN8*J!&W&9MB+o(WQR(lfS2&CkjB<)YakE_JNo=NZYv zRt5G#kMbI$Ciuk^A255m<o1D%Kl5&?Dh6InS>lw%rE!GsbJfK)^2*xcMs~%=CTBb7 zMy|DQb=de|iB4!iLh?pSMX7BqYD&?cEb>-}?K#i9Z<TJBz|MW_vDTAv*%wDYkZr2; z*xS6KTS5K9k)Q>A9sSF%a9N&KdB?T1b=?Yu@MZ5N-piL%*v!7-M0nh?$={CclDfPr zqx*FA(P;~XiW3-r$r(J>I(KO8O95Hi9}(wOpC&)ydLzAqt7OS$j=+xP1|4GD5A9co zbtxU){l)IVeh#$<9ow3x$_8jIH1$o<4AqceSCnS4;%1*|ouuKkOGVk0)9$av&mG$q zmFUX84DIbbvclo8*(2VPJMT0UH2rP)I^wxZKj{|k@i5uwFU0wAqgPeSLKf%U)}P!M zb?!C3tarKg-2K+Xkev|;-(w&Bb?CBiZ@J;)<&w6wj_-#VZ|&M^*DiZoER0{Bcv{pV z@aaXtjz5JHUR>G1oRBAZL3l+^kA)?}+V8@;hZ_FcG5spsaC;s5k7tjhMB{RQ7P@T- zH?DKq%C*}z?C|tiQ!mODKGe!Ey*%UMw3+9oN_u!YJ5OlTVM$Qa?fb$Mz?V2>!9(6i zju{i5u&+74Q7-3-Y0UY%i)QjC9Qjeqy+v++f7@hpv$+L(u6~yMv&nJe?(e%!oCv-Y zbEE#o!Y$htu&vpsc&V`Kvg?}~i(Rd|8eA2wEKFuvxLTdTSbQs^tzcJc-u9PS`yL%# zqO-i}jKK3F(LY$;W(${ODqa4|mA0Je>J5V<tZZuT8lfr-1`pUSE;D?Rd^L^#N@>QM zb9>U4JoRii(f6&&_R41m4g>ZZ`v1i(x}LY!B#FoibZxr8)p_>BL`AM2GAHBCKD^*q ze7QLB66fg?yIC?~k8feTzh{k^#Q`PLMakhGeZ|A_1!nB?UA_4^^Y@8jyqlN4xh!6% zdV|IIM)AxE9S8n7C<jK_hI)rhV16XFZo)POyYNqs4s`0t6=*G4vs!Yk+`0XmTA3b% zcwEj3a@u{~(crh*J~cIUp6^~N8>ZyFt#;ht%5gZcWUt^W|3Btu_GDT-b2ixIEVJtH zuNV%7V=5me`b~Jy<;v5S!o+SPu&nHgpZTmg8)c@=>1WJbb%7`R=%Xnbp=y~uT~n2K zdoy}DC#rAN(vvOdeDuaM%8+^GhR6>ALh}#lZD}i8bTsl{_pHLBCFcWrcgf9o+_718 zr@#lt=vQWjbs-C$UYxSv7RTJ)hLeJ_3*DIOZB-{ePBRvNXgOz%)J&(A2_0M5dOk+J ztK_@k60^_yUg?%)Z&vx*T@nn4l7Hy>VaHy^%UOp7CT6}|wSE)d$H`JFJU=OBdj3)G z47~Y#?KSoCJ1(nCZUtuSFJ9i)ufp=I`K{92g4c!@cDai!_mH~na(S=+iG)3KE6&HR zO`qSo;lQe({A)fHoA?+OJ$bODFSK3IF{H57_0mSI6}!7~E+(xo4>e6~@-XR{Hd{iv z+%e_A<dl_#XM2nNZ?Z9_S1!5GH05BTlGV?y&xbt<JbCRbFIZe!<C_wd^{@3|d+^@6 zx{H~z=GPNH)^c&)-|@ypennCC-xsUBlNlwoRa+xx>95tyteR!ezRcAu&80*~c<qTP zK3_g(o#j~OHm8xlr7d7C+xjTun-b@aXbVbjd1zqlQ0(>nQn%K{EY_nOR<@H8W(ghR zxGvb16e22e=)-&~<9@-J`_?_?(>VOjwT8_#&3;nD%Wt;(XC2$5S!#Rsv}#T>kIq*i z?N$+v4Gce19GmxTZEcoWy|eJ5Jv*DRme?5<<t@d>*BU&D&os&Y?0bsYeCgE5{5c&b zDqMM0`T8QFk8C_<cz=(O^s>~4<??T3=PGRtQ+dJUe0fca*6}(9;f4L3Z!}BtBgBf= zUUXQs*05`0PwVaaBCE+Zy#hLOB^uh!9Cf*;wPEHCxd;7|z8n{vygh$n=b{s<6t+&C z^EHOi!(!i-l?U98Sd>h-sG7d`n$+bYW0M~zwoc!edSv#+Z(V!h*i5cw-28GPLgx7l zrCsHIx~f_HyRYr36l7R=chwA$uqg9ilRT%oS#|A9ow9V&29_k@B8OvrH#i?`%UZ(9 zX8QORtESY2B^&)O1YURhJU!})na7m+<T+QAOw*@5J9erx)^(QMw;3f*3PRt9eYZQG zG>g-;`@j{BHuHm_;ok4;KK*(g*D>|VJKmGiqx+>(cjWv|xwlY4@j{beM{`4DPd>{- zqYKMiN{(#hey6~yqcwR2znQGyzlb#gn@-$Nzjigk#xSl`VE$L%`R}z=bNM%l7jUcz z&{AOB<m%hM&F0Y@#qgb5Wffia+z5F5s{76{1NIl@!BV_cduP=5+tq#)P7pFV!|lCj zszA8%`pE{twcmc95Zmppae;Y;u*gf3r3ydxGUoX!n>3_eu-;|hU?_U(g@b?YDSPek z$#cvVd5v5cj$b)Ft1yW@#p>a*-18OOztkV3t`Tcw`dW5|H)7MCi$}U{Fq~DA)SoE6 zM#^_a#BWEIEY?KV<&KwJu6i&2ZDh7{_KWLG)ArxXkY4+3*T+>C^R}uM-QQ-FueZ+n z*zIFiLm%(CoVBgDTe~*;-=nP;E&gBqv9q*}=~ds^@&@~b<t80&Ny70PP0Ta5G@bCz z^0G5!Q=T5+$~JL++Qx=6eyfXbtzo)$etXpO_3NXa+nb)B^?dHC!fSi1>X-w};<oxl z&yDYFiQ8`V{Hz(jd`5?vo^-fD;`Qad+K)f|di811-6xl(y%)3Ev6<lm|H9zeWwIIR zZPBfTMU68*?_HR`xXO?D9b;*t;G+E<kF)*-z02icy3kp$V^ZvG#=>t0Uf(+9^UNpq z&E`qwVfQn9r8m#{R=46{erM2{lC0U=w>i&#t~+H9+Y0+UkAe?o4<<UF^J@^)$vt~j zseDsIgVWvA2b=aKH-EdDIy-dh?bzO(MN^-rEA0*6v8chW_V_;4*1m?<i|w7>MxW4g z?s4GAD7UGuEqEs>EdOH4#NcN)u5A3kapB4==FRfoA13EY3JI{XvpBa^zrOX(SVtou z=Vus`mcgCn-O@#i0#7cy_?)d^@$OsCtDk8cox0{&?BgX1y>G~9${9cM&k6Tgb}YQK z-*IVye~eS>;W8V)4YlVt%jLL#m#t%2_=dM#t%@^HT|)7J?d38zyXkJrE=%v6Smf+v zpe)2v&N!i>wB|!!BtuJcNe5TeB|-ID0q06C@7kU@d5iiX^8{87l@kxxF51L1+F$E& z6HjGIax98_vr~{WD>rb@UgxW}`(h@~Zf(7t8^rzgUZvdkrb)|<x83x!3%_u?s^<si z2CJqECA)k0lTO@S(Db{v^WBXDM=wk|p?K`#D~}tz@2?5QX<UllHu3F(XQ#JECD`nU zYpG3T-}qL}z~Ej5e+Fk^aFAlphn1!>z5Pm2G48i{1Fg2-5K~lNSJBgBlC+pbKhx@> zp4X9!%Kj7G*bb@pm`%R>_>ZKxP5k?o+4Bzd9<54P_d#lbWVGbE;>+>^>XS}wJ(RR% zj{83Ox6?S!8-7UHaOz^jQ@<-&xAJSO#ZI}IEHF$`IJ7e8nY>BXl`C$n-0BaW{p37# zb&Y{V)%_iNT9nq-%RCgBw4K4?RYZ&ai-pxc`Wz|)sy!v*%u`!eaV+kr7G4td_TZ|I z2YL9HhA)<i{A4@ZGAyB?q2cJcng4X(1sN?k^R@i_b!BB%TVbbLy{d+S;i6&l(>$;D zoa%g@x1xeExA)Ys|GAeHvge+;!f=Iq0ZYI~QJF(l7mjS(X5O8xD#2|3e~FpX$raBT z80I&0`87y~?Ah{RvX`D;s^wjVsSA&tI;$6C+#V!xdhOL{vDP&g_*S;49O!z@AY-|1 zBK!KqYdYT7bUhGf5#~4__WL7Kanb$Io#{&I?JvvU7aX4@?7U^>k363F-;Y^0Nk8y; zvuWS*M@=3&XVbbS`-k##m}*5h9F58Qr*5YBRxpJnriSzT&XC8s;WHK<krH*)6m{SH zYj5<YX)_I{&s9k=p7O*_^GQgHLq6k)kW?vNTmSC@hUwY6rW>{CbIP?DWUziR`M`QL ze`SU6ty?`u9VWQ=W$|9%;W_)Zzu|#{D#OMHYRbP`wyRva-uz`p*6I(xLjRrD`d>Wt z|IS}El0WUI+y8Izo6^1X+5bH^Y-=hfocMpo{zmo2Q~x86J@08<mfH4g+J&oq4w1KG zt=W&hKk;D8#%1>eCa&4)&irMLoTU2tbq}@{TJpWO;aR}E_qP1{y&u_fxJ|Dr2W@3q zn0<5a0<k{1oM+e0<elZ&Zdh{oi0`~S3ntdo+2z}KYjf6{YIuD)VZp2`YO-p3N9D%? z?&QX~%E__y;igvCk40xx-~F+k(RTgCoWK3|9>-sAi7HC*@vE9;`!n;O%8Ja%3sWrj zE^M8&c$1Wmns@3{P4h~xx9_J;atY;mf5<bms^oCa$<Un*Qzzvt-In9+y=&6^ph@em zWO#cX>T<I8@;KI&xUOf3&eaEpPDWO$Y|hveCi2`k`cjyjjjCGVQRhN2zh^-oV<u19 z^{H)J!KCR)5~?cInT&GW>a{Op%8NdQ%T=B7V4FOD(xgL5`?eMo&G>U>mddpDwU;Ix zd$N4b6T_oIr+kzq&o7#MGD$F8RduSSU0_<#%yrs66H}(Sn{unqeOWMNa?P?R9aT<W z#r<beOmy4UZdtO0>1qDECni5N^*wdXET5{ZcD31hW{GJm%hV}*)a;k4Zd~fTNZdOu zcvZHhXRdJMu|uADS&~zyzFDUGEpzg{O>U8CLNQy`czbRS+ITc|N$k?CGj~pY91>F* z=~?v2xO`L0wIkD}*?d<$lQq+`^iyzDQLK*Jz7`ehpOH2<{p!5Dc3n2+I_0siJLiV$ z<PTR~>8nfn_rKOx*7VQLfB3}ar>456|7pn?dXf6wqEn~t5q~_HTm7SE>&BjxeICDc zd|sWtXe{RYX}0!Feg0{mCjC$IWjfQmV#|^PL6ezJdkN{7MivxZN|2j$+Eb~fCFRhh z$z0xkdODUTH+)Gs95k8lw7;E>Dd)yNDMx}P3!V1$)3Np3_$1}%q{(9H>iW+Nwq2Se zIkiJyePv*=?evLvR+w*3n6&s^uAb^m!*}my&-gOKbmCGqN4I~QCQVW_?Orow$%&lF z)!&|YfWk6p{wbqLs>y1Pr+7||{1TWYv@~h$Qq|xrtGG<hse=3CEOr`kFMg^Ly=v*U zj7zDfLJjLbEj3d1_B<5wDzozBj9J$<76dK(GiBPGm1$ensQ9Ypo$|bPX3^72lgv$d zH@B$xJ<Zh7oEiLa?W9RoPnYj`;&*nMw)#oqOQBw#-+C%%i247zQggRkz5bZ;WifB2 z(20{it2C#r-SBCWbMWlH-71~Onu@(V#IEKn37X{g`1YD^_5Q5gJxf(4W=+a?m~tuO zc-g}xLA||Gro^n`E%~Q%c};8Jl#*GYb@x=R$h_V@Wl2cty(tsstdgAGt-kWro}`B< zp|)np2bYAV_Dr9=XVsq<-6|VbnHoDAWs3!#op5JX=-!r;@SmE>FHK*n&YJRP*5)&5 zo^5Bd7A<*lW6Jm1i7GcIommpGY0aN0Q%s~aSGb<soIQPCdvrzg_3-5<!q|IOCl;q) zJ#x#s^Y@|Wxg{Pa?K`(cOPmpP>HYThf?<C4Ve8A=Y9@Q|gm~0<f9g9Ucy8s+)Vq0! zs~L~Y@7rEIZKvuSv4h{PnYFgFevG@Nv~2g9xNCK3$rCig6pUxDQV$Sr&g#_;O?@j- zsg$SrD}bj&?zptj?ObLx_r}7KlsyL9dct)~l3lIu37mM$u~2N|>#Ed>bC;JN*wPo; z%=o>w*ucTbYU&o&rLN~hYi_T9`|jAP7@mvg4sqpjEjsKZzQLnmpMj6$W0tRvCQVrx z!ks*`mVfc~2ip@0xRPeFlpdX4z2WFW3!{Hg>KcAZKR1+~xoZ|Z_u~ZFi2=9W?oVdb z30sz!yO(VqJ41n-@YX7(?mrzBT-=8qtpB?A*1x<@Z!i4IST?U$x5Tex^7+K5w#Olf z5nX8;wtahV8JUwUZaZ<_#nPO2Qp?4+Jh}hT>b>^owX?*x{>|M`>eJ(?@GGj@V-ov< zNpAhK^qdzSW8Qt8VOP13cHs5HA1|my$$#3qQMWrm{Jn}F*QwJ=A@d4C17_UI&tJFD z>I0wp!WD@Xdwau|{rSD0`73LJNpj7LTesTz<u7buh^>43-_YW}!8SI7rOsV5952VI z$T^+dYWk^@Nwv=9lK2YFCnbt^|F)KY{66vS-;SMg9^Sg;uOs4^+mgKRZL*YNc_>@b zw_g4o2jUO^N|Nv6(BnHRCHmap$~uPW$LFwA{Fx$X8yPKpB=EXiSi(eJ+Y6<yUJIG- zS$S9L^)Zc<THzD?j;6f{4u{<$n5XR1I8=XlN8<;+w?g-;Ij*gd`*PTN&DY2Z=fyh@ zT8Vmkm~RWMk9_+0$ot*DLoaQAWvx)~);>bEE_!d(arupBO@mHoh4C*uaDMshb?k5a z!!-_GIP`Gg>f>$pTcghIFrO><c%k6D>}ZkjE>EQkC;AfK$X(<6##bIMbu8O$vgIyQ zt?B8ztry(=cmMzT{kA{$|JTnycH=gy=}CjKvVH^U8Q*_Ad!uWz**e(xcjehPXRn+| z^fSJ2VR!AJ{U1->xXZl6VsWGNp66R`J`!>K%y#07O7GDXo)dZ(ST3>4&J+oA<-P3g zyM5oi&wIXRr3t+fIKt?)@7J%jFPTGymh!Hh6(#4A@b$cOlZ#oONY?6OZHt5}_Dpp7 z;$~|8wv@S(>vhM<8!H~g{Mo757W4STjA>^A8}}V-yjNj2b>B<HC#6gBXK5!0=AN^4 z*tIuJ%`o+`y+a85!)vO$UTN@T<es)z98r8ohJjzrwC%R!)beT9d7nM~*?#-kg?s<L z>qWd*ynSfdc9+AmXRq>p;mc<jv15NAgKpkJsjB?V>{qwGad;h8>h+HKLfwC6hJ#P! zA1Y}TKiT;1=O@9%d=Z`&&q_9{-dfVvx3W0oXsdg+u93#WNXx&A{H~T?<=Eb~&2_H% z&ufY$oK2FZdx~~32eY<&7JjLjqT!`f=)PL{#<7$9+bUN!gdN;?qCO=%o3}@n`EYOb z2F+;)KeT13OX^gw*xGCI<hDfU!QQ}U_ipcdKIvH%zm;~WikbdHd$l>w`Q9>rbK}di zz96RS)-07>FU^?D68-!R_szA>Yk4$c#M3)|uWgtt^s#Zpzkud_b{z*q11x3EtL)z< zTg11!>}pPVp49ZUv!DGu`PB9G9^;v+Zl&vPpI!a=Smfl*$6owQU3|B$y0G-n&BQNz z?%M3z*K|q4?)r79^!oivj_2#$x?HmQRD4{F<Im>9)2nYCX3+_JXrc4!r~ca2=Sm-k zl$^5`T@V*PFV4ho*>R4Emoqwc++DWfSm`+f%}0XEn0xZ_&Q<^2=MluXD!@AB!;OLq z(;Tl(z52`aF|(Ya(Q-G{c^&(%9f`kE?)Ompv-WJ$7k@;4uRbyT#@%O9C;EI6InOI| z7O*zU%y544DfiM^PvxiGN-TmKwtcI=@a)yqo^synPT{KySr7I6yqLs$P^|Yc|4ptN z2Y%bjz55feo16XIv--w)zrqVuj@IWs=Fj-Pgmvw!<zYS-pWWlvkAL^}soAbw|7%PC z1y_FG|6YF2jmn+d_wV}uced^Sm#c1CSY}^iyJmF0{+8t(;pg^yZ`{0p|8`~Lb9-62 zb?@rqPo+O)h_*Zs#<yWAa}HMKo9=>!wP(Ix{rO(||NU2gzF%D~^M8K8M!Dp_`)w>v zeExrNmj9gpbrlsK<`!=F^uJd6PyN>apLM>~m+_Z>ue(vd^Va{L$9~o)fA~E?nt$uV zA0NNh^YO*WDE+^0TT!@S^LM5vN8UZO(>ZbV-+3XsL-)QgJzaM6Le@uHiPgvVvrbeG zms)PPTCC@Vlz+m)8n!?Y{kIO!x%_Wu{@V9^z2@R?*LdFOeLogb(G^tt_;;6N$wb9m zwqxH#tx_tp%lY?D?ma6n^XNUJoXCy#BI(e)`s=0D7PsF@wIp2Pdu6aLN+9Z<#+?{v ze&c19t}f@#TSvz~-x)t+is)Wp%Rt-n*ZG@zWo3_SzkDGu(L^tL%6Fm4li6&$=6pEQ z$+&D~aldf6@y9D`>I0X5-!}7Y>Z&4sX0hph1@}x#ZtvL>;Kx5t)&HH&yFE#tOjzFq z9!};^Qm9y-#c}hWZe8;|!BFG8+V{$z^WWL<EK?Ub`SH=>S%r#oGD>E5SQag~vg>iF zFMIs@>qfJjL{w)Ta-ZqD@coKe7ugzm)63EtRpUe()N4EpZ#;SCxXAElM7GCz)$PKQ z4h!~A-m0?nXaU#dlq<c(m1n|uJk54i2yp(|{o{e~*Ts!0aV{IO^sl)bT3uM&>>hsq zP6*SpFGkZs*iJ}i%`*R_t#W)~yis<Dbj_+wx6VtYyKP((m@gGwzf}KXWxK_zS!Qk; zFIi1D+FVc%zu8gg*eIO2)ZF;CVpzZhzAE>{WgAMa^xZwZez~=ax!FbjUe30UA5{`B zPK;&=-jjP(rnu>)^!W;@<Nb4XDLE{eUZH&Jx_3h4xg5o=R{zSyt2h#k7ggRe=YMB$ zQhJ|z<Ue!yn=?9=dgbiNyIJAGa>Ck5$jEbs<PsHeOWCYL)dwDj6mD<Y=KJx7Pq?YX z$E1HT4v7pRf2L;MIb`))gYQ+z&&-3b{Nj&xCS6cAz9h9um0Q_hkBH~0C$BR$M7TJf z`kBBd?b|2QU)FKfbi&J>7F*2iY9G1I*;6CzAAItHrq<rC*VXPeGMx}v9&uV^ld{!) z`&A1rg<e;_bTK7yuE~O18xOr&S{3fNXs!B8r>RduY<C`8eL3FfnEkI)E1v5vnHhbx zZ2Kz{gSU=vFB#^3x2Ou}^gVZ`_UyOLv)|K9#070n@2pVuu$?v8%Oo+%Rl#GrrG$!* zF6YM$leCU)JukiUma6Ubr_*m-TAzKt(Y*TFjy|r!vr@cmjJc=N`4+gH{C(m3ssEcl z{kN(AfBxUS{@?n1d}06Q=im8X{H<C-@8bW@NzXs1{;L1>Eq>pT30j~2zmZ?_$KL<Z z|CtXy2Og{`kIQ8!2@+OhuQ;Il=g+Phr;AP=zgrfS2mfw4_wU}z8gDyA(|bp2omQ=k znSbFOzx|u=&$Z^O8fVs+2X24*D^K9Y^LNub1%7Rj6Pwd)WTUfct`h%g75|p36h(g* z7B9<r9qUiu|DbBY6S6?|q=R7Q^qRE`_DR~^VW{?-ah;RfA~N#9&Pm_Qm&EWMd+4`n z*W=2=(q8PIhgCVX)2@n1Y}qKb_u*!<jPUtW|L))P|M{l>{N?p`{y%(heCpr-y|@1d ze)u8u=KtTnhxaze%Kc}z=PUbm^56Z~oB#du{;TKIr3hz#YCp5->9>7n7EVpmmHT~t z!x_bhNqZbDxRyi-pRRe)!!+^7f!hx)n;tFo+TUF*x=u4xd7k4!d+(hJYfjwzXCM4S zeccbv%WrOMmeA}DeH`^7=d6Fl?u`{Uj%fEM`=8ru@NM?(3+rwFPutXf<g)Q)$I{7> zo5D6d+}}ULKCjtUZ+Ctj*T(wx`7b20ZJf8S<;v-hUw^WjX@TiG#<(rFS059dZyUJi zZ2y6t|6OL$^ES7uC52}4_fAVUUfa(0x&6Yu`7b7US|zu1r!DeUo4Q_fW`8Hsr2{R? z4&}AIZu=hb;K0nIrOJ&@p3OMYR5j=AZozi;?`J32&PcAD@TzJbzuQ*p$^33tPklbv z5ykkruja)|UDex$yChe$Pd@rW$^PhuD~@axj~S18Ft|PKO*{2L*qq}6<Ndjpzm@H- zm73{%MqE8GSxdQKf|UP<$KN{^6mDznoRARxO4Z!-O6>ujUHpaoK_;x+t?vrHGao;) z_PM3;?!HL{IUSjLCGxrtL{4c;YnZ?3YjKQwR_W5YIxCm5$+(NnzxQx*RDZE$P0-4z zhVA~275+-!i;@!f-D3q=RxPwTqr0dqImo6zYjS-ctIFeTH{Py@@4WgtS7GAKWy${! ze(+P@GkI!p(nJUCPv7m2t9|s>jsCy+4;%karoEg@?Ai)E^?4b2n`X1izjyx9I-lpp z{kiF!;x|u}A2Cl7Iymv;x+Z(```(|L#gnH@EB*Jn?@fY6d)?L=A=bc4spcp2L}u=L zwx^AI^^f31aVHzHg7#ZnQn$;RAXKY;Gfsb3s_p5wTX(AL7k?nkcJ;Q0&z<y&f6v|c zQoooznNssC{@<0P6O&vs4^<RzY(2PKfBvt@Z%@4ZcV@pz)Z@t}wb?~M_Mi1#nJ1ii zy?I-i&|Yq-+54(pr_4XP-JW~#hm_x?N{>#ZCEi}Q{8aM=AEmj|-0T)?a)_;4&Fhd^ zmUp3d#aHi?wVW%Q&gZH1rkCq8)Nk*b^6uw1d6(_4cWkSEy?(|^<M=bpIj_%ubxJ9D zdXeEzllA#+yKZmaBP-*~^E#4wLc%#Cj>b8fa}NhQ_;T$!SQ&i8Kl$u`$<FyzPy2c% z`{owdal7x6F4XzB^w9MDx&IZPMYaE5eI;D>|HM7J)(QT9Vqo;e<~l2*CSQzrz3TII zpY20ac`wNO@;sR6u-~@jh;ysPi4gBk+n4?OCZMF4n!hOKf~a(b;LH2>%6=@VeAHE1 zxl+e=O1N&9_nbggmFNbp5071)-YduI^iJBye&}PLy=VUNBUjU1GZr^|&hL%QwzjYm znc1~F%boF`qR~{l7tdU>POGh(seLO>K;h~+5e8R*LM7H^7FTORj&4n|VB9-VIGdw2 zb%Md^{wG@>O*(3O;qCMrjwL%c%Y>|2yW^yPE~}iLw2_r3|EFYezu8vI-rJ`uo?M<| zvTACc>FrDNFKiH-r>WP|dp18#{j$l~{EZWzXJvfXSb4jjtJ>>lu9!n$62Fn=l1DNz z#_~xqW_n)T-!x4xD<1o<{xbH@3!xWzvn@`v9Xn{Lw_wtvN6rTKw7SxTFRT82@Oc+Y zg>4dFXmTvmM!B^Y?9G#ZHNIIYcHynMdF%n3TcXw0)gM159?@x3I+gsKbFa$@nS;%( za)tb2Ev#pjH1Yae{n|Zuu1=`Mz8#KfZczp&cvBP?#H=*?xNlO+xoP+B*M-#=vQ4-v zzlvEcF7ntK&EL0vCuW)2uXe7SBwog2b75g|j+^shC6T`hi=5@eKHQ&unXzoboP53r zv-*>5YnRJ0uAQ~TcI{><xt0aG|1%kH>oeqN6?_oX<Jxu0K$_uRM%Ukz?Q6o+4y_QL z%l2!2Q1qP{E3ChoC2W+OdhBE2=S`PwZk|y}UaG`ds=QL|<nbfU9@?|k@Wp<#%Gt>k z$Q0CNaB}rW-Iwgeo<$F>=XuVupVp)6y05qBNOVuuwf;vTUrf79cB)O&yp~jZPUqIM z=?WX`#3v|SHuxA3?|<@y{5zZC1mWLmVZCi{{)@RXJPO?Y$tZK**GWe;OSLB(yNLP8 zPoMr+X;E-l^=nS{BUR6WPKM1-6@DJKB#Sxa|F(IbB93ggx}e-3+QbpKyi8!<;k$Rj z_nobJzj>ppyO1?ssaT2<*X)Pk$0xTZO?ok-J=-as;nChZPfjJz=yFc`<aTKJr+)75 zXRRKj##ZJpds1ipxyW8uWWl5Z|I&Po4olbhBsHn~ZC0t?mi;laVv6X_<Pg0&y|`|d z)OE7UR`AU8RWewUR#WnkD^am7vCpUL($wQC#4gL5ec*Y)&u{cE=>`Aur8buiOI8G3 z;=XcDyl(HtwI0pKmxehs-dVR$@_FL@JLfiXr5?Vt;_b$grxg?WE<MhCGwt{f5knnA z)#rEr=?MIPUL4Ep!Op#6{^nIpUFzo_KfX~p@oIF<rLL;imCDy|%?R$Wx$5++y;=SG zrdzu_-b9A*wk=HmSn8)_TD|e}<^30f%5O4nwfP#>yu&Nzs`0rGL2c1(HT-ARWtwwL zI=kfDv<HtDHmiPk{iII(Q9ysrsp9vh{5QSdtxS)&>EXN0o7?zqjoXvNq^^$8gHNms zPG9?R@`t*5qW1|A;|{UMCHH=(m@M_<o!s_gYEH_OrS}&vwinV1mU*n`oM5roVbbaq zy^l}Gg;*c^)cwG@^jCS5`KfnGPCYa32+3;BS<#viF-ckV+Vh&6CmUUIdA8hW>eu~t z^Y0h^vbr-&s?9&29v0Tz%z4d1m1DR5W(SW=OEZ6^M@wC=%K0D8)AoF0_ax>?6?<;j zd98Wt9&oL!_teMG&4w45&84CwrDkv0r|~30Gr#ZUH}|yoe{XKq2`oDtBxC$IQ|(OJ z`gChE!=?)1dH1(oPSpJw_P~@^X~sFBo-Zy^ORqRCm~!RXi}Z^0Hn)Q3y)xZjOkW-H z%B*3spSwb8aYe!Ol5?fU-`!ux6TRK%zw*DO?9n^gTc#g6VSceWgkA7bsQjmijvLPe z9Sp2Bnm#M_<+d%7i;w-7!Ln)-)6L|9l+d>`nQu$_uacgfv3J)ur`^YwFHm)qtdbTF zKfZSIoLlE3cgOAexW6O5S^2l2Ea%~g>t1IT9w|9}m*<pxI@^*z7n9ap-Y@ul)oFbx z_SLKNKg)`#i@V3xt$ej4_WC~VXJO0h<!evpIkul%lclzN($iHlqvp@Lx{syaH)liP z(?Yjcg=?3B^NwepI?#J0by=7|@nav&Ifq-6pK`X8-dU~8>d{jYW~3aPw#G^4xoG3< zNt;ehZk1g0E@<7gDaDVqry1U=`q$RtyXf(f1Da<o;=Q{kd490r-&`w{^XPBVx83(T zH!#i*DtgSfio?g}c&E&1@yjgTE^9^J-EcoTukLo-!B0ou+*MCovL*IUM%cU}?RZDU z68EpOODue%-7bY#XxzFP9$IQ^n4VrQcj?S+mY}<KZHBhux%u_iF8;{b{^IHyy#+#N zv}6p`VinW>-Tmxh?7zM4%H4;Yc6Cbg{0|=sm2UNRomy3;rsw!GsiLCB%q#g}me)L1 z)_VcVd|leN*(^{Ko$V-TIa#xR`ejdj&&qg)hlyVA7fn$=!KK_3DmzijM?H2;{Vk<C z>+|bgx~Obn_-VY1<%Da<5@wevlU6gkuy0%?_oQ;oj|CcH0n;Lz)&)!wZk<14myG$T zCHtmrwb*W-J^6ReRC&*{-dAdqPXC=~%f$NEFZt*3%$J2Z|6?{-ES28hf5U^@Z@I{> zm>p?p+x=zAW+v>2x{-Q{i8)XFgLU(+jh|P3+P;55&4s<m%*Ly4iR_tkJmu&O%c_J; zx_e$Eip}rew(#qXa~c;F0&VPm`1PdTe(B4^YZ&qE9^aej+k)&XPxfUUdG_OBj-rCY z-Ur7w-ZiRwQF&eRGuxau!pdKmuRKyvDVWR4slVierSJ-unLi&yN0iky{#Lqt`s)$P z>A?<PtgkgJ<qVbc_2roHvV8iM+eRzbr>{7y-sCOLVew#&Z;`!~>6UZJ3?=7+uh(b1 z*}iVy*?RxjN%2=E^UK+;*vfJ?{oIUe9^drL*O{&>w*B<Yf7SU8%d;y!K6P2477<bS zd}V+~?_5Rqj;DWhHS<ccLPh2s-+6WMu|6?{vt^$dXDT**2`oLIx!9wXX;#UfY^fEy z4zWkvKk#O=hahiGcd75&N%LP!+;wbugDGF_Z@GX=>DPRXu4`0H_OQORp8b*Fa%Jn% z=Yfv%1FUWyF^QH6U&DV|`uu~-rUBy1j=xQsVE+1(ciNdPVm%tG726YRuCX3T6L_f_ zyE1yUl;DT$i!XeLu~9z0$9=B#6eH`Y3%gxPwf$0^HF=)?D7>__<&sQG$rFR*Fojng z5>;0-E1p*`{wHg%@U;19>BR$|-1X#71ZI5e)qU+eF>Sq}#i>vJB0YM~ySN^0K66O$ zpz4(Rnt7>AM?8%TEB@*2-)`|SEqvMS{XrK!Bd5r$mlu6#eg2{*$IslO&GSCp?owJX zDL0j;g>T0Gr7oNc^VHtCdAAnaG<PjdizqWFIb#?c8TM$6QiPtZ@$)^l7mVCe{?#5x zvrG9pll!;L-`Wj7%(K2Smz}wuI<Hb>?XmpZc2@q+{%)<xJUrh*YGRW|zi_4cR(+*8 z3v#lZJcaJgSs=aj=hetbORqki&Z@Wb+RoV6|AOL2O8*{bx|_OTXVtOIMO7V#9$q?s zr1d#BpS!`fT|c6y#w^$SXSeHR=&`=vbGA+27QHX#vG&H>`(<8xzuuDb`E^ZEQ9{}K z%sR{Yq91n@@*AryUb%MOiN`ZHx6dd_4ln+5CD>xcSBui6LdR>@&04p{a&>W;<no)7 zV<x@+8Tn)SeoysHv)-z{<*k3|cYkH`o6Y8J+m)s2x~^<CKEJ8@alF#HsZXEko{!%B zowYLCbx#Rfa%|a$IyH{d+z-#c{pZR2(|BQ(+`KC<6?&R}rI)Q*ceZ)<%q>eQ6zV4) zdu;1+@A8&SldU9j`Fh)`BHE0Cr)+6|t|+LWy*6Q~sLj4Ghb7-QewN4Fi@z{y>)Krl zeoXxl*ZDp_x@J1Vr*Nh7JLBx@SxT0196$Lay!h^I1&^sO|4KO7>PyExIk)~uNoUe5 zwL(p&T|1U97q~d7V|(Wg@5xs`KTCUZ`oT=L=GVo_n_spbH-0^1S%~4h>9Y>rd_H-l z#HQcs0s3Fo&2P_ARIHj8*Jx65`hr5rdgCm9n<e(j4P7(h*Zo|7)XaD1+lh~Nzo|Nx zq43$^{zuv8d}Xyh`uD<*#<nWBd<ggv!T8l?d2Tmr?0q>k{;$fh?XxQS_I17KVX8FJ zID5)`Tjb<(3p-vo9@%z+{qjQZi!$qd?U${VT&ywc<O|0#?#ccPONzL)*M1XUvpJ3Z zX~E^BV-0hr{yP0K|Iyk6SF6Wos`5_?x*wVSHDmG5Z|k1*EV($XB=&dQ)H#dv{vA^Z zj{W`bMWR{D{HN_V1R`~;_qdhp+H*l_?ct>?mplGhY@hwJ<8A9?QJ3$NO*7{P+Gfpj z;!^s%^VG`-jX=kek1Y>fD>N7#1w|~Mc&IPCYIoLBd(U2>Jz1YT#O^&vx%y=1OJV<F zp#x`<K4+fqxp*S$QlsJ0`&Z9!W^2a8zV{Qnpmf~m<gt103??U?o^$Wm4v)r_r~OSY zn!KH2>b<Y_V3oLOuJVN`cR#moRN(tOspi8elejKLqn+EAr>wp`U-hHSZQ*dStEZmt z63VN5Rk&&QQ`xshTf25`362dCINDcoQ9Rsp`7WDzhpbx9FgB$L%O1+yIJv&`6Q}8q zJuK&^ze<VzH8DPZQ+AI=W#RQ3HHSL%7auk6_`ZqneYMPSe)h_fee)}pdr!!D$v0i; z_M^LY{cF$I%sBGd^?YZC`Tr^HQ@CfE-TioBvPxt?fmO*nM@}K}k56)Jlnx5@KGIG| z`WIo~ay9#x)923RN<VTQ+%?`47i7=oxc(t;ueI@x-v^$)lkJZ1+O@_0LF(nC%1eyt z_op1GO%V(|RCy<UoljKVzWiN}pPpPM)F<M<{mYf<E(NMyMw?yxp0z$)5N$73%f({= zS{9pg*Vw*6RCW84qlx{Ifim1jm)JSGUlFd%nHS3NG^kkeS$UiGqu5R1HW%L~#TBmI zs9x58zhRwd)xQd>de(V*pV%j-XS{v)#-~!DVvCS#d5HkO!?X6=P4}yupZIRr((L{z zaY<jzFXy)YUbgKvDZb5$uXPk9-iI%oarVia`ekxm?jNS-bKm-tuhRP~{ZDzG{IBUJ zCZ~rQh+0qXuF8~3b31=}3hT$X^iPdvo~536Q8>%__GIgj&s{55Twg96G^5wh^2=j! zjj8fq1Ov{6Za5R8?VfWw=y?3WsbM?a%U|p?I&U+fxg%wvK;O=7Or0#x!lk~N%`209 zwyNWY(Ka=~%dUkYQ<yBzX7vcEiQl^w<nYPkPsrqrPrKjG_tiNnevoyWJvWQ}?G4N- zr&8Tz75t`&mk4~_Ca}0t%TD>zhUICdD|=Sy_k4fyT+KDo;g3<j*4mIb!x{gkY!ela z<`Va|c>GAbR@pL5R`c5n_CB4NcRO`XFE!i~QvZ3wo(N_Cmruo4E@@rke_CbfZt1ks zT5}IbU-k8$b8?6OoV}d^OICFRmS2grxf~L8m&f$$*#IlK{Vz>UKU*$veskHaExKa) zDGht#U$7cA224=qndulgy>f9vsm_hfg;rDMmUs%qp5D3S<oe6|RpSJ|e!1?fyTakj zOzV@WAB%$3r!U*G<kxJ~!Xo|R63IPU`@IkD$(gPe!gXcmguMlJs_ic#WB*KH;mp6U z`TEpy_sfRMeV2$d)@-)?w2bq`?5O0JWybGc_s^Ui<~gyjNLw{^=EL{J*24SlI2>N; z^)6!mX>R?PWl#D_XHK~DNLKfyYU_P_^~$--L7Jbeu6+x3uM=X{<oM-db)>x_cz(yZ zTb^v$D<jrkx3h{bs(o^C=aTd8Th!NYUtCyrVjhp1Uk88A^wX?z=cc}7xT)E}<Za&a zzUa{buGn`bd)8lUJj5P8DUOLncg8WEu9Mg29*_-}S`l(2xFe1^<MG|<xl8$8TKU*1 zuULE8%jMKn`C~J+^H;VNKa84sip^}}!OG*$(h@y$%9}Tfu6?p*V&R^vR{xFPC$86e z(K{oO_i}rF&9$#J+ACD%NcT(pTQ==?kn{a5annV<O?y%J@$)=2P5Vy2iG>diJ>FE8 zH~r|Fi{(;0R;On;@y}Yp`^C(w<MQPP)q8w@XF7e6Gq!DYe_zXbQsaCbzs+-jH=%Z3 z_ij};l}uTa_x!Az=eDm`PHMC+^HUODdg0p1yCs}&8H?T=oFHL!c)saRSNm@jYSx}} zcbLyz_~k@<sf~5CCTF<`>%};`-$!;S>sc3iEwkbMvD$R&wE2rZAC<}edh~`XL#xu) zm(`)63mm`JrsleOYI>V*|B^R-R+`E5gQoR;7mdw|OBm+6xnI<;p5f^$7_oKt<g$?H zDSW3t@|*5`zApSj<H=(gEgBmgr+uCrQc<O!8`Y6}@P^}8p0zBMM;&BUj(E5-c4@Po z5`OH~>Q`*Jw}SO=uS~ZGv!e`;ElXjs>T~fapKCVB`<~F3c`~)*p;KVkLA_T$&d*sG z(!X>0sgFNJg!C6bSLN6{C(e6Xb!)kLYJ<UIotS_NsSF=lK03`YKd1Pi%3z)}Pw$?O zHLEHve@=a|>*M~3Vv!=^k_J-@6*tM%$zH4~l~vZ=J7J~z|EPBN@-tgLbja}(wzseM zRoBS5u`#ynaLfVef=w$l%WEeUsO3EPn0nB5Ap`T~muG?|v+Y@N#7t_g-{(D-cUkoR zQr~y#cdO*HrXuc;yl2Ydd^4nPC~o<cZ&MN7oNd76^q9~5uqRtm&E7qG+}X|soUt`a zo#FWA#Fh(RrXJcVW2-bh&PwHW;IhI<&x&Qtj~HZwN~GsW2nuk|swvu9Wp|}iS3=gz zQ+JuHl;BiPks=${{1SH;E!oBuhP$LXH*?pVVa@x_cdF4W=t{?uc!3R7tHRHJOXQju zvGja|5W`Y$me9k^N&lFQrn*#G3uy92ax!eOyClig8G3Qy=Py6>J8QC}j~NNb%|G+4 ze|^uX=-XTOv?mlV-CwKwEBg9I$(^C=+b#T$f7yH}Ci?~B_0`|6*-!RUlmFvcb+6-8 z-s4%k*B;wV{5T=BNbIkgkYn5HsV(ARj&%w*%kuYbljUoRo_{jA<9~?R|Cs)(8>`#{ ziz8Hb-*%ZB_2Mpr@rs1>h!15~R<FLdx<R|Uc2#kpvY5etQQpax2VGvMH#EJE<uje% zAmyIvx>e-hmYqA+?LB+_(&Q(h1rMVN_vi&y#q#Zy`uK3yFSRQTR)4Ll^IB)<|66{_ za{jSvuMER>{QT3T+v@Z|q|I^H^Hd48n|te`+Z?6X{Uv8)G+mHqzoX%hrq}<xbMuZY zr_S|FUWQT{zOtcj7hUac&38IKF}f<`-UFQgQ>WRdi?;JQW(s7K87vp-*V-vDH&J=w z<y#OkS&07BHPNQDWuPe#xb<P-U%E_KirFjdQ&_eXl(<7WCJD`dRt>e&Z(Vpe+t3 zU-d@_Jm@?z@zl$zKbk!I9k%x_oA9OneB-gZdO!b$e63h6y8C^V-7cQ$FHRj-o9t8^ zRgN#Z;B|R*!TL|Bm3yzO`0-d{^|YUJ_@)1MO<ZO1({l0MfF~E4?q0mtpR&U(;srmi zlYsq9DHEspyPswn>aASR+i_{yuHQ2kvkEVhKckRzcGJ?f2;a9xQ$vH-e99@k`p$Dz z$Jxl4QE&eIirkj;BI}mswDULa^juw;b0SJQ^y+~$(?GYi|9N}GmwP?5y8WQr{<G}5 zgpYFj-JC1uuPxy+x*v8aF?nV5^y+RF!Iw%Yoh#P|J#p!-%3GQj_El^3>$pE23J>pj zaV?T8ow25GUbE2WiM`9O#($d9KmX>BiC_B`=JOXM^ETAp>pFT}txtW<jD?&j0l9Wr z?~HPf_2`wj+oY(j4&PMe7isHwLrMI%(~~vFbmw~=QQ9`o?a-%r#Vk3|22Z|)t0wH6 zEoja1=f>THYri9IuS(liAR5zspULIelDnp|x6B$_<!p{K+&$EBjUzaI$Ce*T`sKAf zmsz@86V`n+>3wdeG|k<vv^0O=>A1zFe^_+vcdnUs?&oC&4NiZ}_5YkC|8O#J+1~sq zF!lKbJwp>y`8zJ>_E&8!_*P#x-CxuD=*b=3Ec3%!-x<0pXxZ-wVOv!9GI51W`Dgcq zYP%js9C>$P%jGI&%S(GFPdfTtE@X}Gs%H1Do&^urA5xZ6wP_N*DBQNaZ&`QVQ*U#* zyQjkIWdB#T{l58#<DUAB^XFbvRz4TAe_B_@#&P=Y`Ev{pBx4G#cbCkKTGUm2XTLz_ zuQM)pyecHmzcu<EdGz`b=eJ6n$EI_6Zg{S<?F;v=>Dt?js^UIfeSd$|jZ+5>e%>KD zW0AY#=kmkHZLJfx35zV)$(gP$a3cOaCzpJg-IU_CL+y8ark%2Mb#!=`$-d|0<TLv( z8jFTKzivBimcjj%JU2eZZ+QOy*r~7Qf4rane`2NU>k@XoGwf|_r;gPhv8=3`AEE!} zzVyw*ffKITuU@}dMx;mZO?TWpwVE#nRxS>fsYs~_VE!0%^T+XPhM!*a9=E#M=-r@x zVbLX7{l`E4pYfCbZ?Lyyzqhsj`hdmWhquPG>fQZ+Ic|exuhMj@MfGZ?uOsJOoxiYO zW5WKrwJD`5-U-XC`mO7E^XdH1*{{kojmlm=zq)K!t)EcYKj$28!42M)i_0d}gxVZb zc^O#ZmD}v~;Oj%y?<az0s&ZYGsnmRMpkn`3-}RTfSo*d+ukzn&b9UO~#Iyq;yw87s z<l7V6a$Iohmf-hBzvq6>xE+%0Uy^r6_I2Hy*53(bp66uO-U!){WUGD6c>2H2-#MQ@ z^2E(ADwOxkbUvk*|MR)Y_a*G^e#aRTmN{Nt6hEb?t^2h{u*b4X{!e1hCDm317qP#o zEX<BS*v}d|`Q%=1sj#NbDTg!mJ;?5~ov)m8s-xMJ`So=1kpDV=ndYq8X3yR9_wz@- z*-u_?ZTb>@yxwg3#8WZz*esvB?$i9X`;K+(e5ZEZS5?bAIwRM;(%$yJSYcMqPy4!( z|0y?i89JuzKBly;W6r&KjuHQbLYd{{&lEppi88!-=SfrgQmr*1ty5P8tXpLe{NSJY zGR>YvE{m665c#w#K2Gd_@g<Q@3RQfw4yD|1=?pSy-E(iAW7i>@S%*Saa-NS;j^KPZ z^+DXO2lHlZ`jAsBG|y|!v(o*0-n68v_<dHW;(JtLl(Wc1^O4E=?dp4OIqi7Td@=XH zC*`*qO<oeWi=TQ=DY=?5Iq6qp=PbA1@0S~G(BAjF{CG{BphNkS-zU61Pu!UqplKqL z#-{i{+GX*Ki#d*Q&Kp-3d-NPRoP1~3GVkN-KZdZTef;%7&E=l&!7Ew~Qax=S@;0aK z+4!->a<{gVKqWWF?z2lbt=K!w=~|Ok%Z#lWs!S(4c|V+4uWz_kxhuWBvu4NU-Q^Rv zs9K-p(>%q0Vdl-_^`1=uynjoB-l&><HT~`9qIc!WtQ+?yc74duTe;)K5?24kjcuP? zpGi2zGM$k6en4Vl{XM>P$3>Q<m)l?Oj6Rs5(U<+_#4-Mgi;v7#>@WPHW7wSXOJ`EV z;r|n-o?&b{^Zw#mk=OVC@A~>T;dS-u&wpnxet*7iU;h8%+Thowa~+J>dH(N};4#jx z>g2fg>v?I39Pi<;%E_`>7H0d8BudZqdtHC7fV*Wv@s@j9UD?+&bI(*d&wl*%cZHkf zC2I}U<Bv=NHooczdK;0mOybJ!uk|@w*L?lHYu%q1Jtt9V$r_&1_d+M{)yp^beP1}u z;NIQok$+WZR0g)s)R`yew|eUPXAdkCIlCHWC<w_JuGzt`g42vgSG!JZ@`I<JbFZF! zH}68gfdh$rZXb6lEIL#2^6KRmf5LORU9;+!otpo?TllDW>9Ne_OCeMBRc)&prxjgE zZfscp_1I4j`)6N_7cc*GI>f1UPkZUlpXV)2F26mWHBra*X5}^Kc}w@H{j0laey~_5 z_LuL6s_ougo&IG%PnaKkeb;u|9RF|MOHMk@>X|>G&U*Kf^JmZNx*ogCf4=mX&2=pS zAAZ%i54k7*=igcRm6!AFdKbHT(UnJQ&sKB(wP`dF`>Pi!lU=LlD%br_&RJpo)3*uB zs^)vzcwd~Yo4H(My^8(G)XDQZPCJTB*R<t+ZQ(B9TiI~bSX?GjT5^%+%uqR5$G4jm z1vuZ@9jwk5;d9rHG)a~@6%^c`xmLHp_3)aQIqUXEF7mg$df$iLS?1is^SxgsKE7Z0 z{_brt{x*qEe?7KFbS#i}U-ZP`v&FO6HJg`jep_+IG4a$_&4AO^i~fE;+QfEiX3&)> z6Owxa5~po{@#AJ^-_(s0xBLFxGs7y4*;J=kf{8(DY5p~p_WhE5j5^;hO72y7^0e?* zM0@{=700ckx#C3={rnGyx!$|wv#Ull|2<E_rXPP-P7e8P7WaB_$mPbD^;5(bpSpae zx2rRJl@&v$|3RVI=PTNM_-tRth4A(4*(mbfc+&FH52xc<pFe*1L9b_9dfCjnz^p4L z_6HgB1oxk4R!iP7`T4j02IqqP>_Q%i{oPV#_Z=?$%UPIo(mFNlTfk4wQkxkbI{SD1 z`28ZXw0l-y@w1DZGdJ9MV|nrAr=n+D_~gyyH15SeGkWGKXZq5&<o^vX*FD>p`;-bF z{FxxTd*R*9i7%hu%XC=zP&aggbL9PnvQ|Db{NGm`nIFayzfYgbOQw%wr%&83zXug{ zam~m7eEqGp{zS5T{;@M(EGMwqM(VuyWtN-%bZecEXr;apTUXSZgGC8D7wlWMeU&Wp zf>Z<MO+PgMTl(6A=54mTEZ5q%((SR={Hitcqt?hBd$(l9qG;K}(=7YUm+hCS$g42V zU2W$qdg&5}Uf%)je|Co+SKF2=SH;wb345f3UfNKzS^V6x>QkF1>{e<q&07252+JQc zZ`X}Q755nH<}ci|EpNlVUzX0o7lU4(;5x9h>1^b}4qYc!p8Bi@mnEfo^n+$idEsf8 zbL**er`uJlw-fmM?4RXoM;*N}<A-T^a#mt+a#7*=%OUe}L$2Hq{au^#dq#W-yPNdf zrVIP(uI81MWFIf{T&nfL>h*z-lDq#dy;@@(z5HhQ$ul={mw$Y<#WH%o=CT<o6%`iO zS<(!yq+I?|vF@1hOg;YV1ww0md{0|G%MAG;eIo18^10ndw>^pZ>>0k?{(JVV&RrY$ z9djdt6t7?D<#K<uL1p%?i6KX|X02GCeSfE4G{33qwsZeOlslus?=SOMXE-Hf?P>kY z(5>@o0(wvG-Ssbdm0hdP>hAp$*F{c`U*)yy%2RRQ$~CL=gG<#V>SF)&nw;MCC&>5H z$*M=+L;fy_NV5I9WY*DJuO!c#$v@oT__2In%*vN{r3Gd6FCJH%<fO!-XZ_XleP!iK z|C4d^zeqUB&d8JzD%AVCVyEZL1q+R3UETB)jF%|Cw6#g}65`W*E7K|G@@}H0tXlTZ z?>2sAOU}I2i=5qd+%0d)rMar73#Zz2E`DNoN2UL@%EGgDm!JO9T$Mg+eGA`oA@lvO zuJg=H%qV;RgKMkt9L-Kq!R;)YzP$*$H+|~&)TgzPmGLm<&!D~fx92A}{Xaj|Jnd<( z=1pniDxUN+_r#y}JS_YADb{dh-Sh_?C*OR|yknplFt1y98G}LMZrxWco?kyqQPgUB z>i@WH=Ba;spS)FF#Iohb)ioYhPqMx9QjK1jay~%yw%F<ATNa#OA9RFE#kO_I*;iGZ zO=jzFFQ2$I@`8<cVKh&)r;z#T$;(A{%{Z<8R#a$v;H!CGjz3p_Z>coh&rBh6r@=?P zO?^U1MM|HAP4~~}G3Y$tX_<I=-YemquJiTY3yY~eyQY@;bcX%Brmz&|WA4|h1Ds-W z9XwnYPiRSz-aL82il0X(OgNGqsiI=|eTvEwOOB$Z3(s$!JAJ?4?2TvL9O3t)f5+d+ znd@^<>dyj`n|x`fI8E=SGcOFNI@FpyqprS1{oT2$yen^Z3;fdbJH#(9A-~1XPC+!m zNQQg)t@wx)2jA>%zBx-LfpMefjFkMR5~hD<Fch}PPqf-xIQ@`^+zy^>g?|?|{%blv zy=cO5r<W<2%E~iNp5jPyx6b@*ayHRVY{j9k5tE|Un7SVSnY;A&8M}4SoA%##U*M#5 z&fQx$uti*X#km^KvZ~WvFNEBK-P0%j?@K;;YAv(G(MOTTEK<UY`yR=;E8gnpcU*Tp zmB;C;>2nPynbw>oEr+e`^FJKEX5QD+`{dUBAH^@7;wO7@%c>ik_l((i)_eYW#d&Y# z`eaKRq%-rlW#3QQaDm(Rm`F(BHd~2C2Zk!ok8g6O*&a`v#W}_1;YEfyPj=5UmfG?2 zXZ5aq!KM|Nf6X%+%$4sid$38fXlKI9on@=oUIrY$Qgw0djtxTWY7f>+e_r1hVbmIQ zfYD{!gxXaNT-FEV7kxOC&hsQgedUX}9F-#bgul+yT9G(ad@1{}uc50Qrgneu3jcg? zeM+lLzH$4L>@OzvO+nj=Y^E<1c_w3h;5)NY=AN^j#lJU4S*y--Hu$?$ea_E<Zy^`M z(qn(eg}z>|x8LTMBAd*jr}L8zq$l4zE)lT)w9PSx*B>s*-1&LeZ(m!1WZfH^8D5;X z`_1hhKU}&iT<X`~yswo#{<*ui{k5O|Y`M9Lll=02*?%X0@7}z*T%z{)^WE0fyMN!8 zoIkCRVFQPc{I36Q&+GHgOFTFk`}OYh-@Ds)SKGhYzvk^4vD@aKH|Euvec4u)-M)2h z?!V;URUJ_mHzq&soqM=Y^Y#A^N4fv({{1Pz{eSoT+60FCZ}(N~tp321^17Qj;(vR) zwf=tNGVt*<JS<U=<7xVB5Bxs!M7K8k(Q@$<`F4}<Hx+JhV_)C2=ABTk#3SDSTeqpL z|HWK-|6P;PmCe6J^VVE3-?x5-<Mcibo}TyG>p0`Lm3{xP`|!J&hrx?_Z!AxfKb0H8 zTNOV2?Y49A@hRC~9bXt12e1n`&fKskaL3MV+pd+KQ7|Y;dNymKNz?_CYxkx0Fv(rI z{*{gS!l#R2S9%vs4iDd8*Rwipce07z!7q6heU8U0xj%9#7arAnw_%3g1Ih2(G7Y}p zW4p{%UV7wa!}n$Riy1{ic*9;_Utv+ac42$8-xcvMm-p=1kvVUEOx%`p)}dT8okWht z#c!V-{=9dynu%~(_ObQ%Iv75@oB96n!DAeT?**@T9k{SU`p^ZFf~z}9Bt%ONIV#NI z7jk$PI6)$y-&mhDazFRshZnz<$xk`JUc5(jiieSad&`fvax1zHR^>!3ny2(V@X4KB zJ2zhZwM$TLZOX%5&E0nt+C%QB`noNf)nTR6G|Pc!|8Yk4+Tz;Es*4tZ!J7pe1wJ20 z^k;H;^FA#j=@-WVkH62}$!yDTd>CsI!Ts#mceh$Q_c=jJmHOXVzRNf;`LcoQO5L^p zL)L{}u}_UoJpAMGhaKM!eB71rl>f}Txo^|nFWKLw<x;!IZPDqKX4jrdZM*T7W5*#Y z_lXkAmY;q6{D#S&opO;fDas$FMv2=jzb46A^D*oKufS@l&?mKqOZr#z&Z>zD<XE*j z|K+YlJJOc(pJ-cO$h>mX$MyBO;rC`n@146={{H{e&+-3%aZhjyiR@>4;aPI6*KsYs zvCWz{Is0zg-nv!0e_C<2*8Cc^4__k>{#2itm1Ol~o}%vSex82CDX}k??f#&9B3wH* zKlT6GH~Xjl-Tu4i{qe)h8yM<iZr0!5@mIZcjZw~i%{TT@pA-JSZMe9-e8Xn$*Z&_p zJ^1d_zu##;{{QPX`F}qee29{~(*OJDXEkYSe(3#FZ!+z4+<$$3KDCek|4#pK{<Q6r z|N3!n<m=L9*8KSI^*{dO|Ed4>|I(TJe|jeKnRWl=<=(tq`{lnVNJ90~|G$Ut%73r7 zi1_$l^#AtlYcFV@{%hR$Uw)6po%>IJ{Xh5b-@$Wszv}to)_waw{nJ9(zq6(5xbL3r zy>rPt_WI-P57@Ge7#Na&P6+*=!O-)1DQ~gZ2`}5(mSXj%?_6}S%R5vqXlWpK>Efb4 zmdn<MT-{fAHRFTb%&o_~`HxRK!TR87{7gpc!vQx|6~3IY?RMI}T&r*L6&<ItUsbJT zesHjcug%Ri>z(ZV>7o~|Kban)EqYw$PSmo(`jk7@n=ZUhTzTr)_x*Xb_BVdrdsXxQ z*^A$s7r(!~^?kMU?Du`!zTKCuH#GaVGf*@-%e*8+^4-UEd&3{H*H?2$FaEG@QN#Tw z*8A0Rr{8P2=l<-{u@6%BXTScbv%}kN+uA3>-!eN^1}s<-xXf)$(KTy_qi1zrR~j65 zKEHAI;}@Y9zJAyda?|KcdP948V!*O*Gk)!VsJ{A<vE{yN2i|PH^1_9wlVLT#aBq0j z$!!I<4S$vPn;)vYbwg(c|25vN?E83I^Hv;w@iPBf?)SF#rfk>BHwSrzd{~$+X&uz_ zKV#d-KEt!s{fW@ku#}_oIs=6sTRnT9cg+3gsqK;L3swlTO>2rUJMVwkT5#g0m3oiP zmf4DbW?b~S*FxeTuYFbT{kNL)S?^k#89ZLU=!8TJ*Zv!C6m3^1?B-(s65(XPc*$D- zLfS<)nPUlZhxXj!du{yMjctd^(XG>+U;H}wd26QJP4hj4CvEQ?l&-wDQRiT$!_<bj zWL2)X<L%Y5DLp2<25H6CQhy8=JhnKWW7snD(yVU3MN|E&w#m2bIe#b7S$%TXjJ@;T z-Z*lb+pDrpe7V-=y;3|p%JqROc6uddF*UfxKK^~*{lNOft5N2{Qj0`3dbU<QJ5YAa zb*YHylS#F9{0mk`FFZJV(Nw|ouq}Rl7N<2^Zv=lhf9ga@$BMj*7yeA_-svT!bHXv{ z!M&LW@4Cb!vz=Pgz!W=UR*T0n>vc>0Dm0`zJUkyM^&f6la&EkFuuaW*2B*s&^|vM$ zS)#fgFw5zx@N9nMQy=B%(EXNi)%`nt!Z}>ma+G;$f0v1DN)TE-YfFN9vCQ84k~2G3 z9<cFh_^WaziK*WEbR*xRO&o_`YE5_AvLq|@^c=R8vpjZ-?viKv`tfXqhK^m*zEj&m zPi~0uUVHRZoT;?B!JN_wz0<nxyg9LZl_8Vp{RA%Yt-*(@Lf*U$U441a&Wh^3t@1V2 zDdrBfH+?T;%RT9Etc`YAR`Zr^%I)YI?vKBiykh1O{qA^H#9a2V*X9JHX<L2L#U@Hg z9e?q0_A${zxAz*?{(Cb0*wmVe{)erfey+Y&`S?|MO-=UhW%gl97mEkP)nCt?`~TOg zFONj`apjiRysp@Oakk%QdD)+A!GDfO{|vF6sOz%z{4DjguZ<&%4(L>ybe#IUeUn(d z^i|uv7XLl3mDp^Tzk1kwli0q_S0?AzpZ}mKHSLe*?#ioK7i`#54xL;s`_IGa-m8L= z){85mpJ!cgNL+O1DC^eNp1>_7Y$+;TY|IPTL#Oro?RnH3{Qk)06?d=sKf1W~Zn%H^ z{5X>riRVB1e0=ld(XXqS!tzma1(|B|%=)9#Yi5YOZc-7uFxSLtkIsjd7oN*Ym(5%B zRqJ@owVZOP^yxKM4!QK*J9+%i$@RW|6%}tvU4DJ~G$oTWe${%;p!^G0W+eql^ZrWh zieLXS-2cz7nRT@ylRuWvYP)~bT8TASfQda^Zz9`9@!$_r&9|t%JCc;K<>g!si~K)M z``;bacWTz0aA85!vNhlRe|>GA5%lVB*q47@#|pHMUD%_hB->ej<=NVd&!UcH+6vWQ z+v@Im8a-4|suP^Eo#|Y-$-d~5Om&OmYaP2-o;w_<^x06ts$(xaN1lDs$pSIuI>D4! z#+#N~A9aQO^HlvmK{eAQ)^Jhsp~&zDZ=P?za=5vo-0{85$L`H0j9;aHm8#dtUjDJG zQ6<K2(<AY(37vB1IzPpFelg*{CO=8FpiQAJ@V(EMb2}SSn0%#lg%{WQs#Y(0@_PTp z_4kkH&uX7Hqy0KdslUVDSuZxLzxb>!)Ksg;RIg<5o9SHeEM@mI7tfpQ>o2OQY2=Ei zTlUYc>))&^T*7Pr`0TgqinqU*@jGdY{lzt3j;`6W@Z!DBi~AP-d*@Q0zhb}j#rx8S z9?U)PK>F2Rzc2sVJ`|~c_|#UlL)dmp#<3j3WL>Sy?n$~*YjxdjEA6?#q_5j_RBXc* z4zcJ1mlnz8++<!`9=+!K{1tKW*B;x1_Po#k^3MF@yL=b@{hnPaI<+DZzh*vrzj(&} z`I$WOM<pN*Th}qE*72l$@ND_i*&sKYWxkO=dZS+L)lZET&(ozYx*IN<pBY*!<9+d1 z>#QHH$puFw{8rk#e<?q8biT+m6ZgIui-V=+D<3OA<+?&--j&_TRrZTN@*eqdE`x{p zq$!6mb7QCRqRov9HXG|*b(w81m{QAlQ}UpZz=k=3W$aA5(~p?4HD$+K%&0ZIW!zMy zu)uEl#@$J8o?mI!zHS}Zuf5{=oCRg9SDw4r>P>E%ce?Up->+iV`sXc<;Rzq+RF%8F z*OhA4JyuZIvwzRJAFi8UcHZ2x;A3S{jrb8?+k?LP9L@6%JW$<gDUus^=|@{q&Ge8W z4X=I6%58u48Q6==*spSipY_>)zs)~)&p507>aO_S_=_DihKsbdUiL4!bx2g~W4D0> z2hX;Z-yOc(Tegus=}oRwu7ca`WpYdxooA=13T(c#>>^vzmfS^~9ZqGgo8T$h1r~g^ zYKp{t%dgM7{>^Gpoym1=nILPC%N8@{jb^t)j3%gdRxvr+%D%D{*;}6Rw>3ym&8LM) zSoV;MhQY;$zZL}5@BE})Cm7ov<QHF{8mQ$TQ!2FoMXbhs!8r>XHaq{|VYRb1`4-T# z*I9yxmCf4ZRzT0USqtPiSFB(8#AC{yWnpfMre;5SqkQmY{X)Y#-G+ah3hr@R)GJ!N zXPuMJDa_9#e7t4zx&t?}e_a*ce=le+d*FNdmg)XX`ul_UlP?}#A5x^_^>1?359co* z{Ab;^cbk}{`S;!(Ki}Dho-}m!L_B4;=#rVh+5dKn?or>@k=d$wNj{+=mCJri<J(x2 zEN;G4()hq9#ru7Um9bVogDX4@dJQdZ-Q#m}{_^H(#&+H_S7$x{zI|cN2Hp8NCodOl z-_f1^`rpy+wTw45R%|_6k^Q3D`B}Re_rKcu?!0rI+D{CxOYA%M$w523Z3|P<JH9@J z(6%;h^Khd(FDGC4b|WC=URdOtLzn*+b01pz)l#&tD<MWL=47`ex8SjSORpc=N1gxb ze6F#N-t@+o=}rpkqS|Br?x(*y+s)Wl%3Ss;H}UzN848D!^h=-3U8;GdM*D?;`;7Dn zZYFL|Pl!HeP7^MwN;dKR^WnpZ4R7*hBs`w%_4s^$j*N=de1rC<A?GyC3U3WoHJom> zPlmZI^2WmDymRM=E&utTUcNH%;j(#eH%U(rX1+c5ROh<+Y13K^%DyH1Ynx=1wPAyL z#*KHq^&6RgUn_f4U{fex*%h04@7dAj=ncXG>ioAlW^NF*eY}pt-ryih9h>m_uSGJp z*S~c<`u?G-=|@sfh2zI({$|@R&YExV?8-S&QAx{ly%ur0b`Or8Y|0Odd~><?@SVDf z@C`rZZq#pRx*m4W`U?a5t`g@f$`T*>A|hfmgjZ*kUH<)dUGMSRt8Opf`b_Pt!G(zL zi`Qs=FkN}>!gls$_WKr^{EO5|>gc~)o^Nsf(uq%|^&gF;{bj#Q+GDgQ;92)+k;y@M zGYz?KoKQLGk-AK1SLdWT;TvXZ`v@Jncw!l|_U=O|FSuU&9(-NAZlXW;3{lydt0fb5 zrR|%beP{ML4b@3Oz8WuGt~XtJvg}k$XE<lm9G-KFn*%PCm$7g;PPkZF@^|;K?ZMi8 z?5#`QSB3|cUbOv^b>>mr?=xv9gX-pAasA|#UG}K@teNM@TRE3Av??<z%M_=3+}xg7 z8yQzC((W0z(S%n(;f>>;TdrLmBA!#CU1Fz9if;O)$y4TR5o6=Z+dQTFP|gkYYqGux zy)&=(rJs%I`my}btn*AYfdUVfPW6hMx02)Rle6!Fr;3Dc6>mG_dvb4D^gfBjLd9O6 zCcpfU6TP=)_PiBQ#=1{f+D|;>-T2h*t<(J4&h=v7r*Ge}|6S@_+0%B>2Fqq_zTt0J zB>H~F)(f8(n_TW=H&~pj(a9pR`Cw@}Q=e;vppf5|FI{u5Eqc7hR@l4MW5(g$=DAaZ zWURU4KFeBJYRoU%beVC}qg8tk9XuK{N0?{!%e@XS7P<&tX<&MMz^_`%$fmDr(}nh* zeM&o&wqN*NS<_>`xloT`;_fNst=gu7PMt;q8kgUtWxh6NJ`=O(#Eusee|pxNBrKEu zpL_G8x?{%Oh&OR|K^r$X&z29Ke`wZ(%R;G-M51Kd!;}=J*SKY=IJT`eWq-ZOuVq^H zg7fMM%hWtYzm+ff?K8#T&SW2+=yz*;rMXtbcKXfo4CBaoyrsGQW?9sJlYFbSeErQi z7F)hJ|DG4P+{og=RIQ70ciS$`J{S6UPwlN2CjN`etoFTRQ~A6_P0uQS)|Se;#_31b zJiondGf%L`{Tl_BnQeD2m|OHi+5Dqs8sonc_n-gyzLO_!iEaH4<@*1Nk3JUrTYuxb zQN@R=A6fggcW=#~7{J=l`}uBdjaU4U&0({Tmt7E-G$^Y(wDIe)65Y-v*ZlV={F~~S zVACS_|CIXN<bO+wbq-H;`Mo^w_wrmhk+yo*6{jWZo9d4WH+G!n5T1U;<d5J(_TPKX z9kyee{?u=#$)(eCw}t(FwxhM>YnPK!)WMCsQ{ztV@UC!uDEGr8!1UJj>C=~=-TbWb zdE4=}EluAtEJ`v0OZW5?MX?8-Tp{1`=+U0bR{O6hG9Eoq<}PKjh@;(OPwxV&%x(Sa zqt<T`+i|E~daFWr0QaX{h0dk5#n;}L_(|EcJ?oX6)5*bdwY8@H^Q_|mTSF#ZH=4sW z`{&Zit9h|=y2I)op43?-`0?AbN2d8sd-lIrDfIm8_LV`;-zdg@__XS$_v=Sicb_di z|1LLw%EfP~k5>tc8vhO0=X~Jf(gvw`*Qx8`8E@`qyt3__t8e1r$h8>>;b*U(UH$Cm zMl<H{HOFh%v|48|g?2o1*n551$45V`9F5eK+FWLP1a|l@sgTV$Qc`x)s`uihgpTRk zU6#18vZ!9%z2cjG@9Hq-3~9BWI<r)5?C$V>%nIh6EgmkxcHg3R`rZ$QD)&l+TBFq& z3SUcjoen)5UVgn~i)(Z6ts3dWidyAXY#SRK<o8{gen6CC*5ujO!);daPiJ^05xu@v z@<IFQPmg}R+Ocv$Zng6M(<T<{XVve|i#@8afLqIyV?_f)V|<+C!Y84>A8lFbfB$Ii zgNJfkR_S*KFn`Kj!0LB2+3eYb<Fl4c(3~2-)p41e@LKb{!u&O>gA}at_53(C7<*;# zEn3o}=JU|f&!nSx-!8-B^H|rucxEKo^8J;_M{ghBAkEBBaoZ=+f@{lW9nU}4sj?we z>)5XH3Wxp8YsI`vFXg2<3e04T{Nd2_Xky75#c9DuvTbHGZn*3???Cy5!_IY;ieVj- zru?hB`(&q8NN!i#58q82Lzet3nUbV9-P&gDEZGzB$u_4HElmQ>rLgfGv?(?ICE#l2 z{Wx^7?&io7UUPOCmg?`x>htJruUU0vmZsFAOO_S=e=3R-=FgUnoV*}~gO%C)V<5vu zE$5Tj-x3TiEl>-IGmX1EC1T%A?OB2jGSeQEr_a)3$h78*%V4}F8t`cG<@-}6tL$g{ z$T@3f)|awNBF0yfF3g@$toXt=WzFZD%RbwAjQ0l4+8r>rbJEj~56<NrRs1~HC~}?P zmxBu)wM_q)<u`T4c7u0O7h~sMoT+|!C-3QkhL0Ck<jm<>sPZS`(~=2auFaF>ku9E6 z;H_#VEgZO4>XF7X?TOoKtvAVb$1|^&OJ2ZJ-XU`AQUSYXp`iD@(?KylF`IKmQ$Iut zJ8V)rknGFYV=AjsvE{VvU71O*`5l$?wS>R>o-Md{;IWKBz=L~dI`0WRm(zJ55M`j& z{rmBi>`yyYxeC~09R&rOmQ5A(yB5MRD~#oD+GY24-&@Z$xTI!>l%G1Vy_2<Lf%>$j zr=`ZRo(GQizPDv@m5#jhJj%fO6lZjR+s~NdQ!lESpRU=e9v>Nhbe3jwNwVKZ*Y7n( zp|f1ptlefR)_={n<;A(ODy|ip%F}Ev9+Q4(T3{nqeDCk_Ke{(1zb7q!{Io`9a?%5} z&25`@POQ9tTrYpw@}<VNj|TInDX-k&GJjd;mMiCSO}@|BHj`6I#M$P#-pXC&?|rt< zUvjAEo8#4oh3=h?7kDiT$~&pke(mQ)-IMD&Dwe%!t!X~_N@MY|$-kQ)RfyKL_(|=n zxb`?CR`Zlb#C1=lxj)ye&oP>vr)Jc-(PY-CNd1*tm%d%eBt2)(tNx@OweV{l-!IO~ z6$xB_=kw9X!oZAw6T>X;z7L#}fAX;HQNDw|WeYQ$eMIKuz7GmHRdo8n-s$1G?^xNA zZNKEcWVOrN(l1@}cw;tO?B$@HKj+T={5rVM!r$Z6)H9d&XUceQ-|+hGjJqdfd$#(` zS}%Ql`6mwfOx1Pi4{C&h{jbkR6xFEl5IQmA_4ihhC1=Cq1kdl4oM`V9Exz$)_x!FG zOlAel2}v(2w)h|X@i=7Nx!K;$^PIX>4u#x3E_Ye=eD_R~*+*Yn<-hcq|Nn60>EC;L zq;;>WSu<;>A6J*U`#V+k;6AJW^`-y*zxp@*>d*ftKmTuJuC6F9lq_fP+4cYF1B254 zr@QYqU;X+2^pB3sU+cLI)^^Ij@plPeR$39cP@VsNf7!$(TlPp8ZTFoXZ*I9ZWW&T; z_iu?mf8^-&d=H<d=bZ;v9do2yQg&SK+TOLgne(IH>#*O4empElzy3gxIe_8cM&`q* zJnIkclMVjP_TD}y{3`Dor$UkN4b|KC=eminyKS3sk}WWQ(J{XFt1iCSl5{KfX27yE zcDeSYlXiJoOYkOs(X0u1`Qp;qSuLy!E6V1Ss{RlER1YHTRsY*RG-G<!uDg!OXTtyA z)%x)&PyTyfU<mtEFDd`hgsaWq>KlnCV(0raPW|+kOJkdKOMI!OI@8iksozgz@blK4 zJufSlW0n%j6VLqG_MP7$=Tph-`xd`m`jhj`{e+_HpZ=6{g%^ET^3HJH1K$2Xb%R)b z=l?509GCm<S($uG?xxr@GoRB<iR|28tL+XuEHv&iH<f$yfzP087k}UEz`u+9_7r@x zJHwFA!IYZ)B#Je6|F=KUw>QnO-kJOEhVoQisb#%al~$bhVc)8q=9@RuFR;CgeUq2t zW|5bd`E2J;y}gbn-MwG1&3@<Ik5Bj-EZ)6cx6S0q$=Zo!+$*FGtvTSOHIFsGIdPu! zcZZo<?pyh8kKJ{d`_}h&xe?nG)fobOCQkUN|D`}NL4nmm<cWe_l;@)#hrUU?;$7zM zcwO33jCcEMUN&W(C%mF7vzIHeUCCo)sMs#n&wE^Mxth0NBulns*!~5J&Dv$u?xfy* z`D;@1+nEwU{b9VfBt+J9R!c6Ld$RW2Wnl>wk0YIxrs`iSY)fp4yG$(>6?NsaDBn8r zs&`J)w)GYgmp7<tX>fiMJ3f7<LfEa_;Yt7B?)SJ|U#<N+U-R32{#$?7SO2cIfA{Vx zU)_z$kB9s1*Im25J@fz7i2eIhciZOgKJxYdrw0j_{@(ws|8V~F>Wu%gZ{+v<IcE`Z zvtIlE{jUG|r~fbi@&DBS?T`K+`LAF9FOyqXPyXuv?@8Z3JZ(JozdYmr`={ql{omfx z|0N~ouTsADz145m%?&mYQExZ>+SZY>)>bNE!l{XcpI&jrNl$<LfzRhv@b7Ew$FuYI zFy595@>#Oy$b*Lu7p8r0in6HMFf-bCx2f?RHm1*K6~4H~?y0nyurK{Zay9STDx3Y! z&U|scZF*1X+0nzgg=gRG`nN8tWL@v}3*UBqjAyQjTYU4E{NCgH*L5l%>g%~77yl4+ zmq5a#u349_2;X2bc^A^Vf95-m2}y4lXZo+{c_DPeXl3-SH;(hlx2=8knzwXTczW*Q z!n&sAc5}8EY+9H5U?ul;#JvH*2V$ps&D~-!?fq3#yOTKu+tcQ3kdvL>vhV*Hql|X$ zo;A`3W#guHoaCtypZ=4%t~cp=vF<&tw_p1TW?k6$BvQG^IYihuNtQdG>-cSJ!REAv z+dH<M{$73iPOOl`?hF0zdw-Q5>n}O1w974Z-d&XnTYJ`m>(YI-yX(b2IRrItTk3pg zxmo7}gGj+&{#&Mp23LLjWfvE%U$&KX9v4G$?PbGRS5molOw@iqQDmQXMyS*COR7^l zpY4#J)s^6-+1OIJdEfI8-plEq+MSzMJ<9l~IrqN%K8y3dTQsyhp37`G&bVTs{G<m` zeSa3Ri%6YqQ(EvuW_|ayYndI5fg8;$h3_%Hn;yN5e{+w+O}+nduIXXdUF@x=cyBq@ zEzkzK9pFI81P+0|ge!Z68^U_qt=%#hwHE#JeWlD@%zwmZ!PYL`2^Y7pm46e6esk0I zz^@5EW8W+)+VJ_WTIuVbK0X1P4hD88vWeVhxXfkaw~fd5zLEHZD_av^CGX8Bcs}{e z`g<97S2#rfI2(We%1XBPGaBvQ=VrI${%-S&?`*rFF2UR8^rbL{*_tDxQSk34SNF@7 z6I*_slz1(&dg77?ibs2XU69%P_M%Vi5k2;b3;PT9uz5Odyt~d==?bH<g8brSegjU~ zmx>>%9x_i_dt={$+!a|i*Uc`<=toSgS(*ObUFpZpcK2CN_}@PIX0EXD%LSkEGxH0@ zt(d%`<C)tOe^uzYPD*@W8S?56_na94b9_|8c4QWq1Z}=*!6cNcdf}pI`?iD`Tzc|- zeRcse{MDt83QRs)%BZX)u65v>1^>b~#<nsx+_w3)|C75iZ4Wq034Zin@+O0`>4?~2 zA6<vOEW<yH5sTY2zninvU;2?Lx|CU{>bl61tYtr@JvrB)SJLPG?Tlf!y4^*S8HpX6 zrWt51^fw7@Y~1MoEaAn4eT#26ZhW%OGua}A;iP)RmA>yAX7=k^rL^@K8w(U3teUiF z!~2{V&NnJiPj*aVK3u|oCtvki!bj%Z4lT?6qk5UU3VH4B+`PM+XIZPdZAHcGb&cxE zf}RgnF^Y7RW*N*7JU@N^0!>G~Us--8tF}$fxaRZXPH~2zQ)wMj0NdFmPrWDY|CaP- zWtPfC?G4?lUC&sSDlb{o-<8tkf8l1QM`4G#)V+qEXCxp0?2zZ&xZR=DBY%hVZq3fN zO=(qW(_0cuox=l8_%n9iNRHE=pJm|h{mNyg$mE#puF{kP3kCGV_FT~wskxDnqnFtm z;WXKM+l#`Opj?gV<~vqx`|%+}zUxc*q(>SOcbWW!eSBYKyR0=)VhY!>d^O=ouotg) zQ0IB`7u-u0t$VSsMA4u?_O6jb8GnFD<j>iD(u)o|{E)aVoLf}u(J8v(j7-Fbee8#p zbZsupwsPsO$hLeCaNELl&x2Q|X32;t3VoDd+qm~`^%c)9m)x%9uWAp~3-++hO1;7H zEZcGQtc)-%mHTITH@OJBkW+3`+UUKjQRC!EHdWi}@1~qv<?m<O+<SC|`)tu&ckc1+ zTHLTjt}cP^WAVau`&Ieoi0ync*(FGZebPEZ*2;`>_j?))X^dts+*6L$EeTZ%4Hvsn zJ6+!9ME;`XoF|rKq|AE#T*5W+#hwM*>}IB_ype4c+j(hum}qH>@_#v%2E%s@C!&uP zWbZxg@##Rqmw%VKZ4cDOnU@IktYiOt_^POh$(Gc4XC=O89rItYOv&OnS8PzQ=`H1T zJ{_hLGN+{JWXH}jxWL83JCSXZk%VyO@g?ewpLin}&Q_jqI*>4FO{1yxwdUSkGhXkE zc5!4(V5`q-oc7}TMTKw2mI?Q5ud-{7H`6%vJx-i8V4a!rA4ZObEz1_Ft$C@qZn6lw zU$^qSg`5%M>Ni3bt1D$K=-T{P!_|BH>CI;hRIN``csfp4cub)G^t>Cjxk>uIB4Y6$ z*MwC}QI-8D=9T8az<y`LU6VE$_FHS3f3o!6oB6$G%M+D`C+Qyz<oa7Ai|4HRG2Q*s zXU@<XPYE@r-D=;a%NQ=|IKQ^#kPM$}iGGEi0Pk70PhpH%*9~)Lh{u^FUuek9@|n+i z^m%Msqsp>;;qVtf4~Q;RJ@sZu&UMKE)f*;0$BSo9_;Fxa{?Wi|PRBR?O=*4NkorSV z(1fR3`($B)YdHU(5Ieoo*>0=bOD1nhWPY$@N7@yYwzB!nDc^i+e0?G;O0*^__}w(x zC(aVx5+M_JU3%fZll9C;XS5~Tu_#-+h*+#S-zu5v`{Ce{(nT!a^^y+!so<6JP>9ic z`EA$5l)k40Pyg_Gd_HcWEtNNC(PXWqC3YQCHF)=D@N!So+v=xx_sPMho>9ikD<35J ztx`!c<-VYG>wlP;c2%J9x*6{#t`YQLE|w|0r&7*hm+O63f3m+=#z~W@E9#t=D<>Rs z>0j~jV7&g)iAV0L$4ou>aLd&bDXK@7dX^rLSUzoD`@~r>=O@~H)$l*RV#aJ4W#t7= z?E2UbKL4gLp_6xo!?IPgB{Wyh_j~KDbVQ|c`j!v>jF-8oB<{SL@R0BDi7AfO5`S&( z%zUBT*;JXn+oS!CwLnTkt4^e@YR>HW`w|LW60462l$v(bw58{UEd9G^XVs6R7aofU z88HMkxUhsD6_w9q58b$H)ro7mZB-ej&Oa9|6?8it|3IPZp5KA#>Qawp8BS-~q|0>e zQ-zQA=fWQyb>|pg#9TQexGZ!=l1lXK6E&i>oX+x|8GrvQx@?uVj=A`U$fcT>>6>mP zinV>cx^Cl|9?{veIA=ZYQCs@@pou}&oEmPy!p&zgC$w)#@tvJ;?#Rg>44D~MGoL9g z-uY(c$vNywaT%u*(;A)?Udx-YLaI<Oz~H3-E8{lJ#J*=LhZ5ALvb7rgU9Pt#$z}G@ z^hbRGXP8531Vh{FmM|{){qaxMznmFC)35DWcWBz_14;Vnu9Fs(_O~DIJ7J#w`<fVE z-I`~U<mYp)64XdI^CeqE@3yGA>T~~gH}xech10u=+?vmdTj~ZZKF#L8CiT&Z$2aax z6Y7Rs2M{)QlX28!XCa9>X|16@byy7&Ba>CFCGRH9Sdh@mcFCtBa863WopaMK&p)1> zskG!X_k}4tBSNPb*|+6PaX&6oc=;W7+9H!pOjqy9I0brHBp5Ffke<Bp|E&oZLf336 zpE7k~V&u};^ODiK_E_ffUw@tI5bmpgUe1#9n5Ej1ccx+9({8y680|SL=&&;O=?t?) zYZUG{D^6y6X?XeWa-B0ROT#QCvZrk6nrr%Qb;p)>3({hC^QnnGOxf(u;Beiooa5_) zT#sdcQXen*w$3ut)I4k5Ym?lGiY%V(is5VXzuui*>65o`pU@4dhaZ>ic$uKOnD@u? zJKP&L-Evi}tbARVEPc~${+V)-b{4ItiR@>RYLdmKM;{C6>f3ouRnI$VV&-l3*>lCN zMXYhywB>2$n@F|APBYH`T6X?>^<=Z;b8@#7Hx#T~!FuAHsrB(s66e<`O!m0F@Mx!y z^rM)w-g*49n7_Q%;uYAtQOVKe4@<;RsfVpk7fn!Jxoq$JL%xdrPgHL)wW>AjbeY=b z!6c%<@7&B`HAA#6<Hp(<yQW<1uohhTmwji|(;DuV(-co_GW@kEZO#qGna3o~Tr|Gd zw2%LX^y;I_+6t_n_3?Z<vw(AMnzsvYN{?IItt^v=P2#K<1+*;KN{pWF)cO+jqOV`@ zq}s1Y$CkC`x7=3m&D)c;CHn1?ls&nn_hMqod$#wkUVW@``PCe0@$jl2=Z|JDF8sIp zWAW=hELWUnySLOx1^r6OYBBq0>wTN8BTVNl^NdOTkG8V3co`M^t+~kHvHbP)RR+<| zCG0D%TK(@_w|%8l`q|Zw%^6A`hrZr&_2*QNkEN@N@8x{nu+(jl?w-u0r8Tv;b{vv! z($l}?yDs;`-Fo)&XD()|e0P^^`FwIO<INOy<9F50_uY&;1uijX9bM#de&Uh~-<Wr7 zx8ZOocQH{p+ABMug=^2cwRhBGEINO1-73AntaHh)Hz(@fLbmr$MG};kZ>#i9&$!Yf zmZiY9qFc{?{rv5m{W3+5nBUB^KUeVd<lLtM{9iA``02g2E|Wih_tu(K8Z)zUxRsw~ z&e<_fE2i;~t-<kqsz+xuyj^Usz4gDkBZuK7%>^%Jz4>~4XRQy<qRaZ0SNnV$IQ)es zwsp3f9{aXugQ#Sd2&*jX;s5*h=D+om@f7-dZvBNz-*q-{Gbu7|dvBC}NALQU^jBBQ zu6{Z5_3J`bp>4YuE>2pZwaowTD%<b;Z}fLd&RnTpwf{iq%FD}dd8|AW;*yf$l429` z;VkDzuY)gnUIxl=)I8x~<~x)5{M$LEZ3$mw3u=-D<fSJh@ui5$G)NkhB&>KZGjF?c z`4(Q+eeM6-BWK*&xX<{T4x^0rT%88@*l@e-)dtbu-Bo&CL>D}NlO&nRF3*zKX5IW| z)2FPRw|5+pzxO2B=JJCtJYuclaVbixIyv}XNQx|3&}eaCdhrbv?fE8ezHC^Mmy*#M zsBrUKNXd*3qGjibC)5{rU*Ekq_&|?dtmDzmFX}3pL{FVpTg3M}x&LtP%es$CULRT2 zulsG`Im;hDj3@Vdi+<j&cTQv1(UaLH-19mk=NCP<U6x$Bm+|^`XJ=i<!>9hK`OROy z!c^pRX>CIDg2V~RzB0FSb{f7|czlfq;~&reJhQY71uYnke)!Jwpw9f;f!k}G{3K;# z+vUt39p<W%me_at-N!#0RbI^VlY8f~&h?VB-xnU1lGt3&Z^8*CE$0(%=<+8lU*WwZ zY?ApzwM8v5swa<06}v>wEL>1?!mX_B;k>lV!opkHSFrJ2R&8g#d$@Sg&v{(2?ee?W zId*O+pR)42+^TOK_s`uqB!2AcY;gtmmYw45+xFLd=i6KKxu08sHOJS<`ry1>?v=4C z9!k!8_58%<*n(`on~u|W<^Npk=lIplef6~)PBZOSZ7q-W=J&J8c2d(i(sDx0j9s5a zbZx`4zs{cncCvJf-F^DqY-81Gwn`mso9lH8^P~Fy2Xd_6!2WwXA7|aMG_KE_$B#Qd zm935oss7xdueeWgL)cl{Tl4o>^zq+#;jGs3L;O`j>Y;;%nZD<ln|2G;wO?53dD$<) z^j5GAkBZc*Aj9z3=~iz91?SA<lr_1y<l{lUH>$ojxc|=MyW+{8&N|um?ScN|e#$<7 z^<*~B&sJ$Z6aC<#kYC8U$p`+*#q!^={ipXumNCD({laz4kD79^H~go?u77NQy^XD} zzvg*;_3lkyy%J(lq?aEL*fwiv?g~q$%@yrI{4TEjQ$6M<Yp;7_tb3c=ZQG)0kwGU8 zYA?y&yL0zDM~{dI@l2Cd8j^j#KA0U^^WM(l_WZ`rXLj&TGFjS`HEFHH&jYo~SMAfh z+0E14-C;KO*H@1vPPZSby@-_EaBAnTsg*zW);ylO@UURq`@?Uw6IN$W?MU3YIIHIG z-Ve7AeJ<N|^q_s?zWf6-PnTHNURg8M=J|I2P0J*V)C^Ueq-<r%Ro*i!FY=%HeL=YJ zAOG)vmnwZ<aq-Zb@4s%?p83*W<X*e$wA9j%=B54LM2>Dzp1rG#uk_uu%B6*@HiFM} z+|N!pv-#5Y8E+?L72G+>s$OXO&i(47THpJxqg~|04YFVDepmbRQB#}0;?-N<rG7nd zcaB@%I3e!lme#1tGqk@<Kf&Gfe(Lt<IoGB4I!xN+uy}jMM1@~W=BXcqznE?Jl-$0H zF+R<i{k`s&*+v%W$I1kz#GcyZo>qA9Z)R8eLrwRai=RqYzb{-?b>qsfgz6xH?yZM6 zROy?Zxad>abNe-SOiQ;Kqv3xO*-wiEYIa?<JH`I}8<&K-*umc%y0`y2CT|f*-F)$f zqEgq|k7b^Rjm5NkXB_*;yywaLlh*uiYgW5GI%;>R^v<GU-svix%v#f4I9@vXQl&Gw zocZj#du?6TU&{7hHCUT}^45#nz6l-G(rSip->U7fZ432D{<G(PW`jimzemSw3EOw& z6)cbC1-{Po$YlF}!R_(&_<Gi>Oea6}{y!@C@8H*K9806$7&5Q2<+X9qmFCS6cAfG= z&|`knu`L%_OTN!f>6l-B>yh%2qNv_u@gdz-TPLpZ`*EXPj9bOMtD*K?c*Fz!i@$>E z_a6AHwE5#w$Gxr__9&@17%$vauCST6&gko%oW-u&u1;KIoO^45Vl3yLT^|BHHaDN( zU#3<3Osd}O%+;2=;@dvlKahW*ifJ!P*A|m0s#5JdC+t^=ojlujdfgV=rC!S>uM0k% zqSX<rlkdwO8?!Q_t4{m$%j)FiWl|9e+1lPSSYzVTxMermuXpGa(fwf)<k<1JVxBtd zyN>LZeHTUEgmXD6t(eSsoHM!3M21_quX<%t%DZPVzwc%zHY~aQ|7U&w->?7wn7?e3 z=JN1)w4<?r@#2A$BlF|_H|-KMDphtXH9m9Yti>YfD;M{6JUn0fuw~&~qyLQ;p7Ac^ zm}Hs59L0au=KWGNFS9An8h%Z=rLpF<%9+__(|6r_)5f;Y$w>9a&t+$K<|wQ>GG$w6 zMS5id)9im27pYv@Rp4;@X%yew1-I8KEQr2)V#9SY0nt6qffrvf>Fq0fq5hdgBJ-pS zOGeD*lx5OO#4ZY@*|GjQw!=y1QC|W7mfd?pQqN4;S??abHS_De#+7`#8BMG1WWUMo zQ@noQYxIG;ecAW5e;qn=`txy%mCyLOV<s(RkNuu;d~Tm{%3)or6fwE{^hI*j3T;lc z(&-u14CgnTTd*aJ_xpQZjjqQLmrngDy8j{N=Y{oVS0^R-yjbS``v~(yFNv~Ne<7`h zE4_oy?NA7|&6}hDCfAgezs|RhPkIU4s%6tmWP(B;7<(>MwGqfseOKnbO6hB1;bJ@8 z<1OI_MSJT*q<g(T$U1jPZ%jyzXY;#nrGC=l^Q^1vQbq;0+!yt%n(aSpVg80Ezc^3r zJ?!x1gV5jQL63iO&1cpt*S07-;J)Pn?<v!NyPSIjUs~mtc+Y+P%UyW)Yo@l2yIh4q zJ~bJu|4nsI{_7<hKH&tT=kpDnN0nr@F)qzaoBlp8?RtLPp6cq)&uWdlOYZ+HD6jqf z?9*4%#NKy*%cqx@@87ex*73%|>i_S4y*jL$#d|w_bK%cl&&z*&^Ur^OiRbl}`tRSw zw#xUaJD)#$Am+}oe>*L{|F0|l{qOKoZ7U1ODSlrM?+(w`k6+Txp{73R!utNbQnOnU zllt9T_?DCim&VoCEOFH8(3&G`R5CldQLkB8=2O4TckLxSCp7~vT9>S0`)hx~di{m@ zt1iC#knthhAntY@$Kg_`jQ1RObuQMHv+r<~-#Kmjfv29U%5)}9a%J4QRI2ws!`$qX z#own(v-+&PqkHR2$l=&EVwYV1eqi3#RFd$q#>V3D{54-!eUA6=`z!40`7yrsN8_*B z!se>4X=^<$KL3zoB*~|2o%(Zr#6R_E|2tztpVsfH{{8UVt6zQF_eETNS}(=1NQ3p0 zy>Hv36QAs_7Fs^r{`$1|`t?7zUb^vaC2RZkFJD(RZo7SV+WmLZAq;zC{_j(bUj6*p z>-)N|A1vF=S)DhD=P>*BbmNYR^UmIhZjU@6W%#7>!<lVmdf$vW?wUJG-^^U#EFbl& ztc_Lre6WtT>^af<VLG-2$JZ{r(y?mIg$*0l^8K4Tal!MMYaLqbk7_>q>+jG%PtiAT zt9=EheNooFHrpNvUi;$EB^#FSuibVi@ABcr8{8NCe{)#QA@t<ULkl|}B(FKuV%x#Q zreV7@WZkcC`fC3TfA*iO_xZ;?_5UHWi=Up_|9Cn5e_NAD%Gdg=oi~Egf7{>wfAin@ zZ}r>$e}DYt@vArX%?C3iw*2>TJM%C2wCIP;hx$VM)I|&DF4`BAvv$MZ`EUQ{{7=7L zzWM)ep9iAv{x^F%{CAg0IP&fPuMg+NY(R$nzx)3Gp`9iIs@wk8um8RO|BL-szRGX@ z&)<4*#+(1lfpdD=cl=Y{{Qr9K-QXU3lLDJJQ;O$!zU5+kA-1e9?XWaM&$~7^KT~P> zObOYnBL6J2$!#V-7Dx((UeB>H$zWxEzSiEN+UeoceY<4Vv9R$fdDoflT)!gy#BPtO zqB$|Mc&+bW7U6CA+kG+l6*qIf?i>Nj_vJ^9{l0mBy4{uYb;_|*=HIolJa9g5rtLQV zy__EwEi5vz;C5_t`N7C~f!VPjx%@%W?Fl>VeJwXA-F)0^c=G4$TT|ZLzp>?s%@HxR z1x?5P)+}E;Mebu+;qym)ZGR`~#Ku2-c#KKlnRD|V)Aop8y-dbsvp@d0nZv8$^!K(* zUiz9d?QODQ-0Po|9?v(cIk?4j*P@48&a!bX{8|<oCXl<?@pH<w8|9PVF82ASuke5K zulL6%|Bw7zuJ-@-C;N|IV|C<D$N%5>%|26R#eY3s*Rp@%{eRZm*_}IZ<M)LPPmW7Y zn>rz*q5i=v&fvTY33D3W{y+2Y_?!ASzvRCCzr?IQ>D&K}7Cblpt2EyH|7vI5kL~}? znfxlwy&P^nKf_LLB3n-OvaOr9Og*W;;FM|a*<&u36bch_Cq=c);&~e*f2GJ`X_@oy zZO3aYa^rp(X;pS<-Ac8nadYmwEx9_gj=T3Rx1o_=t(xm|MN`g2I};yEr0nJ1V{usR zcxKPRi+TRSVlyvS$N!tGu%xEEvU2s!pK9_}rXLfQ{WtzQ|K<Oj|HpsZcP?I&^4H&O zvBdxRjt>9D-Icfe@4xZy{1^LU|6gDEe`NDT%gg`w<^PkP*t5XsZ@$K@fAc;5OY^#X z_%G5fyzKwg!oa0`m(&>Uy=95nJ$ISOoGVkS|EzG_qqKv6Syqk1+xv@W=l*t;tBZ9^ z+uzN0E%Bevy+_k;iC;K=%cJ>HxyNp$lkS<Wth@7mp2<sHwOaMcl;Tg0C3D}j$ZqG; z-SWt`cgM=_qV>k=J0D&-yZ!ZSg(s@d6oX}FHr>pt`jxdS_~_}TC59!_j-I)rE4FIY zjEYC|B!ljYF6rCGIK}3V@>Xlvd13+?=GABQuIH4!V;4Vk;H>3;X1Qe#SMoC-)hh^Z z%zwrlthmbJ&*f6C4k-)kv=Xj!JG_n4Ra*6qMTpnU_Rx+yeebrc{Tff!?$`IrKdth; zx5>VteAnqOUHM05nBRXP{eHHbx3fC;CPBBH0ye?@x3%n!?EYz}oT<R9x48Pds_j=n zll7Xh{L|u2tv)Q|Te;!gaie!;Y@bqY<W%rgsyAdDshW1D=SlJ0!poZ1=bXLPu_%4B zTI2e|We@UpA7&9#`)~Yn{>lGuv?Bj4m)zF1{=dY}c$tcG^&9^5&+F3p_xj0``WlUv zl+&tzw)8hUy!$_U*MI9PtS2U1|0l7_rHc2E{%^;vtPvb(e1YdDckVcBExXmaH()Q5 zoEu-#@=xa%hu_frclxSljr{YUE!%=i6K?)G{O@=6>epdX4&UGI-@k2>=h`Pc=Wc(T ze^vie)$X95t^4who|yZMTkhiJeOEOX2nRj16)V44%E;cQ@S|E>(m%gU@vj+Ep||5? z*9}{<{TE7SY429raE0gcA&cz2S4!{9|NGnhro;ZHPlYm7ZXB(>wJ1=+^4P^*)?W*z z)lTWIPwFqe!Bw?E_RErm2JbqXAKE{fkXgU2+3V(_tp|PNnAP6Jeri3py8o7Xsj+g2 zz+WN8=FgXc;<8uQK8ogB;*|c1F)K#><pNPVmb&(pA#aj?$zT4T^wqvlgX2-gnJ@Os z{<BW@3Sar3)8jSs-+Ya}BZ^O&-2IR1{J$Rf)!uqZ@wRK?@^5D+R36KczH-uQ{j198 zQ_;QQ3q*7>+fr_M`y|hLxuWGs+pIOBR!kPEmv6e4%CB9NxZLS}`p5Mb?E`|?x;7o` z<(_Y_y6&dZ$2-P{&A!<GUA)whaf{>hY)d6$5f|tExt)@KW$NDku=>r&|6q6P@&=Pb zW!%eKm&;#lcbuT|eRk)O923^Mwc4+;mc6-lyKH$k_xrbJB%e&3&&PiFfr6c?vR~xq zrZv6U%X3p-XWokPV^gj)3TNy786dgxk;^>(=a&jh1dgX4a*$gzbLN87)6?>NqVLLl zvUm65W#t!hdK&lT?>e8;E)k&mXua1@f2-+g9AA9?C4ah~_;kXnC;K}sRQ}CBywGC8 z5yNx;%@Y6FyHET-iN!&5hAZ1keYYRGH?3TK`tF*-%<AXo`rDT2z0Cb(zNEJ?>k+%{ zuCFCFhm$)Wa(Q}QZ(F#S@!pGTU&VQA`TxB=G3#7|<Pu+lN7mej=d664+r#gXw$eB< zpyb%LrAL0Z-$`2VKl&EuqZ@yl{iV8_y-o)G_}e(+rTWw|EqisLHD9E>rtSMNQJ8Iy z!iOZ|kEXfF2Ne%yx!sFD{QFdm8c$l2f%nIK8*k@qIjj6}v6l>wN8Kx-I_vrD)ALuI zee-^|Voc`3l7hd>&WKMaeeM~4XJ(1e@5)JMmuD7Nn%RU;G5-0+N9bJJDTj&YmwXJ8 z=@$tVZF5ds$?@1Q$b%)bQ0>h5Y0pnT{F$*+<k;cPl68G-zV@2-B5}zbeDB%$?Q++w zOBKJ;^yu2%ple~J#)|v>v{apr8hsOI51GIn((+aQ)9=IY9&Rw?D@rxiX}4V(vA^<0 zkm9^4^Av4gE;Bu9H*v3v8B_H85Q(l!8vEw1)O_V+mbPzS^_M*3ySpoN0%cTqo+d7n z{JCPGol@q(8;d!Uaz4+R*U0+p=|0vSdP>=q+c(La=rP{2>ZEpQW5Gh{{y&q=*bi+A znRoA*X5u~t`^`QlFI-?hyJ3l|)pCJ{iP;b09~_tb#eFxx$cH`f))^<E6ax+Omzz}2 zZ(B6;_S8Mgv){e@_3hcG(9Nf7n}UC43LECIEK2hek2yNq>0EEgHpOihuK(@-yl>ab z^IP4w{P<mY{NkCL@2&3!tz_h@7I?fwKOlLc#T6TsoJ&*RT#(#0XP-c-yl%R4-tW85 zy>HJ=m%cko_v>A^mG!fa8GO#W60}shREOi`y0_sc7j4T)`;_`EKJEY7<Nr?o*+28I z`6`Q&(&zt`e~5nhKd<NJ&;Oh^>o=ag>i5v*a~kun-Fq&H=xhl(oh3Of(b~1b{D@nQ z{ce|EyE4lxKh;k-e>eR~3eUNxU(Wx(ZDAr+_4agX#MIq)yzkD)?pl=h;{EkcSu3Tp zLl^GXFTW-{B_zIr(arbbw>!pBi{7eMu{dwBE%7YNc<$XbYhmmJ7e?hXE8Z-g`>oML zD$h>g-$jF>4)vCQl7Y9bC^~I$*mCaJqnk+zoqH!L^j2Mpv3-4Vk=DZfYR{iPKP2<g zJDJ7*c>O-t8-Cg@s)v=#f^KU|AIMM65)7aH(~0wENd1Nl-TT|4Ual{Z&dr+S6T&3S ze2mlcmdlIf`<-ufFWJqNxh|;6`OP=adp4`4T;ovYtBLli;$c~5o^*IN|7?p{uT2V$ zOzBj;aqZ6j6WUiNSUNsnjmuG8XPEVlGh4z&oXhm0i?rqBU*BiRM`!GEu9LWUD!Z-N z$|mDwyurKmezGzPmAEHP&T`b~mA#TL^y%P=qV52Z6Hd7fA3U>OZI(7SJoHSMW1+E% zL!0x*glmjxw=-Fmi3(&nKbvZ@{BB!H&y{~m=don9-U_T%&|7{y@0N;o&iRyTwcEzU zhP`X^+&V9M`aM6n<_PD?Zy$KtXUs0TEX;mq4*R)A8yR)I^MbL*5Bj)I?DBYF_SVIF z(t?Cb>FSM=2m5r_hy8kfO0wFb?@vwand8^H6ILYYTzq>t-|OW5@++zdOC6_uS*xVI zUP64=wh4E>)D%vgAhXb<qdh|Ca<i?wp0Qe%VPJP>)XyDf-v!ve-tE0^PsIMBqwA(< za`N8@O<H!MBJj-1HK!+D58Av=igmL~&%6~A!ZiJyS+_6x9hmzl+HH#0ePOT5m077# z%S|~dcmL9zSE``w^67M|piY;p^S#N>Pt{bG*}Yu3`19v^OZrk&Ch4;8J(*EaSEjb| zlY_vFJ;$Hy&G))@nET<*j;e}Hj(w@i7kO{5yWCY>p)u#ARqp=G9k(XBI!fO>@5067 zT>j4Hk?V;iHk_AKn-_ETKXg$rRPu0VQ9Ut7F0MePaC3~5hjz)du9KHO%nZ-@I(OCS z8`q7OUhtA}zAf<4v~;e^&)ct0i*tTxIIpX<<<*Pg-mv9r<<spNeU`@Qi~OoP<+byC z_1zLfHY?2wG57W4_%8)*`#4EqPJMSz(}#_F`WHRWp378I{KoF!W}RcJ5BcAcIrBaE zoN-KQSHr17(Uk>K99cn@8)A+glR3PG@s`19KP##D+lhQ%=ig3Sre?oca?Xp+ny*uW zCq+E(FVH-s(O>?pUPj96rDg!Xs!Z&ee&w!Y%V^Oh+!H@eyY<$=Fr`FAeM6IrilLI# zF4<1cPl4aozGC@#*-GH&wI@F~xYqmj-LGApRP(l_*v8PVsjaW(%Qs(+obyw=yexLC zj!w8;yZY0u;-w2eJ=vNp_eZv|<&qqKo%}Zzm4sE2DL*c)XzYnra}3e_8&oIAw_%Z= z!^#Ok({DuD<@KpmhIMTzdUBW}<+{3jSYzJD-wx$`j(Ti&OF4={6{3IHO_=Nas4M#R zRqq(}mhAaULZy!xak%Q#>g|sB7eDR)^sDvB;otu3pT%_hOpta2gPz_0^#;?}7AO2Q z4@~-5zrXWWeqm-^zRagrRsYmh)~x?fx%v6Jw6#uokMB>2ny&JLx3b_uYxU#SEIl6H z^q;nGZhrqTbx-A;hhGkxOe|RN(R<0m1K|^XZ-2%0cXfsR`v+qC8h_hWxG)slu#~h~ zQtUr3`TIB7Y5BonXSmh0_|%N})U5ivQ{MO~I%_4rihE!*XA`&4&drCWHn4FXJFD|h zc)rP3<1NDNoV=bB)Y)$4tUtwe<J%IG_cQ!g8RqW&f8cM^wUD5*sX3><1`GfHKKpgN zP+WAN(EM9l&c*NdWSX?w<;=_47nc|l_;=r%_QG1=nT7xCu;+>|Cnr4p)pj6T(n@^y z6V10`_x;}$bWWeL-hI=l1>P&Y=U>*iF@66YpLZ7(PG539xbhT_?3%P02ac@MywYS9 z5D>_%xwSiNIuDaUPm21Vt7m_|-W@Zo+Q)q1nU4C8-_!&dxDOT78Z7mZ*q3=_YjnVh zxRb|XOnYjl|6ZM!^(ok>qw|;@Z*t+E-Te0ZcJ2KA((2`fMORo{=C1Ke)GM4*vB|c4 zQG4UvM0NL-H+uJWIdA_~wkuTT7~kbjS4(8hCGtM3uCW%)=6K2`c*xPZWUaV$_39~s zB8ig!bd}wnWu@OYis2JcRNW?Q88C6rxpt*9f{&DHWS(tFmVH#=qi7c_wqDa?{lr?a zhlx`!R6dO0<3B5ZG}*rGm8;v=o>z}o*ws&QY<QK;XV9^*vh$+N;-40?&dcAEdGci| z+Z)$Oe^$I%QRB8_x#teoO&t{_8#ncKf0ta_J@ZWW%eUP-d3r2$dMbT;Dsy_iN=lyI zZWNY~#<N`~Ws{QF*H>$=9txOLxQXp`isrMElip6|m)yL$qC;!jin!_3hu$eY`_ivw z(VM^a8SC{a+oNay{_^ndv+GWk?KYE7M%DFK+8X|sfA;_IpZXi2XZ}Cmem?BrrTdzH z>e((u2>khHe~879;o1M-#sB%=TtDJ}<eqfyb%EQdi%%a+lYA&2;&t`?{<>`r`@7e5 z$VPKWU(_;mKk__tLGzZCr*|!_51F`a!8`r>JzXNbyrrEj-Rj#7CoNN!&hEPXPX7NN z`-yKal$cz3?Q`4b=*NT!CS?mMQ>r(dI&*bt-ipm@`;Kh<YqDwO&I{Wo7$>dHGf^#? zr^Y1wVzR=$Mb|D>D6G5`^Mbc^<BiE}+#AcyB(!Y{*YSmBTEumH(%7WWGedIP(`b98 zzamAUAz6k@Gk5g6>*{|mn{y^hcwx4Au5RhxryJ*Nd$#GKR+Qbfg<pTndf)R%^5}K9 zkFFWF+$<kI>{-+t__b81WCGvqg(1P43?J<<<A8R5eg5-b{eSV^VyCIon#>wl{?=Pa zcsl;A@A-H9%m2xp|25U`Jr`9}cR#p%zi~@v!x7KUOFjX0S{`x!?qz*$a$KJ0zLl$Z zp8L-K@zet5{!RQ_HLGsDb3C)9wDjulkMnIi<qtGYUg#U`KW(e2{;%4anq{>?;=ihT z(@woUwwPCcv;F<=7q$QX*zErQ<J-wzO)CSY-w}N|dG{6_=h^QUu)6<#wqgCkPP_HX zGnW01xTjIT&)Gj`-;<QxI}a(U{!wn1ipXea-4|$b=T6lm-J<R}OhvO!p1i$wVLmT! z=b6>EHV(O=t@){Tq1=;vZ*)fKPC3$d^2X68_23?5?8+zgDn=5&AE`Hd{PaISraLL% zpZIZMwg1;^|Am+8G2AKWb}_!mY13}JZ+e@|8?^-%e|Snf9^E;)f1ApRS+Soc964iM z7i{TtuUYZkza0$j=?535^5>YB7Ylo4rFOrl-(s?~^dM*Ky43j=3+Mkh^D=w-V*mEW z<poS%uj(Js@}6}_?r{_Qi?ci`r=>GiIY`-btW@KeaI-niR&p1INRFe$g^kBouKC)3 zkN3<T)dT5sTwHW!RvFB^E;c8UJ)`T^{wpGR`~PtlU(fvf?$_0?SF8E59^BgeB<|k6 z+OspQgw9+n(4PAH>GIdNv#+%5t~|W8_1%WcJtAKhwv^m<UCK3S|IM&zawqo-doMn| z_SusOCo<Xf+a@`ug<luaTu{IxfArr*?RPE@;!}S3xBmZgF-Pu?{Q3|-mT#(Ue?xAZ zm%sir_HQBk2cG~<jTI_hT0U|!bxn`deaJbr%voozbHGsxDU+pb2`>DL>jK4ZgxPL2 z)x7s_aqr=62^$yuXPftb&a@Bb_kZa<^?r@(83~rfYhxsGRZF@nS{q$lT{66WDkppw za^Lv4{$D}u@AEINY5p{r`E7EJoo{rPO_bj8$E_;;YLATrXK=hK*cr2;TQTK+=+%!i zP3)vKnyeUJA90eL*E{`r^G6rS`TVMpmfbV0m0sUHwdk=&a;6gRvriEceC>;i9p{{H zy;x%r$F;~}rVrcX;+HjcQY#-{{P4!d);hl9^yZygB)lINN5-C6I-}5}c$=#a$HwZG z#_1V>D?5vCy}4HGaywt(>5(t5dv&T`JkkH)6A@A$;~Dy?;Gg?;!-xm2e=geayg1={ z!q#BT9-d0K3D2fmFh8)3V*TXtz-u|v9T_HB9<~ivPuVLj-*m@0uw!~jgWrCmb#toA zu4hS?q%!OFJ_(%uBCz{S;M5O+&0i)4{_&7K8$X#LXg13vPnMG^%`B}GK1KMwJSRT2 zXyN1ucCRMb200k+-y_)aVj^pw)sfyWAI@kd1)OC4^}nvibz_jqKJi2&Eyt?|7o1!C z{)xc>7D1l>IuCQ(UQKp0y%{@2HQ(-Jfm|NHYhAdfqWU7W+Z`)C!_T#?NRo~axaEF* z*5O3mxgu-4Z`={%IJeX~k0-cMzE5(}!}qp5JDN@^iDgEyrMbnQe&oi&BRcc;A;&m* zZ%_8;R+V0E1=Ej5#$335F#Z!moR#B&<;lkCFZ0g-*+28Y`RD&>|L!mRcc1N>fMOjx z>z)IXAK9x0a$T#J?$r4oJon%IT{CC=<;=ZN#<$|j#RW5iEp;!b<x1{mUGk_$Xcu#J z-5&9?jT*OFCLHaqt6!@B<m%+SsI%+dMla5rvUXkWnhV?WeKtgH&kVjTH*wL*w<%(` zL|)(9vT&tdS(~ox|Cu|~PhNY}8NQ|U>NQ`J{r<BUO&|X&*p+oJ?*88SvHNz<jNM=P z@!i|Av%gR1y4-i_$RiflDO-Q{xIKKzs=wHu@8yHTcfY=!efs+K3kQR)JKx^3d(ZCQ zPv5@f&M=<dd%>*ydboU^r+$Ho!|i}j6_JZyc3;ctSr*E4>9OLZE{=?R37Z(HpauE~ z5rvr?O!A9cf?PCSDCmjyd0mKhb$Bi(f9h1!?H@*A2jkariHTI+mNc+6IoWfm(YT~` zZkd;u*#DDH>ec>le*NQ<ec9X<R{x51`i?Db{^39E|J0-PRv+iTZ{&OX>eP?pqGF8~ z%yMV83ocag`{EV<_FBM=o42RjQMtHi%aqOg7^UT^xNFO%^RUkRZF>2V*g5HQbM?NT zyKrsO#{aW-Engd-EnSkHYF=9RsC|oG@x&8XmL#3Y7x+<QzTx>L*-3n%Rn0Y-9v`RZ zmH$1;RGD46-CVcyZGY)e`3bhyM2mY{MEZ7Q2W?lr!r9UC;(*85Bdg4p$i6gMRl2EN zY!N>XM-aoJOjrKc=IQg&&e=64i(XQis@bvO;n@qD?yTIB#Oh;lDE#z=@@d;D=hTLL zzdUX2Z-zrM8yqSH?3S??d^xl=HA$`c){JiTQeAcP*d5+QuOjC;Bpt|H_MQKxQn*6s zvTr*Y`Oo|_n)Ufn^0({TT6hx{+}mxlaIU_X&J}J!j;dFwhGh$-=Lh>+HtQO^pY<yu zV)nGHhhAG&t({i%bN|ZE7djWo%#gn_^-z6EgIVM?bNyK_XFczDdzx!G!|{t#rUXwe zpJrDbA}HLHWnp+)Cr7k;h1uV3mRBk-SMP5AWPk6^(`RRYe@Rx~*gB!yZ1>eucC2c0 z%i_w<b}bGxbn@R5WIiwX!=6jKtKHsDd6#tR*e|9PXAb>PetCMcd<$3Q!Hk75OJ|;B zvdybwp1sV^dhbEO6|1C9opO(DovbO~WnHG%S`Z~HxpuC?+Nb_^3QlcNGmNr!j5<AE zt?81K%$yZF+JzTwEq2RZ?vY*hIK=N*SoX}9t2A^M-uN={#Zs?TnjY4!t89}q<P_a2 zru>R9xHhxKZ<)g3C3_x<IHkIO*%9`>Oe)x8(L(d}C(V~@s_&JwSf8tW{Swpc%|^4| zUyhnJ`T2wG`r@4%zFw|;$+*qZ!`|?g!oLnB^_S{%Gnc4+f73E=(vi)A<-RvLg65T` zSiIMGen$E9sdGD)owob0QNtGWKxWCj%@b~&clLYeqjGqs$HvVQWu7Zrp7;1PXR?T; zwq{9O(2FxmmK0Ckldit<od2iXuYVI&CHFdgm7gAV>gK0@ndNT|t^bs9$mfBMn8S;v zZyAm!0~@CLF>kQc$;${`*?G=nDdW_hX=3X#vvR~Xt`2mbCC*aF(9alC``T8TrN4}4 zvf!4d2A#}Pt{ha~q~ubyjzjZQOxC6i*IM}H_v<lSJ#@@{n)JzIZ!1%O7R5NYCw<@Z zW{bJplTCX(&NH0-s^<DBz&*ClEi)jfYj@yIjZ^Pagd0A4z9@OVb!q2G-j`0d?tc92 zcl1!Cm7>LSAFHR0pHDuW!*yWat|`He3QwMW*L>?JS8)C4x?sm0Zgq2cFDxy5d)ebt zsm-&w+;5IX{?JtUVI`-2p7qP7AC?TV|6Aqf$UHdj&-X!bW9QAk$4^~7RJ^0V_3-Xj z4HE_8kFZ3lJ>4m^r{AnD`uQJFPeJ(Cj%j~5%$ErM`W$#y;U|OKV&Bl*+P5l7FIbw4 zyzbR_Z{nWTf8dYD8U>d{X{>tezg*k?Wqc9ujam`9`b=X@r=q>oPs=BZ?uM<bO~03V zcSg45ZJUN8fo9L9#3s)-x~)>XVYa-|)@^rdzV9*n{ApsG;iJP7;`>AjJWNcz7<WHc zWvN-6GTFI`Lw$DClJ>iwh2-{yF4BDUHlY8C;QKcPJ_jE&NEnt(-0)HU(AIUm_Usk? zd%ue}Ra;iSQ{3lw)b^dq_Pd)5!>$yryY^O3eBY9MuK1;IOw=F7gzN26vVC)kp(<{> z_52;qkM+Fl9Q?(@Cad+S<v#FP<uTJ|q2bM>#7(UGpY)b_%HG?gu+nO|Nou-v@{g<M zE-WisSCqOhRMhub>En(2T{mU_=Q{W}(EZ83a{=PF!ZsWHP3<sR)bV}4oOlo0Pm|>n zVvYZnSL}cA`T6-j>2DXaZE3M*4(r|e{=W{#^Yq0Zcba&bR~o&Y+SYO6$+lGoXYPNW z;{5blMx^vcc>%e&kdT>D-#BHzwr-huz0EW|jyuux;=ZG0d2NyRB0T1F?BqJquD>pF zUTDw}arK_U`3-+BxVNciJFn^crKP_6(~Gq#$||i_JZC5-ukcT~Qr>kX{K~YK3->8U z8z*P@Cv7S3+7kXn;o9k+StquHs=xeMay5!|`>ZG1E_G_IXVOy^Ey=fHJnhHY>b2?3 z4pymKy#=OM=KNz^^}%&Ro%3(uOH;1jO4It#tk+(DB7WKP56Np!&3@VOr}cpQe>2_G zWh>?{bFNd8v)ZnHR6k%v%fwyWi$00W)kr_1@g!t&p5i2tSN$Dc-2a1A{scMBi(l2t zQvdg%_0I$PbNPPEFHB7j``>%DKKbkY8=(vSNo!;tJ-uJ`O1-pKav;yOdTG9hzuT=| z?^nH2b2{R&?w&4b&C_CGYjkr{w?u0d#3@=fUeo{W@RnmAQ^xg-`LRE<m#}6no7k0c z@Kn}9(MwHFZ@de6Jb7Ed-=&ulq$IVL*4ABmx>ZcC?dG(J3wZqRWgZuuQ<nX_jZb`O z=hLm{E7H7tO$v*b9Bo>-dqt(w83~)!=J~}NY7D2vBuc41%{vx<MQ_GhNh?j;(<d4& zxKm;@&S$r<I+uz4xw8M??Tmv5Uw7ry<giX^v6<3&=+b4O<%hD8M6BGhd2dC?G-&nj z=VcbXx}ML%s%G{q)d?%QS_6a5J?07Y>|}}A^C!aTC!@rg+8y(3OCR_aCU%JJT6*YP zmif=kzg*+;!?pHbxV~1Xt0b}JTxzP@#js1SDwcKV+J1K~y}@T1@ih9}w<D)?jXvji zKKL_pqC<zzynen5zLncIrM3B87BQ+?k<h(vj@+M9;dVg>oM-hgG%&QBG*)g{U^j0b z%c`K-RY4_1tE_&ee6O1rW$;wJp!`MpG^q_sSNLz0%NBKYv%M9jXd?3D)|JzbOu}`) zuc!?&-_mj>`{sr%zP{d)yZ27<vORoo!<DVEozqMBvfdPVpEX!pV!^dD?9;PCb^Arr zL%%4w7jC^IH-AkS=e$#V=T~0z-jcGe*hsaZ-(BS<hw7D+#`4~4t{(nuQnvd2yu4F4 zyk37fr!zCh?J1Y#ao0LOAr8x^Gw$r)f)Y1{u5`J*{o${eR-JZ(P3t;szQ~(!a?Ebr zI87&UgQoAHq8EQ6JEH<qN@f{_uQi$6ndc?4qo(DHkIMQCqe&8ysp^Z3p6Ivt*sc0~ z)N8uEUA&f*VcL}Tu04J6sv8zPS3EP_&slTHuUndm^0q0WFa3?Y8h-va{$Ky>|M@@v zo&Wx~&wTa#)!+ZemA||>@W1}Rpa0ok{<9~$DaYzClwH1mO4_yT&!@RYl}}l@Se#jQ z-MKGlIH}&#BY%4FWS>-SWsY5c*_)Z0<o+v4?|uA(|MSTQKls_VY*_W`YXQI8?ZZ4? zMR~{NAM>x$dGXTkK=8KJ)(<olOQkO+HB3up`pA6q+LRyHG==wOcI25{QLnM`Tr7H5 ztaj(d`DX9e#mC0)eQwfPUHSW)>Gpe%9m3vCpT91Dy`YW!PW!^<G$;Md>Njg<nVnyH z)MXaW`DaZE{pZ<Vc?2Bu5U{Y9o<EmYFj`KRJ^fIM-1K=4|Mvv;W_r#GF)Z+!smZt1 zSls_rl;8C`=OhZ=8;Lt<&6ypfuX8qzVei2wRh%7X<~iyA_$w%RLoSJ7F@t<`R=^&9 z-9PP<B0OFm6ur6AYtd?fL~ZxA37&~zJJ|!2zI2J2HNQLk?7UgEm~y5$Z~3_+b1r{; z#<OOp$hjE3<aO=(%TrF@-0|t8!PBnFq6Ss*$9lDfr&@OySo5i!I}pPVmLu8o^M>gh z*&Cs83?|GP-B<tEO#G|Ivg(qigX!^m?suQu{C0es{kFfd#lN}rpFF?n(dB-6+Uw<y z6J;IEp2prtyl`gG39;xYsx0r5?p550TDQ>a+JlgDyZhZZj&>|8*m`|d>mHsZibj_- znoT~1H<fxkt}snFZF0uokVfc*b*F=u747oi*k{XE=6$H}-kgJ5Dgt&&g<cc#To{$L z_vjCyE7vm?$nL%u*V0xmH1*r2+bo}^Us)Zw=VS-p$I3;@^?UbNmG@N@2!<8wTDyGy zlzH4II`3mhl}WyM%j+WD*?SgLya~D<9lu+q){4hw?rFEztN;HAid=M0CR{}Bk3(A9 zE{89f+YV|SXx2TzV!JK)#+f|vD~GSOwVX4aeardv3)S1V9T_rq-(TN!EpOY@rS949 zk0^=#i#)WO=V<D}ABX1Vp1h&vCYgG2w!e{u!%gK$_pb_i{<Zw0Y#5xmXp7B@lltyI z5^IE(CoY}#WG%xf)^kTWrilN_OP+f6)j5?+CBLA9|2(HoRe4~axV=VW*0271qG!Yn z-7Xs$2>*&Y=jQw%;O)nC?DtAP_M2Q-+uxYNR1}%h!m!6KZIbMhN1cr}vi_CFp4#0w es#mtLJN8YI_--_2t^4)=>?##9%NQ20G5`P`=e0Wk diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.1.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.1.tar.gz deleted file mode 100644 index 7914db1bb84dddf85611cda3b766c0c0cdc094c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40022 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 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..58081673e955d89fccf70c9161037a725b647f71 GIT binary patch literal 40056 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 literal 0 HcmV?d00001 diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml index 884824994a..7d5e6941e4 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.1</version> + <version>1.6.2</version> <description>Service that manages the data</description> diff --git a/dbrepo-data-service/querystore/pom.xml b/dbrepo-data-service/querystore/pom.xml index 943c115d11..cb712233ce 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-data-service-querystore</artifactId> <name>dbrepo-data-service-querystore</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies/> diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml index ca03190a44..8de452bbf0 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.1</version> + <version>1.6.2</version> </parent> <artifactId>report</artifactId> <name>dbrepo-data-service-report</name> - <version>1.6.1</version> + <version>1.6.2</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 e72392c707..8ff195ea79 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.1</version> + <version>1.6.2</version> </parent> <artifactId>rest-service</artifactId> <name>dbrepo-data-service-rest-service</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>1.6.1</version> + <version>1.6.2</version> </dependency> </dependencies> diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml index 666cda76a4..d0fe72cbeb 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.1</version> + <version>1.6.2</version> </parent> <artifactId>services</artifactId> <name>dbrepo-data-service-services</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service-querystore</artifactId> - <version>1.6.1</version> + <version>1.6.2</version> </dependency> </dependencies> diff --git a/dbrepo-metadata-service/api/pom.xml b/dbrepo-metadata-service/api/pom.xml index 9baf18ff69..c1e74c5ae9 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-api</artifactId> <name>dbrepo-metadata-service-api</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service-entities</artifactId> - <version>1.6.1</version> + <version>1.6.2</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/dbrepo-metadata-service/entities/pom.xml b/dbrepo-metadata-service/entities/pom.xml index 5b1c1d0cf1..9252dd2caa 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-entities</artifactId> <name>dbrepo-metadata-service-entity</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies/> diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml index a3778f0363..87da814d41 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-oai</artifactId> <name>dbrepo-metadata-service-oai</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies/> diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 2803d9b5f3..04af8a795f 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.1</version> + <version>1.6.2</version> <description>Service that manages the metadata</description> diff --git a/dbrepo-metadata-service/report/pom.xml b/dbrepo-metadata-service/report/pom.xml index 6234a844d2..756681f202 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-report</artifactId> <name>dbrepo-metadata-service-report</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml index 44fde031c1..39e971b901 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-repositories</artifactId> <name>dbrepo-metadata-service-repositories</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml index 233d2ac465..9f8055a149 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-rest-service</artifactId> <name>dbrepo-metadata-service-rest</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml index 2961f680d1..0ec2d62d1d 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-services</artifactId> <name>dbrepo-metadata-service-services</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/test/pom.xml b/dbrepo-metadata-service/test/pom.xml index c58104714a..97768ad4a7 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.1</version> + <version>1.6.2</version> </parent> <artifactId>dbrepo-metadata-service-test</artifactId> <name>dbrepo-metadata-service-test</name> - <version>1.6.1</version> + <version>1.6.2</version> <dependencies> <dependency> diff --git a/dbrepo-search-service/Pipfile b/dbrepo-search-service/Pipfile index ec74a381be..f7161287a0 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.1.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.2.tar.gz"} gunicorn = "*" [dev-packages] diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index c0508dd3da..c789904077 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a0682b0583cfc91d643a307a7dce7a524e7f7c29dbf2c9c5e9a6f16eb5f5ee91" + "sha256": "729017f537f9f8fb6dcc15703392c7fd79aec494feba4c107e7a1888e8ea955d" }, "pipfile-spec": 6, "requires": { @@ -360,9 +360,9 @@ }, "dbrepo": { "hashes": [ - "sha256:a08b6eb49c108466b231c1b2cae5be501043fe4208a782899ce103105e22e3c6" + "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" ], - "path": "./lib/dbrepo-1.6.1.tar.gz" + "path": "./lib/dbrepo-1.6.2.tar.gz" }, "docker": { "hashes": [ @@ -845,64 +845,64 @@ }, "numpy": { "hashes": [ - "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2", - "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5", - "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60", - "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71", - "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631", - "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8", - "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2", - "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16", - "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa", - "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591", - "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964", - "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821", - "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484", - "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957", - "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800", - "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918", - "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95", - "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0", - "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e", - "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d", - "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73", - "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59", - "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51", - "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355", - "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348", - "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e", - "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440", - "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675", - "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84", - "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046", - "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab", - "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712", - "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308", - "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315", - "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3", - "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008", - "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5", - "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2", - "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e", - "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7", - "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf", - "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab", - "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd", - "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf", - "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8", - "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb", - "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268", - "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d", - "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780", - "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716", - "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e", - "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528", - "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af", - "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7", - "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51" + "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f", + "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0", + "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd", + "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2", + "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4", + "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648", + "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be", + "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb", + "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160", + "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd", + "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a", + "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84", + "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e", + "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748", + "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825", + "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60", + "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957", + "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715", + "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317", + "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e", + "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283", + "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278", + "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9", + "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de", + "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369", + "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb", + "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189", + "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014", + "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323", + "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e", + "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49", + "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50", + "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d", + "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37", + "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39", + "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576", + "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a", + "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba", + "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7", + "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826", + "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467", + "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495", + "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc", + "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391", + "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0", + "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97", + "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c", + "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac", + "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369", + "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8", + "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2", + "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff", + "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a", + "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", + "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], "markers": "python_version == '3.11'", - "version": "==2.2.1" + "version": "==2.2.2" }, "opensearch-py": { "hashes": [ @@ -1321,12 +1321,12 @@ }, "rdflib": { "hashes": [ - "sha256:4fc8f6d50b199dc38fbc5256370f038c1cedca6102ccbde4e37c0fd2b7f36e65", - "sha256:5a694a64f48a751079999c37dccf91a6210077d845d09adf7c3ce23a876265a7" + "sha256:5402310a9f0f3c07d453d73fd0ad6ba35616286fe95d3670db2b725f3f539673", + "sha256:f3dcb4c106a8cd9e060d92f43d593d09ebc3d07adc244f4c7315856a12e383ee" ], "index": "pypi", - "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==7.1.2" + "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", + "version": "==7.1.3" }, "referencing": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile b/dbrepo-search-service/init/Pipfile index 77bab3e84c..8ded635ab7 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.1.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.2.tar.gz"} rdflib = "*" [dev-packages] diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index bf53ace7e7..64f5fc6cc6 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9edba52503b8604b267d52e41954beba012143b1e47f56aaae553cdcaf054e55" + "sha256": "39898ff53a7a701c750b2fc2bfe2d7f72704100e41a183feceb1d8bd09c71a00" }, "pipfile-spec": 6, "requires": { @@ -254,10 +254,10 @@ }, "dbrepo": { "hashes": [ - "sha256:251f3c2088bbd289cee86d5394b1e62e29aa081f994dd0845d895e3330f6a106" + "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" ], - "path": "./lib/dbrepo-1.6.1.tar.gz", - "version": "==1.6.1" + "path": "./lib/dbrepo-1.6.2.tar.gz", + "version": "==1.6.2" }, "docker": { "hashes": [ @@ -578,64 +578,64 @@ }, "numpy": { "hashes": [ - "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2", - "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5", - "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60", - "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71", - "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631", - "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8", - "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2", - "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16", - "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa", - "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591", - "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964", - "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821", - "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484", - "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957", - "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800", - "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918", - "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95", - "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0", - "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e", - "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d", - "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73", - "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59", - "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51", - "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355", - "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348", - "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e", - "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440", - "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675", - "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84", - "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046", - "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab", - "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712", - "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308", - "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315", - "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3", - "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008", - "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5", - "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2", - "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e", - "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7", - "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf", - "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab", - "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd", - "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf", - "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8", - "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb", - "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268", - "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d", - "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780", - "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716", - "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e", - "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528", - "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af", - "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7", - "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51" + "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f", + "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0", + "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd", + "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2", + "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4", + "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648", + "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be", + "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb", + "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160", + "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd", + "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a", + "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84", + "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e", + "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748", + "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825", + "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60", + "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957", + "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715", + "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317", + "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e", + "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283", + "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278", + "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9", + "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de", + "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369", + "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb", + "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189", + "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014", + "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323", + "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e", + "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49", + "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50", + "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d", + "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37", + "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39", + "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576", + "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a", + "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba", + "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7", + "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826", + "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467", + "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495", + "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc", + "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391", + "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0", + "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97", + "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c", + "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac", + "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369", + "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8", + "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2", + "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff", + "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a", + "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", + "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], "markers": "python_version == '3.11'", - "version": "==2.2.1" + "version": "==2.2.2" }, "opensearch-py": { "hashes": [ @@ -940,7 +940,7 @@ "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.9.0.post0" }, "python-dotenv": { @@ -960,11 +960,11 @@ }, "rdflib": { "hashes": [ - "sha256:4fc8f6d50b199dc38fbc5256370f038c1cedca6102ccbde4e37c0fd2b7f36e65", - "sha256:5a694a64f48a751079999c37dccf91a6210077d845d09adf7c3ce23a876265a7" + "sha256:5402310a9f0f3c07d453d73fd0ad6ba35616286fe95d3670db2b725f3f539673", + "sha256:f3dcb4c106a8cd9e060d92f43d593d09ebc3d07adc244f4c7315856a12e383ee" ], "index": "pypi", - "version": "==7.1.2" + "version": "==7.1.3" }, "requests": { "hashes": [ @@ -979,7 +979,7 @@ "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.17.0" }, "testcontainers-core": { diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.0.tar.gz deleted file mode 100644 index 80c2ba74f662e7b02895122a37e301fde2157b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39925 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.1.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.1.tar.gz deleted file mode 100644 index 7914db1bb84dddf85611cda3b766c0c0cdc094c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40022 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..58081673e955d89fccf70c9161037a725b647f71 GIT binary patch literal 40056 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz deleted file mode 100644 index 80c2ba74f662e7b02895122a37e301fde2157b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39925 zcmb2|=HR$+z9yaNe@aqOYC*oPp`MwZfnG^s5yP9kzpHM$O|qD^|EoyE+ml_tcwO)6 zSYFgipFZuy4B@+OOCFu9_;XU=;u3*o2IhuIlKJyq)jVgd^DkSqN<Sl}vRUJ%+WsR- zjr&5v!>_Mhy(|0n*0=w6n%M76Tz2%&d%35Z58GGPmzRBuce(%Z=eu+F-rXxdw*39H z50b14UpjxkUpssLUilu!4E~7P?@#|dy!Y>3|L*Fo&GKb&e?C0!&%VFbF8=TFU0-ir zxP5D_?6tCO`>XeS{r~9!!~b{tY;Iiqzshv~??+GndH;C+^q$_D|9i!E{Ntat^B+6^ z8NP_Rou2RaU+{lx`QiWG!zTal$AA34^uvGKqyN9x+1Oazxy$Uf;nAP_YX9wXWzEmu zK6^akf4hF%6OiJ&f0>{Bw{ExA{~ou8C2qs+|4b208#kZ%`oH(nf79ek%MDF-m!GlN zy88@oMBvZ(8S*#gWxu&vw(8h@pYoJn$;tWY&t3DD?lzE-%gwj9vAN>&YT2`&e{<W* zMRV3C9`*bDYE7=mIscx=-Jd6iEiWy+XBHP9BYFL8+SMIdadEM8V&oq`)|zUSxz##+ zZTR&cEmAkuN~*6(-(ALWfOV@W<Jnyj7k3HXnc0`jGvlR{VvkA6KLrDy>qfigWq*uv zJO8;i@W3iI9r62{-C}EEM12z@PxCq5-zWR9_%II-_wJNwh1O=b)|{5U+4`+E|H^*j zI+Hzee>N<fb6u8qhP2wlPk%%bV)HG&z5N%PQNgeGnU{f6>(;{?2JR2%KEGWbP`_yI z8mWhKC8aK8-Zx*k==O3aCVnY~HThO<lV|xc8Wt5cu-F=((c7xDkio<u@?sA=D@%hJ zcg6LF3m3l6S(W(9=U)NG3#~r3`F$}LoFCjxc(8MkYT$*64Tr7o@x9-Ww&z<-Q?kXU zcDVqbmQd4&MSa&?wO^Y|Ik4i!>^-Z#ANZr?GoOERi^C1Q|8b^H=U>b+cp2fh<xspJ zTTODpuC)0NpCs--xT0E}VYL*0c~2YvX8*slu59a@$u7N;Giv1x22Nl9f^`0kOXuBX z&f%MR|L8JpcI*53LFIA_+LhzXOt>1W8TS~l8~ECBr*vO<qFc<!87sZa=-Mu}bd#t1 zs}`3oW-9$Sd;h+b=dJ#<TkPDvR&d)>X{*`}wj1gV*Z2ek8mbf683k=FO2)I8=xPRK zJLktnG;P?!=IJH<Yt8W*`Bj&1%O(C%E;Ia~Bi)vEY1Jg*oZYeME-M;bGj_yfSbRHh z>|UZA^LlYRg-X^diauSeH>PLzO9`F*z!bXkUv*jilgrgJ#M(38Jbv`eT%pzE#WL$> z=M${l_}2E%d(ZnI_4~OJ#;lzV4O({?yk|{X@S;<>?i<hL2QL;rTlJB#%S`BSORDjf zLdQy$ITC5|8jQyn`jeTj?G*3%GOzeO!|jLJ<p*?bn;iNWApb4;{QntAT>Kv<D5%-B zOcB#%ygl`B0C&S;Kb~xcw)Vt(v$rMRvnu+VU9+<5jtJ+5Y_1?9(fA2>crP%tidH|K z(R9dc;Z+{zDY`9+oNF@{F)=61KXXu^s;%q5t;REzt~xg*_$0sl;S`(v*fz&4!Xj~B zEq}zGbT%cG2>&34Zxef&4XZ8+9dBg$bB(9qQ%qEs*tf<j{8tWFik7)vZq0u9@Z7t5 znP(W(v{@t>v@fTBH}h2uGF;%cM!1==%{KmDliCrJ*Q-5E+JgF69W+~Ng{?lzM2Q5P zeRo^$%cOaqP3))DtP+p@7pmN8*J!&W&9MB+o(WQR(lfS2&CkjB<)YakE_JNo=NZYv zRt5G#kMbI$Ciuk^A255m<o1D%Kl5&?Dh6InS>lw%rE!GsbJfK)^2*xcMs~%=CTBb7 zMy|DQb=de|iB4!iLh?pSMX7BqYD&?cEb>-}?K#i9Z<TJBz|MW_vDTAv*%wDYkZr2; z*xS6KTS5K9k)Q>A9sSF%a9N&KdB?T1b=?Yu@MZ5N-piL%*v!7-M0nh?$={CclDfPr zqx*FA(P;~XiW3-r$r(J>I(KO8O95Hi9}(wOpC&)ydLzAqt7OS$j=+xP1|4GD5A9co zbtxU){l)IVeh#$<9ow3x$_8jIH1$o<4AqceSCnS4;%1*|ouuKkOGVk0)9$av&mG$q zmFUX84DIbbvclo8*(2VPJMT0UH2rP)I^wxZKj{|k@i5uwFU0wAqgPeSLKf%U)}P!M zb?!C3tarKg-2K+Xkev|;-(w&Bb?CBiZ@J;)<&w6wj_-#VZ|&M^*DiZoER0{Bcv{pV z@aaXtjz5JHUR>G1oRBAZL3l+^kA)?}+V8@;hZ_FcG5spsaC;s5k7tjhMB{RQ7P@T- zH?DKq%C*}z?C|tiQ!mODKGe!Ey*%UMw3+9oN_u!YJ5OlTVM$Qa?fb$Mz?V2>!9(6i zju{i5u&+74Q7-3-Y0UY%i)QjC9Qjeqy+v++f7@hpv$+L(u6~yMv&nJe?(e%!oCv-Y zbEE#o!Y$htu&vpsc&V`Kvg?}~i(Rd|8eA2wEKFuvxLTdTSbQs^tzcJc-u9PS`yL%# zqO-i}jKK3F(LY$;W(${ODqa4|mA0Je>J5V<tZZuT8lfr-1`pUSE;D?Rd^L^#N@>QM zb9>U4JoRii(f6&&_R41m4g>ZZ`v1i(x}LY!B#FoibZxr8)p_>BL`AM2GAHBCKD^*q ze7QLB66fg?yIC?~k8feTzh{k^#Q`PLMakhGeZ|A_1!nB?UA_4^^Y@8jyqlN4xh!6% zdV|IIM)AxE9S8n7C<jK_hI)rhV16XFZo)POyYNqs4s`0t6=*G4vs!Yk+`0XmTA3b% zcwEj3a@u{~(crh*J~cIUp6^~N8>ZyFt#;ht%5gZcWUt^W|3Btu_GDT-b2ixIEVJtH zuNV%7V=5me`b~Jy<;v5S!o+SPu&nHgpZTmg8)c@=>1WJbb%7`R=%Xnbp=y~uT~n2K zdoy}DC#rAN(vvOdeDuaM%8+^GhR6>ALh}#lZD}i8bTsl{_pHLBCFcWrcgf9o+_718 zr@#lt=vQWjbs-C$UYxSv7RTJ)hLeJ_3*DIOZB-{ePBRvNXgOz%)J&(A2_0M5dOk+J ztK_@k60^_yUg?%)Z&vx*T@nn4l7Hy>VaHy^%UOp7CT6}|wSE)d$H`JFJU=OBdj3)G z47~Y#?KSoCJ1(nCZUtuSFJ9i)ufp=I`K{92g4c!@cDai!_mH~na(S=+iG)3KE6&HR zO`qSo;lQe({A)fHoA?+OJ$bODFSK3IF{H57_0mSI6}!7~E+(xo4>e6~@-XR{Hd{iv z+%e_A<dl_#XM2nNZ?Z9_S1!5GH05BTlGV?y&xbt<JbCRbFIZe!<C_wd^{@3|d+^@6 zx{H~z=GPNH)^c&)-|@ypennCC-xsUBlNlwoRa+xx>95tyteR!ezRcAu&80*~c<qTP zK3_g(o#j~OHm8xlr7d7C+xjTun-b@aXbVbjd1zqlQ0(>nQn%K{EY_nOR<@H8W(ghR zxGvb16e22e=)-&~<9@-J`_?_?(>VOjwT8_#&3;nD%Wt;(XC2$5S!#Rsv}#T>kIq*i z?N$+v4Gce19GmxTZEcoWy|eJ5Jv*DRme?5<<t@d>*BU&D&os&Y?0bsYeCgE5{5c&b zDqMM0`T8QFk8C_<cz=(O^s>~4<??T3=PGRtQ+dJUe0fca*6}(9;f4L3Z!}BtBgBf= zUUXQs*05`0PwVaaBCE+Zy#hLOB^uh!9Cf*;wPEHCxd;7|z8n{vygh$n=b{s<6t+&C z^EHOi!(!i-l?U98Sd>h-sG7d`n$+bYW0M~zwoc!edSv#+Z(V!h*i5cw-28GPLgx7l zrCsHIx~f_HyRYr36l7R=chwA$uqg9ilRT%oS#|A9ow9V&29_k@B8OvrH#i?`%UZ(9 zX8QORtESY2B^&)O1YURhJU!})na7m+<T+QAOw*@5J9erx)^(QMw;3f*3PRt9eYZQG zG>g-;`@j{BHuHm_;ok4;KK*(g*D>|VJKmGiqx+>(cjWv|xwlY4@j{beM{`4DPd>{- zqYKMiN{(#hey6~yqcwR2znQGyzlb#gn@-$Nzjigk#xSl`VE$L%`R}z=bNM%l7jUcz z&{AOB<m%hM&F0Y@#qgb5Wffia+z5F5s{76{1NIl@!BV_cduP=5+tq#)P7pFV!|lCj zszA8%`pE{twcmc95Zmppae;Y;u*gf3r3ydxGUoX!n>3_eu-;|hU?_U(g@b?YDSPek z$#cvVd5v5cj$b)Ft1yW@#p>a*-18OOztkV3t`Tcw`dW5|H)7MCi$}U{Fq~DA)SoE6 zM#^_a#BWEIEY?KV<&KwJu6i&2ZDh7{_KWLG)ArxXkY4+3*T+>C^R}uM-QQ-FueZ+n z*zIFiLm%(CoVBgDTe~*;-=nP;E&gBqv9q*}=~ds^@&@~b<t80&Ny70PP0Ta5G@bCz z^0G5!Q=T5+$~JL++Qx=6eyfXbtzo)$etXpO_3NXa+nb)B^?dHC!fSi1>X-w};<oxl z&yDYFiQ8`V{Hz(jd`5?vo^-fD;`Qad+K)f|di811-6xl(y%)3Ev6<lm|H9zeWwIIR zZPBfTMU68*?_HR`xXO?D9b;*t;G+E<kF)*-z02icy3kp$V^ZvG#=>t0Uf(+9^UNpq z&E`qwVfQn9r8m#{R=46{erM2{lC0U=w>i&#t~+H9+Y0+UkAe?o4<<UF^J@^)$vt~j zseDsIgVWvA2b=aKH-EdDIy-dh?bzO(MN^-rEA0*6v8chW_V_;4*1m?<i|w7>MxW4g z?s4GAD7UGuEqEs>EdOH4#NcN)u5A3kapB4==FRfoA13EY3JI{XvpBa^zrOX(SVtou z=Vus`mcgCn-O@#i0#7cy_?)d^@$OsCtDk8cox0{&?BgX1y>G~9${9cM&k6Tgb}YQK z-*IVye~eS>;W8V)4YlVt%jLL#m#t%2_=dM#t%@^HT|)7J?d38zyXkJrE=%v6Smf+v zpe)2v&N!i>wB|!!BtuJcNe5TeB|-ID0q06C@7kU@d5iiX^8{87l@kxxF51L1+F$E& z6HjGIax98_vr~{WD>rb@UgxW}`(h@~Zf(7t8^rzgUZvdkrb)|<x83x!3%_u?s^<si z2CJqECA)k0lTO@S(Db{v^WBXDM=wk|p?K`#D~}tz@2?5QX<UllHu3F(XQ#JECD`nU zYpG3T-}qL}z~Ej5e+Fk^aFAlphn1!>z5Pm2G48i{1Fg2-5K~lNSJBgBlC+pbKhx@> zp4X9!%Kj7G*bb@pm`%R>_>ZKxP5k?o+4Bzd9<54P_d#lbWVGbE;>+>^>XS}wJ(RR% zj{83Ox6?S!8-7UHaOz^jQ@<-&xAJSO#ZI}IEHF$`IJ7e8nY>BXl`C$n-0BaW{p37# zb&Y{V)%_iNT9nq-%RCgBw4K4?RYZ&ai-pxc`Wz|)sy!v*%u`!eaV+kr7G4td_TZ|I z2YL9HhA)<i{A4@ZGAyB?q2cJcng4X(1sN?k^R@i_b!BB%TVbbLy{d+S;i6&l(>$;D zoa%g@x1xeExA)Ys|GAeHvge+;!f=Iq0ZYI~QJF(l7mjS(X5O8xD#2|3e~FpX$raBT z80I&0`87y~?Ah{RvX`D;s^wjVsSA&tI;$6C+#V!xdhOL{vDP&g_*S;49O!z@AY-|1 zBK!KqYdYT7bUhGf5#~4__WL7Kanb$Io#{&I?JvvU7aX4@?7U^>k363F-;Y^0Nk8y; zvuWS*M@=3&XVbbS`-k##m}*5h9F58Qr*5YBRxpJnriSzT&XC8s;WHK<krH*)6m{SH zYj5<YX)_I{&s9k=p7O*_^GQgHLq6k)kW?vNTmSC@hUwY6rW>{CbIP?DWUziR`M`QL ze`SU6ty?`u9VWQ=W$|9%;W_)Zzu|#{D#OMHYRbP`wyRva-uz`p*6I(xLjRrD`d>Wt z|IS}El0WUI+y8Izo6^1X+5bH^Y-=hfocMpo{zmo2Q~x86J@08<mfH4g+J&oq4w1KG zt=W&hKk;D8#%1>eCa&4)&irMLoTU2tbq}@{TJpWO;aR}E_qP1{y&u_fxJ|Dr2W@3q zn0<5a0<k{1oM+e0<elZ&Zdh{oi0`~S3ntdo+2z}KYjf6{YIuD)VZp2`YO-p3N9D%? z?&QX~%E__y;igvCk40xx-~F+k(RTgCoWK3|9>-sAi7HC*@vE9;`!n;O%8Ja%3sWrj zE^M8&c$1Wmns@3{P4h~xx9_J;atY;mf5<bms^oCa$<Un*Qzzvt-In9+y=&6^ph@em zWO#cX>T<I8@;KI&xUOf3&eaEpPDWO$Y|hveCi2`k`cjyjjjCGVQRhN2zh^-oV<u19 z^{H)J!KCR)5~?cInT&GW>a{Op%8NdQ%T=B7V4FOD(xgL5`?eMo&G>U>mddpDwU;Ix zd$N4b6T_oIr+kzq&o7#MGD$F8RduSSU0_<#%yrs66H}(Sn{unqeOWMNa?P?R9aT<W z#r<beOmy4UZdtO0>1qDECni5N^*wdXET5{ZcD31hW{GJm%hV}*)a;k4Zd~fTNZdOu zcvZHhXRdJMu|uADS&~zyzFDUGEpzg{O>U8CLNQy`czbRS+ITc|N$k?CGj~pY91>F* z=~?v2xO`L0wIkD}*?d<$lQq+`^iyzDQLK*Jz7`ehpOH2<{p!5Dc3n2+I_0siJLiV$ z<PTR~>8nfn_rKOx*7VQLfB3}ar>456|7pn?dXf6wqEn~t5q~_HTm7SE>&BjxeICDc zd|sWtXe{RYX}0!Feg0{mCjC$IWjfQmV#|^PL6ezJdkN{7MivxZN|2j$+Eb~fCFRhh z$z0xkdODUTH+)Gs95k8lw7;E>Dd)yNDMx}P3!V1$)3Np3_$1}%q{(9H>iW+Nwq2Se zIkiJyePv*=?evLvR+w*3n6&s^uAb^m!*}my&-gOKbmCGqN4I~QCQVW_?Orow$%&lF z)!&|YfWk6p{wbqLs>y1Pr+7||{1TWYv@~h$Qq|xrtGG<hse=3CEOr`kFMg^Ly=v*U zj7zDfLJjLbEj3d1_B<5wDzozBj9J$<76dK(GiBPGm1$ensQ9Ypo$|bPX3^72lgv$d zH@B$xJ<Zh7oEiLa?W9RoPnYj`;&*nMw)#oqOQBw#-+C%%i247zQggRkz5bZ;WifB2 z(20{it2C#r-SBCWbMWlH-71~Onu@(V#IEKn37X{g`1YD^_5Q5gJxf(4W=+a?m~tuO zc-g}xLA||Gro^n`E%~Q%c};8Jl#*GYb@x=R$h_V@Wl2cty(tsstdgAGt-kWro}`B< zp|)np2bYAV_Dr9=XVsq<-6|VbnHoDAWs3!#op5JX=-!r;@SmE>FHK*n&YJRP*5)&5 zo^5Bd7A<*lW6Jm1i7GcIommpGY0aN0Q%s~aSGb<soIQPCdvrzg_3-5<!q|IOCl;q) zJ#x#s^Y@|Wxg{Pa?K`(cOPmpP>HYThf?<C4Ve8A=Y9@Q|gm~0<f9g9Ucy8s+)Vq0! zs~L~Y@7rEIZKvuSv4h{PnYFgFevG@Nv~2g9xNCK3$rCig6pUxDQV$Sr&g#_;O?@j- zsg$SrD}bj&?zptj?ObLx_r}7KlsyL9dct)~l3lIu37mM$u~2N|>#Ed>bC;JN*wPo; z%=o>w*ucTbYU&o&rLN~hYi_T9`|jAP7@mvg4sqpjEjsKZzQLnmpMj6$W0tRvCQVrx z!ks*`mVfc~2ip@0xRPeFlpdX4z2WFW3!{Hg>KcAZKR1+~xoZ|Z_u~ZFi2=9W?oVdb z30sz!yO(VqJ41n-@YX7(?mrzBT-=8qtpB?A*1x<@Z!i4IST?U$x5Tex^7+K5w#Olf z5nX8;wtahV8JUwUZaZ<_#nPO2Qp?4+Jh}hT>b>^owX?*x{>|M`>eJ(?@GGj@V-ov< zNpAhK^qdzSW8Qt8VOP13cHs5HA1|my$$#3qQMWrm{Jn}F*QwJ=A@d4C17_UI&tJFD z>I0wp!WD@Xdwau|{rSD0`73LJNpj7LTesTz<u7buh^>43-_YW}!8SI7rOsV5952VI z$T^+dYWk^@Nwv=9lK2YFCnbt^|F)KY{66vS-;SMg9^Sg;uOs4^+mgKRZL*YNc_>@b zw_g4o2jUO^N|Nv6(BnHRCHmap$~uPW$LFwA{Fx$X8yPKpB=EXiSi(eJ+Y6<yUJIG- zS$S9L^)Zc<THzD?j;6f{4u{<$n5XR1I8=XlN8<;+w?g-;Ij*gd`*PTN&DY2Z=fyh@ zT8Vmkm~RWMk9_+0$ot*DLoaQAWvx)~);>bEE_!d(arupBO@mHoh4C*uaDMshb?k5a z!!-_GIP`Gg>f>$pTcghIFrO><c%k6D>}ZkjE>EQkC;AfK$X(<6##bIMbu8O$vgIyQ zt?B8ztry(=cmMzT{kA{$|JTnycH=gy=}CjKvVH^U8Q*_Ad!uWz**e(xcjehPXRn+| z^fSJ2VR!AJ{U1->xXZl6VsWGNp66R`J`!>K%y#07O7GDXo)dZ(ST3>4&J+oA<-P3g zyM5oi&wIXRr3t+fIKt?)@7J%jFPTGymh!Hh6(#4A@b$cOlZ#oONY?6OZHt5}_Dpp7 z;$~|8wv@S(>vhM<8!H~g{Mo757W4STjA>^A8}}V-yjNj2b>B<HC#6gBXK5!0=AN^4 z*tIuJ%`o+`y+a85!)vO$UTN@T<es)z98r8ohJjzrwC%R!)beT9d7nM~*?#-kg?s<L z>qWd*ynSfdc9+AmXRq>p;mc<jv15NAgKpkJsjB?V>{qwGad;h8>h+HKLfwC6hJ#P! zA1Y}TKiT;1=O@9%d=Z`&&q_9{-dfVvx3W0oXsdg+u93#WNXx&A{H~T?<=Eb~&2_H% z&ufY$oK2FZdx~~32eY<&7JjLjqT!`f=)PL{#<7$9+bUN!gdN;?qCO=%o3}@n`EYOb z2F+;)KeT13OX^gw*xGCI<hDfU!QQ}U_ipcdKIvH%zm;~WikbdHd$l>w`Q9>rbK}di zz96RS)-07>FU^?D68-!R_szA>Yk4$c#M3)|uWgtt^s#Zpzkud_b{z*q11x3EtL)z< zTg11!>}pPVp49ZUv!DGu`PB9G9^;v+Zl&vPpI!a=Smfl*$6owQU3|B$y0G-n&BQNz z?%M3z*K|q4?)r79^!oivj_2#$x?HmQRD4{F<Im>9)2nYCX3+_JXrc4!r~ca2=Sm-k zl$^5`T@V*PFV4ho*>R4Emoqwc++DWfSm`+f%}0XEn0xZ_&Q<^2=MluXD!@AB!;OLq z(;Tl(z52`aF|(Ya(Q-G{c^&(%9f`kE?)Ompv-WJ$7k@;4uRbyT#@%O9C;EI6InOI| z7O*zU%y544DfiM^PvxiGN-TmKwtcI=@a)yqo^synPT{KySr7I6yqLs$P^|Yc|4ptN z2Y%bjz55feo16XIv--w)zrqVuj@IWs=Fj-Pgmvw!<zYS-pWWlvkAL^}soAbw|7%PC z1y_FG|6YF2jmn+d_wV}uced^Sm#c1CSY}^iyJmF0{+8t(;pg^yZ`{0p|8`~Lb9-62 zb?@rqPo+O)h_*Zs#<yWAa}HMKo9=>!wP(Ix{rO(||NU2gzF%D~^M8K8M!Dp_`)w>v zeExrNmj9gpbrlsK<`!=F^uJd6PyN>apLM>~m+_Z>ue(vd^Va{L$9~o)fA~E?nt$uV zA0NNh^YO*WDE+^0TT!@S^LM5vN8UZO(>ZbV-+3XsL-)QgJzaM6Le@uHiPgvVvrbeG zms)PPTCC@Vlz+m)8n!?Y{kIO!x%_Wu{@V9^z2@R?*LdFOeLogb(G^tt_;;6N$wb9m zwqxH#tx_tp%lY?D?ma6n^XNUJoXCy#BI(e)`s=0D7PsF@wIp2Pdu6aLN+9Z<#+?{v ze&c19t}f@#TSvz~-x)t+is)Wp%Rt-n*ZG@zWo3_SzkDGu(L^tL%6Fm4li6&$=6pEQ z$+&D~aldf6@y9D`>I0X5-!}7Y>Z&4sX0hph1@}x#ZtvL>;Kx5t)&HH&yFE#tOjzFq z9!};^Qm9y-#c}hWZe8;|!BFG8+V{$z^WWL<EK?Ub`SH=>S%r#oGD>E5SQag~vg>iF zFMIs@>qfJjL{w)Ta-ZqD@coKe7ugzm)63EtRpUe()N4EpZ#;SCxXAElM7GCz)$PKQ z4h!~A-m0?nXaU#dlq<c(m1n|uJk54i2yp(|{o{e~*Ts!0aV{IO^sl)bT3uM&>>hsq zP6*SpFGkZs*iJ}i%`*R_t#W)~yis<Dbj_+wx6VtYyKP((m@gGwzf}KXWxK_zS!Qk; zFIi1D+FVc%zu8gg*eIO2)ZF;CVpzZhzAE>{WgAMa^xZwZez~=ax!FbjUe30UA5{`B zPK;&=-jjP(rnu>)^!W;@<Nb4XDLE{eUZH&Jx_3h4xg5o=R{zSyt2h#k7ggRe=YMB$ zQhJ|z<Ue!yn=?9=dgbiNyIJAGa>Ck5$jEbs<PsHeOWCYL)dwDj6mD<Y=KJx7Pq?YX z$E1HT4v7pRf2L;MIb`))gYQ+z&&-3b{Nj&xCS6cAz9h9um0Q_hkBH~0C$BR$M7TJf z`kBBd?b|2QU)FKfbi&J>7F*2iY9G1I*;6CzAAItHrq<rC*VXPeGMx}v9&uV^ld{!) z`&A1rg<e;_bTK7yuE~O18xOr&S{3fNXs!B8r>RduY<C`8eL3FfnEkI)E1v5vnHhbx zZ2Kz{gSU=vFB#^3x2Ou}^gVZ`_UyOLv)|K9#070n@2pVuu$?v8%Oo+%Rl#GrrG$!* zF6YM$leCU)JukiUma6Ubr_*m-TAzKt(Y*TFjy|r!vr@cmjJc=N`4+gH{C(m3ssEcl z{kN(AfBxUS{@?n1d}06Q=im8X{H<C-@8bW@NzXs1{;L1>Eq>pT30j~2zmZ?_$KL<Z z|CtXy2Og{`kIQ8!2@+OhuQ;Il=g+Phr;AP=zgrfS2mfw4_wU}z8gDyA(|bp2omQ=k znSbFOzx|u=&$Z^O8fVs+2X24*D^K9Y^LNub1%7Rj6Pwd)WTUfct`h%g75|p36h(g* z7B9<r9qUiu|DbBY6S6?|q=R7Q^qRE`_DR~^VW{?-ah;RfA~N#9&Pm_Qm&EWMd+4`n z*W=2=(q8PIhgCVX)2@n1Y}qKb_u*!<jPUtW|L))P|M{l>{N?p`{y%(heCpr-y|@1d ze)u8u=KtTnhxaze%Kc}z=PUbm^56Z~oB#du{;TKIr3hz#YCp5->9>7n7EVpmmHT~t z!x_bhNqZbDxRyi-pRRe)!!+^7f!hx)n;tFo+TUF*x=u4xd7k4!d+(hJYfjwzXCM4S zeccbv%WrOMmeA}DeH`^7=d6Fl?u`{Uj%fEM`=8ru@NM?(3+rwFPutXf<g)Q)$I{7> zo5D6d+}}ULKCjtUZ+Ctj*T(wx`7b20ZJf8S<;v-hUw^WjX@TiG#<(rFS059dZyUJi zZ2y6t|6OL$^ES7uC52}4_fAVUUfa(0x&6Yu`7b7US|zu1r!DeUo4Q_fW`8Hsr2{R? z4&}AIZu=hb;K0nIrOJ&@p3OMYR5j=AZozi;?`J32&PcAD@TzJbzuQ*p$^33tPklbv z5ykkruja)|UDex$yChe$Pd@rW$^PhuD~@axj~S18Ft|PKO*{2L*qq}6<Ndjpzm@H- zm73{%MqE8GSxdQKf|UP<$KN{^6mDznoRARxO4Z!-O6>ujUHpaoK_;x+t?vrHGao;) z_PM3;?!HL{IUSjLCGxrtL{4c;YnZ?3YjKQwR_W5YIxCm5$+(NnzxQx*RDZE$P0-4z zhVA~275+-!i;@!f-D3q=RxPwTqr0dqImo6zYjS-ctIFeTH{Py@@4WgtS7GAKWy${! ze(+P@GkI!p(nJUCPv7m2t9|s>jsCy+4;%karoEg@?Ai)E^?4b2n`X1izjyx9I-lpp z{kiF!;x|u}A2Cl7Iymv;x+Z(```(|L#gnH@EB*Jn?@fY6d)?L=A=bc4spcp2L}u=L zwx^AI^^f31aVHzHg7#ZnQn$;RAXKY;Gfsb3s_p5wTX(AL7k?nkcJ;Q0&z<y&f6v|c zQoooznNssC{@<0P6O&vs4^<RzY(2PKfBvt@Z%@4ZcV@pz)Z@t}wb?~M_Mi1#nJ1ii zy?I-i&|Yq-+54(pr_4XP-JW~#hm_x?N{>#ZCEi}Q{8aM=AEmj|-0T)?a)_;4&Fhd^ zmUp3d#aHi?wVW%Q&gZH1rkCq8)Nk*b^6uw1d6(_4cWkSEy?(|^<M=bpIj_%ubxJ9D zdXeEzllA#+yKZmaBP-*~^E#4wLc%#Cj>b8fa}NhQ_;T$!SQ&i8Kl$u`$<FyzPy2c% z`{owdal7x6F4XzB^w9MDx&IZPMYaE5eI;D>|HM7J)(QT9Vqo;e<~l2*CSQzrz3TII zpY20ac`wNO@;sR6u-~@jh;ysPi4gBk+n4?OCZMF4n!hOKf~a(b;LH2>%6=@VeAHE1 zxl+e=O1N&9_nbggmFNbp5071)-YduI^iJBye&}PLy=VUNBUjU1GZr^|&hL%QwzjYm znc1~F%boF`qR~{l7tdU>POGh(seLO>K;h~+5e8R*LM7H^7FTORj&4n|VB9-VIGdw2 zb%Md^{wG@>O*(3O;qCMrjwL%c%Y>|2yW^yPE~}iLw2_r3|EFYezu8vI-rJ`uo?M<| zvTACc>FrDNFKiH-r>WP|dp18#{j$l~{EZWzXJvfXSb4jjtJ>>lu9!n$62Fn=l1DNz z#_~xqW_n)T-!x4xD<1o<{xbH@3!xWzvn@`v9Xn{Lw_wtvN6rTKw7SxTFRT82@Oc+Y zg>4dFXmTvmM!B^Y?9G#ZHNIIYcHynMdF%n3TcXw0)gM159?@x3I+gsKbFa$@nS;%( za)tb2Ev#pjH1Yae{n|Zuu1=`Mz8#KfZczp&cvBP?#H=*?xNlO+xoP+B*M-#=vQ4-v zzlvEcF7ntK&EL0vCuW)2uXe7SBwog2b75g|j+^shC6T`hi=5@eKHQ&unXzoboP53r zv-*>5YnRJ0uAQ~TcI{><xt0aG|1%kH>oeqN6?_oX<Jxu0K$_uRM%Ukz?Q6o+4y_QL z%l2!2Q1qP{E3ChoC2W+OdhBE2=S`PwZk|y}UaG`ds=QL|<nbfU9@?|k@Wp<#%Gt>k z$Q0CNaB}rW-Iwgeo<$F>=XuVupVp)6y05qBNOVuuwf;vTUrf79cB)O&yp~jZPUqIM z=?WX`#3v|SHuxA3?|<@y{5zZC1mWLmVZCi{{)@RXJPO?Y$tZK**GWe;OSLB(yNLP8 zPoMr+X;E-l^=nS{BUR6WPKM1-6@DJKB#Sxa|F(IbB93ggx}e-3+QbpKyi8!<;k$Rj z_nobJzj>ppyO1?ssaT2<*X)Pk$0xTZO?ok-J=-as;nChZPfjJz=yFc`<aTKJr+)75 zXRRKj##ZJpds1ipxyW8uWWl5Z|I&Po4olbhBsHn~ZC0t?mi;laVv6X_<Pg0&y|`|d z)OE7UR`AU8RWewUR#WnkD^am7vCpUL($wQC#4gL5ec*Y)&u{cE=>`Aur8buiOI8G3 z;=XcDyl(HtwI0pKmxehs-dVR$@_FL@JLfiXr5?Vt;_b$grxg?WE<MhCGwt{f5knnA z)#rEr=?MIPUL4Ep!Op#6{^nIpUFzo_KfX~p@oIF<rLL;imCDy|%?R$Wx$5++y;=SG zrdzu_-b9A*wk=HmSn8)_TD|e}<^30f%5O4nwfP#>yu&Nzs`0rGL2c1(HT-ARWtwwL zI=kfDv<HtDHmiPk{iII(Q9ysrsp9vh{5QSdtxS)&>EXN0o7?zqjoXvNq^^$8gHNms zPG9?R@`t*5qW1|A;|{UMCHH=(m@M_<o!s_gYEH_OrS}&vwinV1mU*n`oM5roVbbaq zy^l}Gg;*c^)cwG@^jCS5`KfnGPCYa32+3;BS<#viF-ckV+Vh&6CmUUIdA8hW>eu~t z^Y0h^vbr-&s?9&29v0Tz%z4d1m1DR5W(SW=OEZ6^M@wC=%K0D8)AoF0_ax>?6?<;j zd98Wt9&oL!_teMG&4w45&84CwrDkv0r|~30Gr#ZUH}|yoe{XKq2`oDtBxC$IQ|(OJ z`gChE!=?)1dH1(oPSpJw_P~@^X~sFBo-Zy^ORqRCm~!RXi}Z^0Hn)Q3y)xZjOkW-H z%B*3spSwb8aYe!Ol5?fU-`!ux6TRK%zw*DO?9n^gTc#g6VSceWgkA7bsQjmijvLPe z9Sp2Bnm#M_<+d%7i;w-7!Ln)-)6L|9l+d>`nQu$_uacgfv3J)ur`^YwFHm)qtdbTF zKfZSIoLlE3cgOAexW6O5S^2l2Ea%~g>t1IT9w|9}m*<pxI@^*z7n9ap-Y@ul)oFbx z_SLKNKg)`#i@V3xt$ej4_WC~VXJO0h<!evpIkul%lclzN($iHlqvp@Lx{syaH)liP z(?Yjcg=?3B^NwepI?#J0by=7|@nav&Ifq-6pK`X8-dU~8>d{jYW~3aPw#G^4xoG3< zNt;ehZk1g0E@<7gDaDVqry1U=`q$RtyXf(f1Da<o;=Q{kd490r-&`w{^XPBVx83(T zH!#i*DtgSfio?g}c&E&1@yjgTE^9^J-EcoTukLo-!B0ou+*MCovL*IUM%cU}?RZDU z68EpOODue%-7bY#XxzFP9$IQ^n4VrQcj?S+mY}<KZHBhux%u_iF8;{b{^IHyy#+#N zv}6p`VinW>-Tmxh?7zM4%H4;Yc6Cbg{0|=sm2UNRomy3;rsw!GsiLCB%q#g}me)L1 z)_VcVd|leN*(^{Ko$V-TIa#xR`ejdj&&qg)hlyVA7fn$=!KK_3DmzijM?H2;{Vk<C z>+|bgx~Obn_-VY1<%Da<5@wevlU6gkuy0%?_oQ;oj|CcH0n;Lz)&)!wZk<14myG$T zCHtmrwb*W-J^6ReRC&*{-dAdqPXC=~%f$NEFZt*3%$J2Z|6?{-ES28hf5U^@Z@I{> zm>p?p+x=zAW+v>2x{-Q{i8)XFgLU(+jh|P3+P;55&4s<m%*Ly4iR_tkJmu&O%c_J; zx_e$Eip}rew(#qXa~c;F0&VPm`1PdTe(B4^YZ&qE9^aej+k)&XPxfUUdG_OBj-rCY z-Ur7w-ZiRwQF&eRGuxau!pdKmuRKyvDVWR4slVierSJ-unLi&yN0iky{#Lqt`s)$P z>A?<PtgkgJ<qVbc_2roHvV8iM+eRzbr>{7y-sCOLVew#&Z;`!~>6UZJ3?=7+uh(b1 z*}iVy*?RxjN%2=E^UK+;*vfJ?{oIUe9^drL*O{&>w*B<Yf7SU8%d;y!K6P2477<bS zd}V+~?_5Rqj;DWhHS<ccLPh2s-+6WMu|6?{vt^$dXDT**2`oLIx!9wXX;#UfY^fEy z4zWkvKk#O=hahiGcd75&N%LP!+;wbugDGF_Z@GX=>DPRXu4`0H_OQORp8b*Fa%Jn% z=Yfv%1FUWyF^QH6U&DV|`uu~-rUBy1j=xQsVE+1(ciNdPVm%tG726YRuCX3T6L_f_ zyE1yUl;DT$i!XeLu~9z0$9=B#6eH`Y3%gxPwf$0^HF=)?D7>__<&sQG$rFR*Fojng z5>;0-E1p*`{wHg%@U;19>BR$|-1X#71ZI5e)qU+eF>Sq}#i>vJB0YM~ySN^0K66O$ zpz4(Rnt7>AM?8%TEB@*2-)`|SEqvMS{XrK!Bd5r$mlu6#eg2{*$IslO&GSCp?owJX zDL0j;g>T0Gr7oNc^VHtCdAAnaG<PjdizqWFIb#?c8TM$6QiPtZ@$)^l7mVCe{?#5x zvrG9pll!;L-`Wj7%(K2Smz}wuI<Hb>?XmpZc2@q+{%)<xJUrh*YGRW|zi_4cR(+*8 z3v#lZJcaJgSs=aj=hetbORqki&Z@Wb+RoV6|AOL2O8*{bx|_OTXVtOIMO7V#9$q?s zr1d#BpS!`fT|c6y#w^$SXSeHR=&`=vbGA+27QHX#vG&H>`(<8xzuuDb`E^ZEQ9{}K z%sR{Yq91n@@*AryUb%MOiN`ZHx6dd_4ln+5CD>xcSBui6LdR>@&04p{a&>W;<no)7 zV<x@+8Tn)SeoysHv)-z{<*k3|cYkH`o6Y8J+m)s2x~^<CKEJ8@alF#HsZXEko{!%B zowYLCbx#Rfa%|a$IyH{d+z-#c{pZR2(|BQ(+`KC<6?&R}rI)Q*ceZ)<%q>eQ6zV4) zdu;1+@A8&SldU9j`Fh)`BHE0Cr)+6|t|+LWy*6Q~sLj4Ghb7-QewN4Fi@z{y>)Krl zeoXxl*ZDp_x@J1Vr*Nh7JLBx@SxT0196$Lay!h^I1&^sO|4KO7>PyExIk)~uNoUe5 zwL(p&T|1U97q~d7V|(Wg@5xs`KTCUZ`oT=L=GVo_n_spbH-0^1S%~4h>9Y>rd_H-l z#HQcs0s3Fo&2P_ARIHj8*Jx65`hr5rdgCm9n<e(j4P7(h*Zo|7)XaD1+lh~Nzo|Nx zq43$^{zuv8d}Xyh`uD<*#<nWBd<ggv!T8l?d2Tmr?0q>k{;$fh?XxQS_I17KVX8FJ zID5)`Tjb<(3p-vo9@%z+{qjQZi!$qd?U${VT&ywc<O|0#?#ccPONzL)*M1XUvpJ3Z zX~E^BV-0hr{yP0K|Iyk6SF6Wos`5_?x*wVSHDmG5Z|k1*EV($XB=&dQ)H#dv{vA^Z zj{W`bMWR{D{HN_V1R`~;_qdhp+H*l_?ct>?mplGhY@hwJ<8A9?QJ3$NO*7{P+Gfpj z;!^s%^VG`-jX=kek1Y>fD>N7#1w|~Mc&IPCYIoLBd(U2>Jz1YT#O^&vx%y=1OJV<F zp#x`<K4+fqxp*S$QlsJ0`&Z9!W^2a8zV{Qnpmf~m<gt103??U?o^$Wm4v)r_r~OSY zn!KH2>b<Y_V3oLOuJVN`cR#moRN(tOspi8elejKLqn+EAr>wp`U-hHSZQ*dStEZmt z63VN5Rk&&QQ`xshTf25`362dCINDcoQ9Rsp`7WDzhpbx9FgB$L%O1+yIJv&`6Q}8q zJuK&^ze<VzH8DPZQ+AI=W#RQ3HHSL%7auk6_`ZqneYMPSe)h_fee)}pdr!!D$v0i; z_M^LY{cF$I%sBGd^?YZC`Tr^HQ@CfE-TioBvPxt?fmO*nM@}K}k56)Jlnx5@KGIG| z`WIo~ay9#x)923RN<VTQ+%?`47i7=oxc(t;ueI@x-v^$)lkJZ1+O@_0LF(nC%1eyt z_op1GO%V(|RCy<UoljKVzWiN}pPpPM)F<M<{mYf<E(NMyMw?yxp0z$)5N$73%f({= zS{9pg*Vw*6RCW84qlx{Ifim1jm)JSGUlFd%nHS3NG^kkeS$UiGqu5R1HW%L~#TBmI zs9x58zhRwd)xQd>de(V*pV%j-XS{v)#-~!DVvCS#d5HkO!?X6=P4}yupZIRr((L{z zaY<jzFXy)YUbgKvDZb5$uXPk9-iI%oarVia`ekxm?jNS-bKm-tuhRP~{ZDzG{IBUJ zCZ~rQh+0qXuF8~3b31=}3hT$X^iPdvo~536Q8>%__GIgj&s{55Twg96G^5wh^2=j! zjj8fq1Ov{6Za5R8?VfWw=y?3WsbM?a%U|p?I&U+fxg%wvK;O=7Or0#x!lk~N%`209 zwyNWY(Ka=~%dUkYQ<yBzX7vcEiQl^w<nYPkPsrqrPrKjG_tiNnevoyWJvWQ}?G4N- zr&8Tz75t`&mk4~_Ca}0t%TD>zhUICdD|=Sy_k4fyT+KDo;g3<j*4mIb!x{gkY!ela z<`Va|c>GAbR@pL5R`c5n_CB4NcRO`XFE!i~QvZ3wo(N_Cmruo4E@@rke_CbfZt1ks zT5}IbU-k8$b8?6OoV}d^OICFRmS2grxf~L8m&f$$*#IlK{Vz>UKU*$veskHaExKa) zDGht#U$7cA224=qndulgy>f9vsm_hfg;rDMmUs%qp5D3S<oe6|RpSJ|e!1?fyTakj zOzV@WAB%$3r!U*G<kxJ~!Xo|R63IPU`@IkD$(gPe!gXcmguMlJs_ic#WB*KH;mp6U z`TEpy_sfRMeV2$d)@-)?w2bq`?5O0JWybGc_s^Ui<~gyjNLw{^=EL{J*24SlI2>N; z^)6!mX>R?PWl#D_XHK~DNLKfyYU_P_^~$--L7Jbeu6+x3uM=X{<oM-db)>x_cz(yZ zTb^v$D<jrkx3h{bs(o^C=aTd8Th!NYUtCyrVjhp1Uk88A^wX?z=cc}7xT)E}<Za&a zzUa{buGn`bd)8lUJj5P8DUOLncg8WEu9Mg29*_-}S`l(2xFe1^<MG|<xl8$8TKU*1 zuULE8%jMKn`C~J+^H;VNKa84sip^}}!OG*$(h@y$%9}Tfu6?p*V&R^vR{xFPC$86e z(K{oO_i}rF&9$#J+ACD%NcT(pTQ==?kn{a5annV<O?y%J@$)=2P5Vy2iG>diJ>FE8 zH~r|Fi{(;0R;On;@y}Yp`^C(w<MQPP)q8w@XF7e6Gq!DYe_zXbQsaCbzs+-jH=%Z3 z_ij};l}uTa_x!Az=eDm`PHMC+^HUODdg0p1yCs}&8H?T=oFHL!c)saRSNm@jYSx}} zcbLyz_~k@<sf~5CCTF<`>%};`-$!;S>sc3iEwkbMvD$R&wE2rZAC<}edh~`XL#xu) zm(`)63mm`JrsleOYI>V*|B^R-R+`E5gQoR;7mdw|OBm+6xnI<;p5f^$7_oKt<g$?H zDSW3t@|*5`zApSj<H=(gEgBmgr+uCrQc<O!8`Y6}@P^}8p0zBMM;&BUj(E5-c4@Po z5`OH~>Q`*Jw}SO=uS~ZGv!e`;ElXjs>T~fapKCVB`<~F3c`~)*p;KVkLA_T$&d*sG z(!X>0sgFNJg!C6bSLN6{C(e6Xb!)kLYJ<UIotS_NsSF=lK03`YKd1Pi%3z)}Pw$?O zHLEHve@=a|>*M~3Vv!=^k_J-@6*tM%$zH4~l~vZ=J7J~z|EPBN@-tgLbja}(wzseM zRoBS5u`#ynaLfVef=w$l%WEeUsO3EPn0nB5Ap`T~muG?|v+Y@N#7t_g-{(D-cUkoR zQr~y#cdO*HrXuc;yl2Ydd^4nPC~o<cZ&MN7oNd76^q9~5uqRtm&E7qG+}X|soUt`a zo#FWA#Fh(RrXJcVW2-bh&PwHW;IhI<&x&Qtj~HZwN~GsW2nuk|swvu9Wp|}iS3=gz zQ+JuHl;BiPks=${{1SH;E!oBuhP$LXH*?pVVa@x_cdF4W=t{?uc!3R7tHRHJOXQju zvGja|5W`Y$me9k^N&lFQrn*#G3uy92ax!eOyClig8G3Qy=Py6>J8QC}j~NNb%|G+4 ze|^uX=-XTOv?mlV-CwKwEBg9I$(^C=+b#T$f7yH}Ci?~B_0`|6*-!RUlmFvcb+6-8 z-s4%k*B;wV{5T=BNbIkgkYn5HsV(ARj&%w*%kuYbljUoRo_{jA<9~?R|Cs)(8>`#{ ziz8Hb-*%ZB_2Mpr@rs1>h!15~R<FLdx<R|Uc2#kpvY5etQQpax2VGvMH#EJE<uje% zAmyIvx>e-hmYqA+?LB+_(&Q(h1rMVN_vi&y#q#Zy`uK3yFSRQTR)4Ll^IB)<|66{_ za{jSvuMER>{QT3T+v@Z|q|I^H^Hd48n|te`+Z?6X{Uv8)G+mHqzoX%hrq}<xbMuZY zr_S|FUWQT{zOtcj7hUac&38IKF}f<`-UFQgQ>WRdi?;JQW(s7K87vp-*V-vDH&J=w z<y#OkS&07BHPNQDWuPe#xb<P-U%E_KirFjdQ&_eXl(<7WCJD`dRt>e&Z(Vpe+t3 zU-d@_Jm@?z@zl$zKbk!I9k%x_oA9OneB-gZdO!b$e63h6y8C^V-7cQ$FHRj-o9t8^ zRgN#Z;B|R*!TL|Bm3yzO`0-d{^|YUJ_@)1MO<ZO1({l0MfF~E4?q0mtpR&U(;srmi zlYsq9DHEspyPswn>aASR+i_{yuHQ2kvkEVhKckRzcGJ?f2;a9xQ$vH-e99@k`p$Dz z$Jxl4QE&eIirkj;BI}mswDULa^juw;b0SJQ^y+~$(?GYi|9N}GmwP?5y8WQr{<G}5 zgpYFj-JC1uuPxy+x*v8aF?nV5^y+RF!Iw%Yoh#P|J#p!-%3GQj_El^3>$pE23J>pj zaV?T8ow25GUbE2WiM`9O#($d9KmX>BiC_B`=JOXM^ETAp>pFT}txtW<jD?&j0l9Wr z?~HPf_2`wj+oY(j4&PMe7isHwLrMI%(~~vFbmw~=QQ9`o?a-%r#Vk3|22Z|)t0wH6 zEoja1=f>THYri9IuS(liAR5zspULIelDnp|x6B$_<!p{K+&$EBjUzaI$Ce*T`sKAf zmsz@86V`n+>3wdeG|k<vv^0O=>A1zFe^_+vcdnUs?&oC&4NiZ}_5YkC|8O#J+1~sq zF!lKbJwp>y`8zJ>_E&8!_*P#x-CxuD=*b=3Ec3%!-x<0pXxZ-wVOv!9GI51W`Dgcq zYP%js9C>$P%jGI&%S(GFPdfTtE@X}Gs%H1Do&^urA5xZ6wP_N*DBQNaZ&`QVQ*U#* zyQjkIWdB#T{l58#<DUAB^XFbvRz4TAe_B_@#&P=Y`Ev{pBx4G#cbCkKTGUm2XTLz_ zuQM)pyecHmzcu<EdGz`b=eJ6n$EI_6Zg{S<?F;v=>Dt?js^UIfeSd$|jZ+5>e%>KD zW0AY#=kmkHZLJfx35zV)$(gP$a3cOaCzpJg-IU_CL+y8ark%2Mb#!=`$-d|0<TLv( z8jFTKzivBimcjj%JU2eZZ+QOy*r~7Qf4rane`2NU>k@XoGwf|_r;gPhv8=3`AEE!} zzVyw*ffKITuU@}dMx;mZO?TWpwVE#nRxS>fsYs~_VE!0%^T+XPhM!*a9=E#M=-r@x zVbLX7{l`E4pYfCbZ?Lyyzqhsj`hdmWhquPG>fQZ+Ic|exuhMj@MfGZ?uOsJOoxiYO zW5WKrwJD`5-U-XC`mO7E^XdH1*{{kojmlm=zq)K!t)EcYKj$28!42M)i_0d}gxVZb zc^O#ZmD}v~;Oj%y?<az0s&ZYGsnmRMpkn`3-}RTfSo*d+ukzn&b9UO~#Iyq;yw87s z<l7V6a$Iohmf-hBzvq6>xE+%0Uy^r6_I2Hy*53(bp66uO-U!){WUGD6c>2H2-#MQ@ z^2E(ADwOxkbUvk*|MR)Y_a*G^e#aRTmN{Nt6hEb?t^2h{u*b4X{!e1hCDm317qP#o zEX<BS*v}d|`Q%=1sj#NbDTg!mJ;?5~ov)m8s-xMJ`So=1kpDV=ndYq8X3yR9_wz@- z*-u_?ZTb>@yxwg3#8WZz*esvB?$i9X`;K+(e5ZEZS5?bAIwRM;(%$yJSYcMqPy4!( z|0y?i89JuzKBly;W6r&KjuHQbLYd{{&lEppi88!-=SfrgQmr*1ty5P8tXpLe{NSJY zGR>YvE{m665c#w#K2Gd_@g<Q@3RQfw4yD|1=?pSy-E(iAW7i>@S%*Saa-NS;j^KPZ z^+DXO2lHlZ`jAsBG|y|!v(o*0-n68v_<dHW;(JtLl(Wc1^O4E=?dp4OIqi7Td@=XH zC*`*qO<oeWi=TQ=DY=?5Iq6qp=PbA1@0S~G(BAjF{CG{BphNkS-zU61Pu!UqplKqL z#-{i{+GX*Ki#d*Q&Kp-3d-NPRoP1~3GVkN-KZdZTef;%7&E=l&!7Ew~Qax=S@;0aK z+4!->a<{gVKqWWF?z2lbt=K!w=~|Ok%Z#lWs!S(4c|V+4uWz_kxhuWBvu4NU-Q^Rv zs9K-p(>%q0Vdl-_^`1=uynjoB-l&><HT~`9qIc!WtQ+?yc74duTe;)K5?24kjcuP? zpGi2zGM$k6en4Vl{XM>P$3>Q<m)l?Oj6Rs5(U<+_#4-Mgi;v7#>@WPHW7wSXOJ`EV z;r|n-o?&b{^Zw#mk=OVC@A~>T;dS-u&wpnxet*7iU;h8%+Thowa~+J>dH(N};4#jx z>g2fg>v?I39Pi<;%E_`>7H0d8BudZqdtHC7fV*Wv@s@j9UD?+&bI(*d&wl*%cZHkf zC2I}U<Bv=NHooczdK;0mOybJ!uk|@w*L?lHYu%q1Jtt9V$r_&1_d+M{)yp^beP1}u z;NIQok$+WZR0g)s)R`yew|eUPXAdkCIlCHWC<w_JuGzt`g42vgSG!JZ@`I<JbFZF! zH}68gfdh$rZXb6lEIL#2^6KRmf5LORU9;+!otpo?TllDW>9Ne_OCeMBRc)&prxjgE zZfscp_1I4j`)6N_7cc*GI>f1UPkZUlpXV)2F26mWHBra*X5}^Kc}w@H{j0laey~_5 z_LuL6s_ougo&IG%PnaKkeb;u|9RF|MOHMk@>X|>G&U*Kf^JmZNx*ogCf4=mX&2=pS zAAZ%i54k7*=igcRm6!AFdKbHT(UnJQ&sKB(wP`dF`>Pi!lU=LlD%br_&RJpo)3*uB zs^)vzcwd~Yo4H(My^8(G)XDQZPCJTB*R<t+ZQ(B9TiI~bSX?GjT5^%+%uqR5$G4jm z1vuZ@9jwk5;d9rHG)a~@6%^c`xmLHp_3)aQIqUXEF7mg$df$iLS?1is^SxgsKE7Z0 z{_brt{x*qEe?7KFbS#i}U-ZP`v&FO6HJg`jep_+IG4a$_&4AO^i~fE;+QfEiX3&)> z6Owxa5~po{@#AJ^-_(s0xBLFxGs7y4*;J=kf{8(DY5p~p_WhE5j5^;hO72y7^0e?* zM0@{=700ckx#C3={rnGyx!$|wv#Ull|2<E_rXPP-P7e8P7WaB_$mPbD^;5(bpSpae zx2rRJl@&v$|3RVI=PTNM_-tRth4A(4*(mbfc+&FH52xc<pFe*1L9b_9dfCjnz^p4L z_6HgB1oxk4R!iP7`T4j02IqqP>_Q%i{oPV#_Z=?$%UPIo(mFNlTfk4wQkxkbI{SD1 z`28ZXw0l-y@w1DZGdJ9MV|nrAr=n+D_~gyyH15SeGkWGKXZq5&<o^vX*FD>p`;-bF z{FxxTd*R*9i7%hu%XC=zP&aggbL9PnvQ|Db{NGm`nIFayzfYgbOQw%wr%&83zXug{ zam~m7eEqGp{zS5T{;@M(EGMwqM(VuyWtN-%bZecEXr;apTUXSZgGC8D7wlWMeU&Wp zf>Z<MO+PgMTl(6A=54mTEZ5q%((SR={Hitcqt?hBd$(l9qG;K}(=7YUm+hCS$g42V zU2W$qdg&5}Uf%)je|Co+SKF2=SH;wb345f3UfNKzS^V6x>QkF1>{e<q&07252+JQc zZ`X}Q755nH<}ci|EpNlVUzX0o7lU4(;5x9h>1^b}4qYc!p8Bi@mnEfo^n+$idEsf8 zbL**er`uJlw-fmM?4RXoM;*N}<A-T^a#mt+a#7*=%OUe}L$2Hq{au^#dq#W-yPNdf zrVIP(uI81MWFIf{T&nfL>h*z-lDq#dy;@@(z5HhQ$ul={mw$Y<#WH%o=CT<o6%`iO zS<(!yq+I?|vF@1hOg;YV1ww0md{0|G%MAG;eIo18^10ndw>^pZ>>0k?{(JVV&RrY$ z9djdt6t7?D<#K<uL1p%?i6KX|X02GCeSfE4G{33qwsZeOlslus?=SOMXE-Hf?P>kY z(5>@o0(wvG-Ssbdm0hdP>hAp$*F{c`U*)yy%2RRQ$~CL=gG<#V>SF)&nw;MCC&>5H z$*M=+L;fy_NV5I9WY*DJuO!c#$v@oT__2In%*vN{r3Gd6FCJH%<fO!-XZ_XleP!iK z|C4d^zeqUB&d8JzD%AVCVyEZL1q+R3UETB)jF%|Cw6#g}65`W*E7K|G@@}H0tXlTZ z?>2sAOU}I2i=5qd+%0d)rMar73#Zz2E`DNoN2UL@%EGgDm!JO9T$Mg+eGA`oA@lvO zuJg=H%qV;RgKMkt9L-Kq!R;)YzP$*$H+|~&)TgzPmGLm<&!D~fx92A}{Xaj|Jnd<( z=1pniDxUN+_r#y}JS_YADb{dh-Sh_?C*OR|yknplFt1y98G}LMZrxWco?kyqQPgUB z>i@WH=Ba;spS)FF#Iohb)ioYhPqMx9QjK1jay~%yw%F<ATNa#OA9RFE#kO_I*;iGZ zO=jzFFQ2$I@`8<cVKh&)r;z#T$;(A{%{Z<8R#a$v;H!CGjz3p_Z>coh&rBh6r@=?P zO?^U1MM|HAP4~~}G3Y$tX_<I=-YemquJiTY3yY~eyQY@;bcX%Brmz&|WA4|h1Ds-W z9XwnYPiRSz-aL82il0X(OgNGqsiI=|eTvEwOOB$Z3(s$!JAJ?4?2TvL9O3t)f5+d+ znd@^<>dyj`n|x`fI8E=SGcOFNI@FpyqprS1{oT2$yen^Z3;fdbJH#(9A-~1XPC+!m zNQQg)t@wx)2jA>%zBx-LfpMefjFkMR5~hD<Fch}PPqf-xIQ@`^+zy^>g?|?|{%blv zy=cO5r<W<2%E~iNp5jPyx6b@*ayHRVY{j9k5tE|Un7SVSnY;A&8M}4SoA%##U*M#5 z&fQx$uti*X#km^KvZ~WvFNEBK-P0%j?@K;;YAv(G(MOTTEK<UY`yR=;E8gnpcU*Tp zmB;C;>2nPynbw>oEr+e`^FJKEX5QD+`{dUBAH^@7;wO7@%c>ik_l((i)_eYW#d&Y# z`eaKRq%-rlW#3QQaDm(Rm`F(BHd~2C2Zk!ok8g6O*&a`v#W}_1;YEfyPj=5UmfG?2 zXZ5aq!KM|Nf6X%+%$4sid$38fXlKI9on@=oUIrY$Qgw0djtxTWY7f>+e_r1hVbmIQ zfYD{!gxXaNT-FEV7kxOC&hsQgedUX}9F-#bgul+yT9G(ad@1{}uc50Qrgneu3jcg? zeM+lLzH$4L>@OzvO+nj=Y^E<1c_w3h;5)NY=AN^j#lJU4S*y--Hu$?$ea_E<Zy^`M z(qn(eg}z>|x8LTMBAd*jr}L8zq$l4zE)lT)w9PSx*B>s*-1&LeZ(m!1WZfH^8D5;X z`_1hhKU}&iT<X`~yswo#{<*ui{k5O|Y`M9Lll=02*?%X0@7}z*T%z{)^WE0fyMN!8 zoIkCRVFQPc{I36Q&+GHgOFTFk`}OYh-@Ds)SKGhYzvk^4vD@aKH|Euvec4u)-M)2h z?!V;URUJ_mHzq&soqM=Y^Y#A^N4fv({{1Pz{eSoT+60FCZ}(N~tp321^17Qj;(vR) zwf=tNGVt*<JS<U=<7xVB5Bxs!M7K8k(Q@$<`F4}<Hx+JhV_)C2=ABTk#3SDSTeqpL z|HWK-|6P;PmCe6J^VVE3-?x5-<Mcibo}TyG>p0`Lm3{xP`|!J&hrx?_Z!AxfKb0H8 zTNOV2?Y49A@hRC~9bXt12e1n`&fKskaL3MV+pd+KQ7|Y;dNymKNz?_CYxkx0Fv(rI z{*{gS!l#R2S9%vs4iDd8*Rwipce07z!7q6heU8U0xj%9#7arAnw_%3g1Ih2(G7Y}p zW4p{%UV7wa!}n$Riy1{ic*9;_Utv+ac42$8-xcvMm-p=1kvVUEOx%`p)}dT8okWht z#c!V-{=9dynu%~(_ObQ%Iv75@oB96n!DAeT?**@T9k{SU`p^ZFf~z}9Bt%ONIV#NI z7jk$PI6)$y-&mhDazFRshZnz<$xk`JUc5(jiieSad&`fvax1zHR^>!3ny2(V@X4KB zJ2zhZwM$TLZOX%5&E0nt+C%QB`noNf)nTR6G|Pc!|8Yk4+Tz;Es*4tZ!J7pe1wJ20 z^k;H;^FA#j=@-WVkH62}$!yDTd>CsI!Ts#mceh$Q_c=jJmHOXVzRNf;`LcoQO5L^p zL)L{}u}_UoJpAMGhaKM!eB71rl>f}Txo^|nFWKLw<x;!IZPDqKX4jrdZM*T7W5*#Y z_lXkAmY;q6{D#S&opO;fDas$FMv2=jzb46A^D*oKufS@l&?mKqOZr#z&Z>zD<XE*j z|K+YlJJOc(pJ-cO$h>mX$MyBO;rC`n@146={{H{e&+-3%aZhjyiR@>4;aPI6*KsYs zvCWz{Is0zg-nv!0e_C<2*8Cc^4__k>{#2itm1Ol~o}%vSex82CDX}k??f#&9B3wH* zKlT6GH~Xjl-Tu4i{qe)h8yM<iZr0!5@mIZcjZw~i%{TT@pA-JSZMe9-e8Xn$*Z&_p zJ^1d_zu##;{{QPX`F}qee29{~(*OJDXEkYSe(3#FZ!+z4+<$$3KDCek|4#pK{<Q6r z|N3!n<m=L9*8KSI^*{dO|Ed4>|I(TJe|jeKnRWl=<=(tq`{lnVNJ90~|G$Ut%73r7 zi1_$l^#AtlYcFV@{%hR$Uw)6po%>IJ{Xh5b-@$Wszv}to)_waw{nJ9(zq6(5xbL3r zy>rPt_WI-P57@Ge7#Na&P6+*=!O-)1DQ~gZ2`}5(mSXj%?_6}S%R5vqXlWpK>Efb4 zmdn<MT-{fAHRFTb%&o_~`HxRK!TR87{7gpc!vQx|6~3IY?RMI}T&r*L6&<ItUsbJT zesHjcug%Ri>z(ZV>7o~|Kban)EqYw$PSmo(`jk7@n=ZUhTzTr)_x*Xb_BVdrdsXxQ z*^A$s7r(!~^?kMU?Du`!zTKCuH#GaVGf*@-%e*8+^4-UEd&3{H*H?2$FaEG@QN#Tw z*8A0Rr{8P2=l<-{u@6%BXTScbv%}kN+uA3>-!eN^1}s<-xXf)$(KTy_qi1zrR~j65 zKEHAI;}@Y9zJAyda?|KcdP948V!*O*Gk)!VsJ{A<vE{yN2i|PH^1_9wlVLT#aBq0j z$!!I<4S$vPn;)vYbwg(c|25vN?E83I^Hv;w@iPBf?)SF#rfk>BHwSrzd{~$+X&uz_ zKV#d-KEt!s{fW@ku#}_oIs=6sTRnT9cg+3gsqK;L3swlTO>2rUJMVwkT5#g0m3oiP zmf4DbW?b~S*FxeTuYFbT{kNL)S?^k#89ZLU=!8TJ*Zv!C6m3^1?B-(s65(XPc*$D- zLfS<)nPUlZhxXj!du{yMjctd^(XG>+U;H}wd26QJP4hj4CvEQ?l&-wDQRiT$!_<bj zWL2)X<L%Y5DLp2<25H6CQhy8=JhnKWW7snD(yVU3MN|E&w#m2bIe#b7S$%TXjJ@;T z-Z*lb+pDrpe7V-=y;3|p%JqROc6uddF*UfxKK^~*{lNOft5N2{Qj0`3dbU<QJ5YAa zb*YHylS#F9{0mk`FFZJV(Nw|ouq}Rl7N<2^Zv=lhf9ga@$BMj*7yeA_-svT!bHXv{ z!M&LW@4Cb!vz=Pgz!W=UR*T0n>vc>0Dm0`zJUkyM^&f6la&EkFuuaW*2B*s&^|vM$ zS)#fgFw5zx@N9nMQy=B%(EXNi)%`nt!Z}>ma+G;$f0v1DN)TE-YfFN9vCQ84k~2G3 z9<cFh_^WaziK*WEbR*xRO&o_`YE5_AvLq|@^c=R8vpjZ-?viKv`tfXqhK^m*zEj&m zPi~0uUVHRZoT;?B!JN_wz0<nxyg9LZl_8Vp{RA%Yt-*(@Lf*U$U441a&Wh^3t@1V2 zDdrBfH+?T;%RT9Etc`YAR`Zr^%I)YI?vKBiykh1O{qA^H#9a2V*X9JHX<L2L#U@Hg z9e?q0_A${zxAz*?{(Cb0*wmVe{)erfey+Y&`S?|MO-=UhW%gl97mEkP)nCt?`~TOg zFONj`apjiRysp@Oakk%QdD)+A!GDfO{|vF6sOz%z{4DjguZ<&%4(L>ybe#IUeUn(d z^i|uv7XLl3mDp^Tzk1kwli0q_S0?AzpZ}mKHSLe*?#ioK7i`#54xL;s`_IGa-m8L= z){85mpJ!cgNL+O1DC^eNp1>_7Y$+;TY|IPTL#Oro?RnH3{Qk)06?d=sKf1W~Zn%H^ z{5X>riRVB1e0=ld(XXqS!tzma1(|B|%=)9#Yi5YOZc-7uFxSLtkIsjd7oN*Ym(5%B zRqJ@owVZOP^yxKM4!QK*J9+%i$@RW|6%}tvU4DJ~G$oTWe${%;p!^G0W+eql^ZrWh zieLXS-2cz7nRT@ylRuWvYP)~bT8TASfQda^Zz9`9@!$_r&9|t%JCc;K<>g!si~K)M z``;bacWTz0aA85!vNhlRe|>GA5%lVB*q47@#|pHMUD%_hB->ej<=NVd&!UcH+6vWQ z+v@Im8a-4|suP^Eo#|Y-$-d~5Om&OmYaP2-o;w_<^x06ts$(xaN1lDs$pSIuI>D4! z#+#N~A9aQO^HlvmK{eAQ)^Jhsp~&zDZ=P?za=5vo-0{85$L`H0j9;aHm8#dtUjDJG zQ6<K2(<AY(37vB1IzPpFelg*{CO=8FpiQAJ@V(EMb2}SSn0%#lg%{WQs#Y(0@_PTp z_4kkH&uX7Hqy0KdslUVDSuZxLzxb>!)Ksg;RIg<5o9SHeEM@mI7tfpQ>o2OQY2=Ei zTlUYc>))&^T*7Pr`0TgqinqU*@jGdY{lzt3j;`6W@Z!DBi~AP-d*@Q0zhb}j#rx8S z9?U)PK>F2Rzc2sVJ`|~c_|#UlL)dmp#<3j3WL>Sy?n$~*YjxdjEA6?#q_5j_RBXc* z4zcJ1mlnz8++<!`9=+!K{1tKW*B;x1_Po#k^3MF@yL=b@{hnPaI<+DZzh*vrzj(&} z`I$WOM<pN*Th}qE*72l$@ND_i*&sKYWxkO=dZS+L)lZET&(ozYx*IN<pBY*!<9+d1 z>#QHH$puFw{8rk#e<?q8biT+m6ZgIui-V=+D<3OA<+?&--j&_TRrZTN@*eqdE`x{p zq$!6mb7QCRqRov9HXG|*b(w81m{QAlQ}UpZz=k=3W$aA5(~p?4HD$+K%&0ZIW!zMy zu)uEl#@$J8o?mI!zHS}Zuf5{=oCRg9SDw4r>P>E%ce?Up->+iV`sXc<;Rzq+RF%8F z*OhA4JyuZIvwzRJAFi8UcHZ2x;A3S{jrb8?+k?LP9L@6%JW$<gDUus^=|@{q&Ge8W z4X=I6%58u48Q6==*spSipY_>)zs)~)&p507>aO_S_=_DihKsbdUiL4!bx2g~W4D0> z2hX;Z-yOc(Tegus=}oRwu7ca`WpYdxooA=13T(c#>>^vzmfS^~9ZqGgo8T$h1r~g^ zYKp{t%dgM7{>^Gpoym1=nILPC%N8@{jb^t)j3%gdRxvr+%D%D{*;}6Rw>3ym&8LM) zSoV;MhQY;$zZL}5@BE})Cm7ov<QHF{8mQ$TQ!2FoMXbhs!8r>XHaq{|VYRb1`4-T# z*I9yxmCf4ZRzT0USqtPiSFB(8#AC{yWnpfMre;5SqkQmY{X)Y#-G+ah3hr@R)GJ!N zXPuMJDa_9#e7t4zx&t?}e_a*ce=le+d*FNdmg)XX`ul_UlP?}#A5x^_^>1?359co* z{Ab;^cbk}{`S;!(Ki}Dho-}m!L_B4;=#rVh+5dKn?or>@k=d$wNj{+=mCJri<J(x2 zEN;G4()hq9#ru7Um9bVogDX4@dJQdZ-Q#m}{_^H(#&+H_S7$x{zI|cN2Hp8NCodOl z-_f1^`rpy+wTw45R%|_6k^Q3D`B}Re_rKcu?!0rI+D{CxOYA%M$w523Z3|P<JH9@J z(6%;h^Khd(FDGC4b|WC=URdOtLzn*+b01pz)l#&tD<MWL=47`ex8SjSORpc=N1gxb ze6F#N-t@+o=}rpkqS|Br?x(*y+s)Wl%3Ss;H}UzN848D!^h=-3U8;GdM*D?;`;7Dn zZYFL|Pl!HeP7^MwN;dKR^WnpZ4R7*hBs`w%_4s^$j*N=de1rC<A?GyC3U3WoHJom> zPlmZI^2WmDymRM=E&utTUcNH%;j(#eH%U(rX1+c5ROh<+Y13K^%DyH1Ynx=1wPAyL z#*KHq^&6RgUn_f4U{fex*%h04@7dAj=ncXG>ioAlW^NF*eY}pt-ryih9h>m_uSGJp z*S~c<`u?G-=|@sfh2zI({$|@R&YExV?8-S&QAx{ly%ur0b`Or8Y|0Odd~><?@SVDf z@C`rZZq#pRx*m4W`U?a5t`g@f$`T*>A|hfmgjZ*kUH<)dUGMSRt8Opf`b_Pt!G(zL zi`Qs=FkN}>!gls$_WKr^{EO5|>gc~)o^Nsf(uq%|^&gF;{bj#Q+GDgQ;92)+k;y@M zGYz?KoKQLGk-AK1SLdWT;TvXZ`v@Jncw!l|_U=O|FSuU&9(-NAZlXW;3{lydt0fb5 zrR|%beP{ML4b@3Oz8WuGt~XtJvg}k$XE<lm9G-KFn*%PCm$7g;PPkZF@^|;K?ZMi8 z?5#`QSB3|cUbOv^b>>mr?=xv9gX-pAasA|#UG}K@teNM@TRE3Av??<z%M_=3+}xg7 z8yQzC((W0z(S%n(;f>>;TdrLmBA!#CU1Fz9if;O)$y4TR5o6=Z+dQTFP|gkYYqGux zy)&=(rJs%I`my}btn*AYfdUVfPW6hMx02)Rle6!Fr;3Dc6>mG_dvb4D^gfBjLd9O6 zCcpfU6TP=)_PiBQ#=1{f+D|;>-T2h*t<(J4&h=v7r*Ge}|6S@_+0%B>2Fqq_zTt0J zB>H~F)(f8(n_TW=H&~pj(a9pR`Cw@}Q=e;vppf5|FI{u5Eqc7hR@l4MW5(g$=DAaZ zWURU4KFeBJYRoU%beVC}qg8tk9XuK{N0?{!%e@XS7P<&tX<&MMz^_`%$fmDr(}nh* zeM&o&wqN*NS<_>`xloT`;_fNst=gu7PMt;q8kgUtWxh6NJ`=O(#Eusee|pxNBrKEu zpL_G8x?{%Oh&OR|K^r$X&z29Ke`wZ(%R;G-M51Kd!;}=J*SKY=IJT`eWq-ZOuVq^H zg7fMM%hWtYzm+ff?K8#T&SW2+=yz*;rMXtbcKXfo4CBaoyrsGQW?9sJlYFbSeErQi z7F)hJ|DG4P+{og=RIQ70ciS$`J{S6UPwlN2CjN`etoFTRQ~A6_P0uQS)|Se;#_31b zJiondGf%L`{Tl_BnQeD2m|OHi+5Dqs8sonc_n-gyzLO_!iEaH4<@*1Nk3JUrTYuxb zQN@R=A6fggcW=#~7{J=l`}uBdjaU4U&0({Tmt7E-G$^Y(wDIe)65Y-v*ZlV={F~~S zVACS_|CIXN<bO+wbq-H;`Mo^w_wrmhk+yo*6{jWZo9d4WH+G!n5T1U;<d5J(_TPKX z9kyee{?u=#$)(eCw}t(FwxhM>YnPK!)WMCsQ{ztV@UC!uDEGr8!1UJj>C=~=-TbWb zdE4=}EluAtEJ`v0OZW5?MX?8-Tp{1`=+U0bR{O6hG9Eoq<}PKjh@;(OPwxV&%x(Sa zqt<T`+i|E~daFWr0QaX{h0dk5#n;}L_(|EcJ?oX6)5*bdwY8@H^Q_|mTSF#ZH=4sW z`{&Zit9h|=y2I)op43?-`0?AbN2d8sd-lIrDfIm8_LV`;-zdg@__XS$_v=Sicb_di z|1LLw%EfP~k5>tc8vhO0=X~Jf(gvw`*Qx8`8E@`qyt3__t8e1r$h8>>;b*U(UH$Cm zMl<H{HOFh%v|48|g?2o1*n551$45V`9F5eK+FWLP1a|l@sgTV$Qc`x)s`uihgpTRk zU6#18vZ!9%z2cjG@9Hq-3~9BWI<r)5?C$V>%nIh6EgmkxcHg3R`rZ$QD)&l+TBFq& z3SUcjoen)5UVgn~i)(Z6ts3dWidyAXY#SRK<o8{gen6CC*5ujO!);daPiJ^05xu@v z@<IFQPmg}R+Ocv$Zng6M(<T<{XVve|i#@8afLqIyV?_f)V|<+C!Y84>A8lFbfB$Ii zgNJfkR_S*KFn`Kj!0LB2+3eYb<Fl4c(3~2-)p41e@LKb{!u&O>gA}at_53(C7<*;# zEn3o}=JU|f&!nSx-!8-B^H|rucxEKo^8J;_M{ghBAkEBBaoZ=+f@{lW9nU}4sj?we z>)5XH3Wxp8YsI`vFXg2<3e04T{Nd2_Xky75#c9DuvTbHGZn*3???Cy5!_IY;ieVj- zru?hB`(&q8NN!i#58q82Lzet3nUbV9-P&gDEZGzB$u_4HElmQ>rLgfGv?(?ICE#l2 z{Wx^7?&io7UUPOCmg?`x>htJruUU0vmZsFAOO_S=e=3R-=FgUnoV*}~gO%C)V<5vu zE$5Tj-x3TiEl>-IGmX1EC1T%A?OB2jGSeQEr_a)3$h78*%V4}F8t`cG<@-}6tL$g{ z$T@3f)|awNBF0yfF3g@$toXt=WzFZD%RbwAjQ0l4+8r>rbJEj~56<NrRs1~HC~}?P zmxBu)wM_q)<u`T4c7u0O7h~sMoT+|!C-3QkhL0Ck<jm<>sPZS`(~=2auFaF>ku9E6 z;H_#VEgZO4>XF7X?TOoKtvAVb$1|^&OJ2ZJ-XU`AQUSYXp`iD@(?KylF`IKmQ$Iut zJ8V)rknGFYV=AjsvE{VvU71O*`5l$?wS>R>o-Md{;IWKBz=L~dI`0WRm(zJ55M`j& z{rmBi>`yyYxeC~09R&rOmQ5A(yB5MRD~#oD+GY24-&@Z$xTI!>l%G1Vy_2<Lf%>$j zr=`ZRo(GQizPDv@m5#jhJj%fO6lZjR+s~NdQ!lESpRU=e9v>Nhbe3jwNwVKZ*Y7n( zp|f1ptlefR)_={n<;A(ODy|ip%F}Ev9+Q4(T3{nqeDCk_Ke{(1zb7q!{Io`9a?%5} z&25`@POQ9tTrYpw@}<VNj|TInDX-k&GJjd;mMiCSO}@|BHj`6I#M$P#-pXC&?|rt< zUvjAEo8#4oh3=h?7kDiT$~&pke(mQ)-IMD&Dwe%!t!X~_N@MY|$-kQ)RfyKL_(|=n zxb`?CR`Zlb#C1=lxj)ye&oP>vr)Jc-(PY-CNd1*tm%d%eBt2)(tNx@OweV{l-!IO~ z6$xB_=kw9X!oZAw6T>X;z7L#}fAX;HQNDw|WeYQ$eMIKuz7GmHRdo8n-s$1G?^xNA zZNKEcWVOrN(l1@}cw;tO?B$@HKj+T={5rVM!r$Z6)H9d&XUceQ-|+hGjJqdfd$#(` zS}%Ql`6mwfOx1Pi4{C&h{jbkR6xFEl5IQmA_4ihhC1=Cq1kdl4oM`V9Exz$)_x!FG zOlAel2}v(2w)h|X@i=7Nx!K;$^PIX>4u#x3E_Ye=eD_R~*+*Yn<-hcq|Nn60>EC;L zq;;>WSu<;>A6J*U`#V+k;6AJW^`-y*zxp@*>d*ftKmTuJuC6F9lq_fP+4cYF1B254 zr@QYqU;X+2^pB3sU+cLI)^^Ij@plPeR$39cP@VsNf7!$(TlPp8ZTFoXZ*I9ZWW&T; z_iu?mf8^-&d=H<d=bZ;v9do2yQg&SK+TOLgne(IH>#*O4empElzy3gxIe_8cM&`q* zJnIkclMVjP_TD}y{3`Dor$UkN4b|KC=eminyKS3sk}WWQ(J{XFt1iCSl5{KfX27yE zcDeSYlXiJoOYkOs(X0u1`Qp;qSuLy!E6V1Ss{RlER1YHTRsY*RG-G<!uDg!OXTtyA z)%x)&PyTyfU<mtEFDd`hgsaWq>KlnCV(0raPW|+kOJkdKOMI!OI@8iksozgz@blK4 zJufSlW0n%j6VLqG_MP7$=Tph-`xd`m`jhj`{e+_HpZ=6{g%^ET^3HJH1K$2Xb%R)b z=l?509GCm<S($uG?xxr@GoRB<iR|28tL+XuEHv&iH<f$yfzP087k}UEz`u+9_7r@x zJHwFA!IYZ)B#Je6|F=KUw>QnO-kJOEhVoQisb#%al~$bhVc)8q=9@RuFR;CgeUq2t zW|5bd`E2J;y}gbn-MwG1&3@<Ik5Bj-EZ)6cx6S0q$=Zo!+$*FGtvTSOHIFsGIdPu! zcZZo<?pyh8kKJ{d`_}h&xe?nG)fobOCQkUN|D`}NL4nmm<cWe_l;@)#hrUU?;$7zM zcwO33jCcEMUN&W(C%mF7vzIHeUCCo)sMs#n&wE^Mxth0NBulns*!~5J&Dv$u?xfy* z`D;@1+nEwU{b9VfBt+J9R!c6Ld$RW2Wnl>wk0YIxrs`iSY)fp4yG$(>6?NsaDBn8r zs&`J)w)GYgmp7<tX>fiMJ3f7<LfEa_;Yt7B?)SJ|U#<N+U-R32{#$?7SO2cIfA{Vx zU)_z$kB9s1*Im25J@fz7i2eIhciZOgKJxYdrw0j_{@(ws|8V~F>Wu%gZ{+v<IcE`Z zvtIlE{jUG|r~fbi@&DBS?T`K+`LAF9FOyqXPyXuv?@8Z3JZ(JozdYmr`={ql{omfx z|0N~ouTsADz145m%?&mYQExZ>+SZY>)>bNE!l{XcpI&jrNl$<LfzRhv@b7Ew$FuYI zFy595@>#Oy$b*Lu7p8r0in6HMFf-bCx2f?RHm1*K6~4H~?y0nyurK{Zay9STDx3Y! z&U|scZF*1X+0nzgg=gRG`nN8tWL@v}3*UBqjAyQjTYU4E{NCgH*L5l%>g%~77yl4+ zmq5a#u349_2;X2bc^A^Vf95-m2}y4lXZo+{c_DPeXl3-SH;(hlx2=8knzwXTczW*Q z!n&sAc5}8EY+9H5U?ul;#JvH*2V$ps&D~-!?fq3#yOTKu+tcQ3kdvL>vhV*Hql|X$ zo;A`3W#guHoaCtypZ=4%t~cp=vF<&tw_p1TW?k6$BvQG^IYihuNtQdG>-cSJ!REAv z+dH<M{$73iPOOl`?hF0zdw-Q5>n}O1w974Z-d&XnTYJ`m>(YI-yX(b2IRrItTk3pg zxmo7}gGj+&{#&Mp23LLjWfvE%U$&KX9v4G$?PbGRS5molOw@iqQDmQXMyS*COR7^l zpY4#J)s^6-+1OIJdEfI8-plEq+MSzMJ<9l~IrqN%K8y3dTQsyhp37`G&bVTs{G<m` zeSa3Ri%6YqQ(EvuW_|ayYndI5fg8;$h3_%Hn;yN5e{+w+O}+nduIXXdUF@x=cyBq@ zEzkzK9pFI81P+0|ge!Z68^U_qt=%#hwHE#JeWlD@%zwmZ!PYL`2^Y7pm46e6esk0I zz^@5EW8W+)+VJ_WTIuVbK0X1P4hD88vWeVhxXfkaw~fd5zLEHZD_av^CGX8Bcs}{e z`g<97S2#rfI2(We%1XBPGaBvQ=VrI${%-S&?`*rFF2UR8^rbL{*_tDxQSk34SNF@7 z6I*_slz1(&dg77?ibs2XU69%P_M%Vi5k2;b3;PT9uz5Odyt~d==?bH<g8brSegjU~ zmx>>%9x_i_dt={$+!a|i*Uc`<=toSgS(*ObUFpZpcK2CN_}@PIX0EXD%LSkEGxH0@ zt(d%`<C)tOe^uzYPD*@W8S?56_na94b9_|8c4QWq1Z}=*!6cNcdf}pI`?iD`Tzc|- zeRcse{MDt83QRs)%BZX)u65v>1^>b~#<nsx+_w3)|C75iZ4Wq034Zin@+O0`>4?~2 zA6<vOEW<yH5sTY2zninvU;2?Lx|CU{>bl61tYtr@JvrB)SJLPG?Tlf!y4^*S8HpX6 zrWt51^fw7@Y~1MoEaAn4eT#26ZhW%OGua}A;iP)RmA>yAX7=k^rL^@K8w(U3teUiF z!~2{V&NnJiPj*aVK3u|oCtvki!bj%Z4lT?6qk5UU3VH4B+`PM+XIZPdZAHcGb&cxE zf}RgnF^Y7RW*N*7JU@N^0!>G~Us--8tF}$fxaRZXPH~2zQ)wMj0NdFmPrWDY|CaP- zWtPfC?G4?lUC&sSDlb{o-<8tkf8l1QM`4G#)V+qEXCxp0?2zZ&xZR=DBY%hVZq3fN zO=(qW(_0cuox=l8_%n9iNRHE=pJm|h{mNyg$mE#puF{kP3kCGV_FT~wskxDnqnFtm z;WXKM+l#`Opj?gV<~vqx`|%+}zUxc*q(>SOcbWW!eSBYKyR0=)VhY!>d^O=ouotg) zQ0IB`7u-u0t$VSsMA4u?_O6jb8GnFD<j>iD(u)o|{E)aVoLf}u(J8v(j7-Fbee8#p zbZsupwsPsO$hLeCaNELl&x2Q|X32;t3VoDd+qm~`^%c)9m)x%9uWAp~3-++hO1;7H zEZcGQtc)-%mHTITH@OJBkW+3`+UUKjQRC!EHdWi}@1~qv<?m<O+<SC|`)tu&ckc1+ zTHLTjt}cP^WAVau`&Ieoi0ync*(FGZebPEZ*2;`>_j?))X^dts+*6L$EeTZ%4Hvsn zJ6+!9ME;`XoF|rKq|AE#T*5W+#hwM*>}IB_ype4c+j(hum}qH>@_#v%2E%s@C!&uP zWbZxg@##Rqmw%VKZ4cDOnU@IktYiOt_^POh$(Gc4XC=O89rItYOv&OnS8PzQ=`H1T zJ{_hLGN+{JWXH}jxWL83JCSXZk%VyO@g?ewpLin}&Q_jqI*>4FO{1yxwdUSkGhXkE zc5!4(V5`q-oc7}TMTKw2mI?Q5ud-{7H`6%vJx-i8V4a!rA4ZObEz1_Ft$C@qZn6lw zU$^qSg`5%M>Ni3bt1D$K=-T{P!_|BH>CI;hRIN``csfp4cub)G^t>Cjxk>uIB4Y6$ z*MwC}QI-8D=9T8az<y`LU6VE$_FHS3f3o!6oB6$G%M+D`C+Qyz<oa7Ai|4HRG2Q*s zXU@<XPYE@r-D=;a%NQ=|IKQ^#kPM$}iGGEi0Pk70PhpH%*9~)Lh{u^FUuek9@|n+i z^m%Msqsp>;;qVtf4~Q;RJ@sZu&UMKE)f*;0$BSo9_;Fxa{?Wi|PRBR?O=*4NkorSV z(1fR3`($B)YdHU(5Ieoo*>0=bOD1nhWPY$@N7@yYwzB!nDc^i+e0?G;O0*^__}w(x zC(aVx5+M_JU3%fZll9C;XS5~Tu_#-+h*+#S-zu5v`{Ce{(nT!a^^y+!so<6JP>9ic z`EA$5l)k40Pyg_Gd_HcWEtNNC(PXWqC3YQCHF)=D@N!So+v=xx_sPMho>9ikD<35J ztx`!c<-VYG>wlP;c2%J9x*6{#t`YQLE|w|0r&7*hm+O63f3m+=#z~W@E9#t=D<>Rs z>0j~jV7&g)iAV0L$4ou>aLd&bDXK@7dX^rLSUzoD`@~r>=O@~H)$l*RV#aJ4W#t7= z?E2UbKL4gLp_6xo!?IPgB{Wyh_j~KDbVQ|c`j!v>jF-8oB<{SL@R0BDi7AfO5`S&( z%zUBT*;JXn+oS!CwLnTkt4^e@YR>HW`w|LW60462l$v(bw58{UEd9G^XVs6R7aofU z88HMkxUhsD6_w9q58b$H)ro7mZB-ej&Oa9|6?8it|3IPZp5KA#>Qawp8BS-~q|0>e zQ-zQA=fWQyb>|pg#9TQexGZ!=l1lXK6E&i>oX+x|8GrvQx@?uVj=A`U$fcT>>6>mP zinV>cx^Cl|9?{veIA=ZYQCs@@pou}&oEmPy!p&zgC$w)#@tvJ;?#Rg>44D~MGoL9g z-uY(c$vNywaT%u*(;A)?Udx-YLaI<Oz~H3-E8{lJ#J*=LhZ5ALvb7rgU9Pt#$z}G@ z^hbRGXP8531Vh{FmM|{){qaxMznmFC)35DWcWBz_14;Vnu9Fs(_O~DIJ7J#w`<fVE z-I`~U<mYp)64XdI^CeqE@3yGA>T~~gH}xech10u=+?vmdTj~ZZKF#L8CiT&Z$2aax z6Y7Rs2M{)QlX28!XCa9>X|16@byy7&Ba>CFCGRH9Sdh@mcFCtBa863WopaMK&p)1> zskG!X_k}4tBSNPb*|+6PaX&6oc=;W7+9H!pOjqy9I0brHBp5Ffke<Bp|E&oZLf336 zpE7k~V&u};^ODiK_E_ffUw@tI5bmpgUe1#9n5Ej1ccx+9({8y680|SL=&&;O=?t?) zYZUG{D^6y6X?XeWa-B0ROT#QCvZrk6nrr%Qb;p)>3({hC^QnnGOxf(u;Beiooa5_) zT#sdcQXen*w$3ut)I4k5Ym?lGiY%V(is5VXzuui*>65o`pU@4dhaZ>ic$uKOnD@u? zJKP&L-Evi}tbARVEPc~${+V)-b{4ItiR@>RYLdmKM;{C6>f3ouRnI$VV&-l3*>lCN zMXYhywB>2$n@F|APBYH`T6X?>^<=Z;b8@#7Hx#T~!FuAHsrB(s66e<`O!m0F@Mx!y z^rM)w-g*49n7_Q%;uYAtQOVKe4@<;RsfVpk7fn!Jxoq$JL%xdrPgHL)wW>AjbeY=b z!6c%<@7&B`HAA#6<Hp(<yQW<1uohhTmwji|(;DuV(-co_GW@kEZO#qGna3o~Tr|Gd zw2%LX^y;I_+6t_n_3?Z<vw(AMnzsvYN{?IItt^v=P2#K<1+*;KN{pWF)cO+jqOV`@ zq}s1Y$CkC`x7=3m&D)c;CHn1?ls&nn_hMqod$#wkUVW@``PCe0@$jl2=Z|JDF8sIp zWAW=hELWUnySLOx1^r6OYBBq0>wTN8BTVNl^NdOTkG8V3co`M^t+~kHvHbP)RR+<| zCG0D%TK(@_w|%8l`q|Zw%^6A`hrZr&_2*QNkEN@N@8x{nu+(jl?w-u0r8Tv;b{vv! z($l}?yDs;`-Fo)&XD()|e0P^^`FwIO<INOy<9F50_uY&;1uijX9bM#de&Uh~-<Wr7 zx8ZOocQH{p+ABMug=^2cwRhBGEINO1-73AntaHh)Hz(@fLbmr$MG};kZ>#i9&$!Yf zmZiY9qFc{?{rv5m{W3+5nBUB^KUeVd<lLtM{9iA``02g2E|Wih_tu(K8Z)zUxRsw~ z&e<_fE2i;~t-<kqsz+xuyj^Usz4gDkBZuK7%>^%Jz4>~4XRQy<qRaZ0SNnV$IQ)es zwsp3f9{aXugQ#Sd2&*jX;s5*h=D+om@f7-dZvBNz-*q-{Gbu7|dvBC}NALQU^jBBQ zu6{Z5_3J`bp>4YuE>2pZwaowTD%<b;Z}fLd&RnTpwf{iq%FD}dd8|AW;*yf$l429` z;VkDzuY)gnUIxl=)I8x~<~x)5{M$LEZ3$mw3u=-D<fSJh@ui5$G)NkhB&>KZGjF?c z`4(Q+eeM6-BWK*&xX<{T4x^0rT%88@*l@e-)dtbu-Bo&CL>D}NlO&nRF3*zKX5IW| z)2FPRw|5+pzxO2B=JJCtJYuclaVbixIyv}XNQx|3&}eaCdhrbv?fE8ezHC^Mmy*#M zsBrUKNXd*3qGjibC)5{rU*Ekq_&|?dtmDzmFX}3pL{FVpTg3M}x&LtP%es$CULRT2 zulsG`Im;hDj3@Vdi+<j&cTQv1(UaLH-19mk=NCP<U6x$Bm+|^`XJ=i<!>9hK`OROy z!c^pRX>CIDg2V~RzB0FSb{f7|czlfq;~&reJhQY71uYnke)!Jwpw9f;f!k}G{3K;# z+vUt39p<W%me_at-N!#0RbI^VlY8f~&h?VB-xnU1lGt3&Z^8*CE$0(%=<+8lU*WwZ zY?ApzwM8v5swa<06}v>wEL>1?!mX_B;k>lV!opkHSFrJ2R&8g#d$@Sg&v{(2?ee?W zId*O+pR)42+^TOK_s`uqB!2AcY;gtmmYw45+xFLd=i6KKxu08sHOJS<`ry1>?v=4C z9!k!8_58%<*n(`on~u|W<^Npk=lIplef6~)PBZOSZ7q-W=J&J8c2d(i(sDx0j9s5a zbZx`4zs{cncCvJf-F^DqY-81Gwn`mso9lH8^P~Fy2Xd_6!2WwXA7|aMG_KE_$B#Qd zm935oss7xdueeWgL)cl{Tl4o>^zq+#;jGs3L;O`j>Y;;%nZD<ln|2G;wO?53dD$<) z^j5GAkBZc*Aj9z3=~iz91?SA<lr_1y<l{lUH>$ojxc|=MyW+{8&N|um?ScN|e#$<7 z^<*~B&sJ$Z6aC<#kYC8U$p`+*#q!^={ipXumNCD({laz4kD79^H~go?u77NQy^XD} zzvg*;_3lkyy%J(lq?aEL*fwiv?g~q$%@yrI{4TEjQ$6M<Yp;7_tb3c=ZQG)0kwGU8 zYA?y&yL0zDM~{dI@l2Cd8j^j#KA0U^^WM(l_WZ`rXLj&TGFjS`HEFHH&jYo~SMAfh z+0E14-C;KO*H@1vPPZSby@-_EaBAnTsg*zW);ylO@UURq`@?Uw6IN$W?MU3YIIHIG z-Ve7AeJ<N|^q_s?zWf6-PnTHNURg8M=J|I2P0J*V)C^Ueq-<r%Ro*i!FY=%HeL=YJ zAOG)vmnwZ<aq-Zb@4s%?p83*W<X*e$wA9j%=B54LM2>Dzp1rG#uk_uu%B6*@HiFM} z+|N!pv-#5Y8E+?L72G+>s$OXO&i(47THpJxqg~|04YFVDepmbRQB#}0;?-N<rG7nd zcaB@%I3e!lme#1tGqk@<Kf&Gfe(Lt<IoGB4I!xN+uy}jMM1@~W=BXcqznE?Jl-$0H zF+R<i{k`s&*+v%W$I1kz#GcyZo>qA9Z)R8eLrwRai=RqYzb{-?b>qsfgz6xH?yZM6 zROy?Zxad>abNe-SOiQ;Kqv3xO*-wiEYIa?<JH`I}8<&K-*umc%y0`y2CT|f*-F)$f zqEgq|k7b^Rjm5NkXB_*;yywaLlh*uiYgW5GI%;>R^v<GU-svix%v#f4I9@vXQl&Gw zocZj#du?6TU&{7hHCUT}^45#nz6l-G(rSip->U7fZ432D{<G(PW`jimzemSw3EOw& z6)cbC1-{Po$YlF}!R_(&_<Gi>Oea6}{y!@C@8H*K9806$7&5Q2<+X9qmFCS6cAfG= z&|`knu`L%_OTN!f>6l-B>yh%2qNv_u@gdz-TPLpZ`*EXPj9bOMtD*K?c*Fz!i@$>E z_a6AHwE5#w$Gxr__9&@17%$vauCST6&gko%oW-u&u1;KIoO^45Vl3yLT^|BHHaDN( zU#3<3Osd}O%+;2=;@dvlKahW*ifJ!P*A|m0s#5JdC+t^=ojlujdfgV=rC!S>uM0k% zqSX<rlkdwO8?!Q_t4{m$%j)FiWl|9e+1lPSSYzVTxMermuXpGa(fwf)<k<1JVxBtd zyN>LZeHTUEgmXD6t(eSsoHM!3M21_quX<%t%DZPVzwc%zHY~aQ|7U&w->?7wn7?e3 z=JN1)w4<?r@#2A$BlF|_H|-KMDphtXH9m9Yti>YfD;M{6JUn0fuw~&~qyLQ;p7Ac^ zm}Hs59L0au=KWGNFS9An8h%Z=rLpF<%9+__(|6r_)5f;Y$w>9a&t+$K<|wQ>GG$w6 zMS5id)9im27pYv@Rp4;@X%yew1-I8KEQr2)V#9SY0nt6qffrvf>Fq0fq5hdgBJ-pS zOGeD*lx5OO#4ZY@*|GjQw!=y1QC|W7mfd?pQqN4;S??abHS_De#+7`#8BMG1WWUMo zQ@noQYxIG;ecAW5e;qn=`txy%mCyLOV<s(RkNuu;d~Tm{%3)or6fwE{^hI*j3T;lc z(&-u14CgnTTd*aJ_xpQZjjqQLmrngDy8j{N=Y{oVS0^R-yjbS``v~(yFNv~Ne<7`h zE4_oy?NA7|&6}hDCfAgezs|RhPkIU4s%6tmWP(B;7<(>MwGqfseOKnbO6hB1;bJ@8 z<1OI_MSJT*q<g(T$U1jPZ%jyzXY;#nrGC=l^Q^1vQbq;0+!yt%n(aSpVg80Ezc^3r zJ?!x1gV5jQL63iO&1cpt*S07-;J)Pn?<v!NyPSIjUs~mtc+Y+P%UyW)Yo@l2yIh4q zJ~bJu|4nsI{_7<hKH&tT=kpDnN0nr@F)qzaoBlp8?RtLPp6cq)&uWdlOYZ+HD6jqf z?9*4%#NKy*%cqx@@87ex*73%|>i_S4y*jL$#d|w_bK%cl&&z*&^Ur^OiRbl}`tRSw zw#xUaJD)#$Am+}oe>*L{|F0|l{qOKoZ7U1ODSlrM?+(w`k6+Txp{73R!utNbQnOnU zllt9T_?DCim&VoCEOFH8(3&G`R5CldQLkB8=2O4TckLxSCp7~vT9>S0`)hx~di{m@ zt1iC#knthhAntY@$Kg_`jQ1RObuQMHv+r<~-#Kmjfv29U%5)}9a%J4QRI2ws!`$qX z#own(v-+&PqkHR2$l=&EVwYV1eqi3#RFd$q#>V3D{54-!eUA6=`z!40`7yrsN8_*B z!se>4X=^<$KL3zoB*~|2o%(Zr#6R_E|2tztpVsfH{{8UVt6zQF_eETNS}(=1NQ3p0 zy>Hv36QAs_7Fs^r{`$1|`t?7zUb^vaC2RZkFJD(RZo7SV+WmLZAq;zC{_j(bUj6*p z>-)N|A1vF=S)DhD=P>*BbmNYR^UmIhZjU@6W%#7>!<lVmdf$vW?wUJG-^^U#EFbl& ztc_Lre6WtT>^af<VLG-2$JZ{r(y?mIg$*0l^8K4Tal!MMYaLqbk7_>q>+jG%PtiAT zt9=EheNooFHrpNvUi;$EB^#FSuibVi@ABcr8{8NCe{)#QA@t<ULkl|}B(FKuV%x#Q zreV7@WZkcC`fC3TfA*iO_xZ;?_5UHWi=Up_|9Cn5e_NAD%Gdg=oi~Egf7{>wfAin@ zZ}r>$e}DYt@vArX%?C3iw*2>TJM%C2wCIP;hx$VM)I|&DF4`BAvv$MZ`EUQ{{7=7L zzWM)ep9iAv{x^F%{CAg0IP&fPuMg+NY(R$nzx)3Gp`9iIs@wk8um8RO|BL-szRGX@ z&)<4*#+(1lfpdD=cl=Y{{Qr9K-QXU3lLDJJQ;O$!zU5+kA-1e9?XWaM&$~7^KT~P> zObOYnBL6J2$!#V-7Dx((UeB>H$zWxEzSiEN+UeoceY<4Vv9R$fdDoflT)!gy#BPtO zqB$|Mc&+bW7U6CA+kG+l6*qIf?i>Nj_vJ^9{l0mBy4{uYb;_|*=HIolJa9g5rtLQV zy__EwEi5vz;C5_t`N7C~f!VPjx%@%W?Fl>VeJwXA-F)0^c=G4$TT|ZLzp>?s%@HxR z1x?5P)+}E;Mebu+;qym)ZGR`~#Ku2-c#KKlnRD|V)Aop8y-dbsvp@d0nZv8$^!K(* zUiz9d?QODQ-0Po|9?v(cIk?4j*P@48&a!bX{8|<oCXl<?@pH<w8|9PVF82ASuke5K zulL6%|Bw7zuJ-@-C;N|IV|C<D$N%5>%|26R#eY3s*Rp@%{eRZm*_}IZ<M)LPPmW7Y zn>rz*q5i=v&fvTY33D3W{y+2Y_?!ASzvRCCzr?IQ>D&K}7Cblpt2EyH|7vI5kL~}? znfxlwy&P^nKf_LLB3n-OvaOr9Og*W;;FM|a*<&u36bch_Cq=c);&~e*f2GJ`X_@oy zZO3aYa^rp(X;pS<-Ac8nadYmwEx9_gj=T3Rx1o_=t(xm|MN`g2I};yEr0nJ1V{usR zcxKPRi+TRSVlyvS$N!tGu%xEEvU2s!pK9_}rXLfQ{WtzQ|K<Oj|HpsZcP?I&^4H&O zvBdxRjt>9D-Icfe@4xZy{1^LU|6gDEe`NDT%gg`w<^PkP*t5XsZ@$K@fAc;5OY^#X z_%G5fyzKwg!oa0`m(&>Uy=95nJ$ISOoGVkS|EzG_qqKv6Syqk1+xv@W=l*t;tBZ9^ z+uzN0E%Bevy+_k;iC;K=%cJ>HxyNp$lkS<Wth@7mp2<sHwOaMcl;Tg0C3D}j$ZqG; z-SWt`cgM=_qV>k=J0D&-yZ!ZSg(s@d6oX}FHr>pt`jxdS_~_}TC59!_j-I)rE4FIY zjEYC|B!ljYF6rCGIK}3V@>Xlvd13+?=GABQuIH4!V;4Vk;H>3;X1Qe#SMoC-)hh^Z z%zwrlthmbJ&*f6C4k-)kv=Xj!JG_n4Ra*6qMTpnU_Rx+yeebrc{Tff!?$`IrKdth; zx5>VteAnqOUHM05nBRXP{eHHbx3fC;CPBBH0ye?@x3%n!?EYz}oT<R9x48Pds_j=n zll7Xh{L|u2tv)Q|Te;!gaie!;Y@bqY<W%rgsyAdDshW1D=SlJ0!poZ1=bXLPu_%4B zTI2e|We@UpA7&9#`)~Yn{>lGuv?Bj4m)zF1{=dY}c$tcG^&9^5&+F3p_xj0``WlUv zl+&tzw)8hUy!$_U*MI9PtS2U1|0l7_rHc2E{%^;vtPvb(e1YdDckVcBExXmaH()Q5 zoEu-#@=xa%hu_frclxSljr{YUE!%=i6K?)G{O@=6>epdX4&UGI-@k2>=h`Pc=Wc(T ze^vie)$X95t^4who|yZMTkhiJeOEOX2nRj16)V44%E;cQ@S|E>(m%gU@vj+Ep||5? z*9}{<{TE7SY429raE0gcA&cz2S4!{9|NGnhro;ZHPlYm7ZXB(>wJ1=+^4P^*)?W*z z)lTWIPwFqe!Bw?E_RErm2JbqXAKE{fkXgU2+3V(_tp|PNnAP6Jeri3py8o7Xsj+g2 zz+WN8=FgXc;<8uQK8ogB;*|c1F)K#><pNPVmb&(pA#aj?$zT4T^wqvlgX2-gnJ@Os z{<BW@3Sar3)8jSs-+Ya}BZ^O&-2IR1{J$Rf)!uqZ@wRK?@^5D+R36KczH-uQ{j198 zQ_;QQ3q*7>+fr_M`y|hLxuWGs+pIOBR!kPEmv6e4%CB9NxZLS}`p5Mb?E`|?x;7o` z<(_Y_y6&dZ$2-P{&A!<GUA)whaf{>hY)d6$5f|tExt)@KW$NDku=>r&|6q6P@&=Pb zW!%eKm&;#lcbuT|eRk)O923^Mwc4+;mc6-lyKH$k_xrbJB%e&3&&PiFfr6c?vR~xq zrZv6U%X3p-XWokPV^gj)3TNy786dgxk;^>(=a&jh1dgX4a*$gzbLN87)6?>NqVLLl zvUm65W#t!hdK&lT?>e8;E)k&mXua1@f2-+g9AA9?C4ah~_;kXnC;K}sRQ}CBywGC8 z5yNx;%@Y6FyHET-iN!&5hAZ1keYYRGH?3TK`tF*-%<AXo`rDT2z0Cb(zNEJ?>k+%{ zuCFCFhm$)Wa(Q}QZ(F#S@!pGTU&VQA`TxB=G3#7|<Pu+lN7mej=d664+r#gXw$eB< zpyb%LrAL0Z-$`2VKl&EuqZ@yl{iV8_y-o)G_}e(+rTWw|EqisLHD9E>rtSMNQJ8Iy z!iOZ|kEXfF2Ne%yx!sFD{QFdm8c$l2f%nIK8*k@qIjj6}v6l>wN8Kx-I_vrD)ALuI zee-^|Voc`3l7hd>&WKMaeeM~4XJ(1e@5)JMmuD7Nn%RU;G5-0+N9bJJDTj&YmwXJ8 z=@$tVZF5ds$?@1Q$b%)bQ0>h5Y0pnT{F$*+<k;cPl68G-zV@2-B5}zbeDB%$?Q++w zOBKJ;^yu2%ple~J#)|v>v{apr8hsOI51GIn((+aQ)9=IY9&Rw?D@rxiX}4V(vA^<0 zkm9^4^Av4gE;Bu9H*v3v8B_H85Q(l!8vEw1)O_V+mbPzS^_M*3ySpoN0%cTqo+d7n z{JCPGol@q(8;d!Uaz4+R*U0+p=|0vSdP>=q+c(La=rP{2>ZEpQW5Gh{{y&q=*bi+A znRoA*X5u~t`^`QlFI-?hyJ3l|)pCJ{iP;b09~_tb#eFxx$cH`f))^<E6ax+Omzz}2 zZ(B6;_S8Mgv){e@_3hcG(9Nf7n}UC43LECIEK2hek2yNq>0EEgHpOihuK(@-yl>ab z^IP4w{P<mY{NkCL@2&3!tz_h@7I?fwKOlLc#T6TsoJ&*RT#(#0XP-c-yl%R4-tW85 zy>HJ=m%cko_v>A^mG!fa8GO#W60}shREOi`y0_sc7j4T)`;_`EKJEY7<Nr?o*+28I z`6`Q&(&zt`e~5nhKd<NJ&;Oh^>o=ag>i5v*a~kun-Fq&H=xhl(oh3Of(b~1b{D@nQ z{ce|EyE4lxKh;k-e>eR~3eUNxU(Wx(ZDAr+_4agX#MIq)yzkD)?pl=h;{EkcSu3Tp zLl^GXFTW-{B_zIr(arbbw>!pBi{7eMu{dwBE%7YNc<$XbYhmmJ7e?hXE8Z-g`>oML zD$h>g-$jF>4)vCQl7Y9bC^~I$*mCaJqnk+zoqH!L^j2Mpv3-4Vk=DZfYR{iPKP2<g zJDJ7*c>O-t8-Cg@s)v=#f^KU|AIMM65)7aH(~0wENd1Nl-TT|4Ual{Z&dr+S6T&3S ze2mlcmdlIf`<-ufFWJqNxh|;6`OP=adp4`4T;ovYtBLli;$c~5o^*IN|7?p{uT2V$ zOzBj;aqZ6j6WUiNSUNsnjmuG8XPEVlGh4z&oXhm0i?rqBU*BiRM`!GEu9LWUD!Z-N z$|mDwyurKmezGzPmAEHP&T`b~mA#TL^y%P=qV52Z6Hd7fA3U>OZI(7SJoHSMW1+E% zL!0x*glmjxw=-Fmi3(&nKbvZ@{BB!H&y{~m=don9-U_T%&|7{y@0N;o&iRyTwcEzU zhP`X^+&V9M`aM6n<_PD?Zy$KtXUs0TEX;mq4*R)A8yR)I^MbL*5Bj)I?DBYF_SVIF z(t?Cb>FSM=2m5r_hy8kfO0wFb?@vwand8^H6ILYYTzq>t-|OW5@++zdOC6_uS*xVI zUP64=wh4E>)D%vgAhXb<qdh|Ca<i?wp0Qe%VPJP>)XyDf-v!ve-tE0^PsIMBqwA(< za`N8@O<H!MBJj-1HK!+D58Av=igmL~&%6~A!ZiJyS+_6x9hmzl+HH#0ePOT5m077# z%S|~dcmL9zSE``w^67M|piY;p^S#N>Pt{bG*}Yu3`19v^OZrk&Ch4;8J(*EaSEjb| zlY_vFJ;$Hy&G))@nET<*j;e}Hj(w@i7kO{5yWCY>p)u#ARqp=G9k(XBI!fO>@5067 zT>j4Hk?V;iHk_AKn-_ETKXg$rRPu0VQ9Ut7F0MePaC3~5hjz)du9KHO%nZ-@I(OCS z8`q7OUhtA}zAf<4v~;e^&)ct0i*tTxIIpX<<<*Pg-mv9r<<spNeU`@Qi~OoP<+byC z_1zLfHY?2wG57W4_%8)*`#4EqPJMSz(}#_F`WHRWp378I{KoF!W}RcJ5BcAcIrBaE zoN-KQSHr17(Uk>K99cn@8)A+glR3PG@s`19KP##D+lhQ%=ig3Sre?oca?Xp+ny*uW zCq+E(FVH-s(O>?pUPj96rDg!Xs!Z&ee&w!Y%V^Oh+!H@eyY<$=Fr`FAeM6IrilLI# zF4<1cPl4aozGC@#*-GH&wI@F~xYqmj-LGApRP(l_*v8PVsjaW(%Qs(+obyw=yexLC zj!w8;yZY0u;-w2eJ=vNp_eZv|<&qqKo%}Zzm4sE2DL*c)XzYnra}3e_8&oIAw_%Z= z!^#Ok({DuD<@KpmhIMTzdUBW}<+{3jSYzJD-wx$`j(Ti&OF4={6{3IHO_=Nas4M#R zRqq(}mhAaULZy!xak%Q#>g|sB7eDR)^sDvB;otu3pT%_hOpta2gPz_0^#;?}7AO2Q z4@~-5zrXWWeqm-^zRagrRsYmh)~x?fx%v6Jw6#uokMB>2ny&JLx3b_uYxU#SEIl6H z^q;nGZhrqTbx-A;hhGkxOe|RN(R<0m1K|^XZ-2%0cXfsR`v+qC8h_hWxG)slu#~h~ zQtUr3`TIB7Y5BonXSmh0_|%N})U5ivQ{MO~I%_4rihE!*XA`&4&drCWHn4FXJFD|h zc)rP3<1NDNoV=bB)Y)$4tUtwe<J%IG_cQ!g8RqW&f8cM^wUD5*sX3><1`GfHKKpgN zP+WAN(EM9l&c*NdWSX?w<;=_47nc|l_;=r%_QG1=nT7xCu;+>|Cnr4p)pj6T(n@^y z6V10`_x;}$bWWeL-hI=l1>P&Y=U>*iF@66YpLZ7(PG539xbhT_?3%P02ac@MywYS9 z5D>_%xwSiNIuDaUPm21Vt7m_|-W@Zo+Q)q1nU4C8-_!&dxDOT78Z7mZ*q3=_YjnVh zxRb|XOnYjl|6ZM!^(ok>qw|;@Z*t+E-Te0ZcJ2KA((2`fMORo{=C1Ke)GM4*vB|c4 zQG4UvM0NL-H+uJWIdA_~wkuTT7~kbjS4(8hCGtM3uCW%)=6K2`c*xPZWUaV$_39~s zB8ig!bd}wnWu@OYis2JcRNW?Q88C6rxpt*9f{&DHWS(tFmVH#=qi7c_wqDa?{lr?a zhlx`!R6dO0<3B5ZG}*rGm8;v=o>z}o*ws&QY<QK;XV9^*vh$+N;-40?&dcAEdGci| z+Z)$Oe^$I%QRB8_x#teoO&t{_8#ncKf0ta_J@ZWW%eUP-d3r2$dMbT;Dsy_iN=lyI zZWNY~#<N`~Ws{QF*H>$=9txOLxQXp`isrMElip6|m)yL$qC;!jin!_3hu$eY`_ivw z(VM^a8SC{a+oNay{_^ndv+GWk?KYE7M%DFK+8X|sfA;_IpZXi2XZ}Cmem?BrrTdzH z>e((u2>khHe~879;o1M-#sB%=TtDJ}<eqfyb%EQdi%%a+lYA&2;&t`?{<>`r`@7e5 z$VPKWU(_;mKk__tLGzZCr*|!_51F`a!8`r>JzXNbyrrEj-Rj#7CoNN!&hEPXPX7NN z`-yKal$cz3?Q`4b=*NT!CS?mMQ>r(dI&*bt-ipm@`;Kh<YqDwO&I{Wo7$>dHGf^#? zr^Y1wVzR=$Mb|D>D6G5`^Mbc^<BiE}+#AcyB(!Y{*YSmBTEumH(%7WWGedIP(`b98 zzamAUAz6k@Gk5g6>*{|mn{y^hcwx4Au5RhxryJ*Nd$#GKR+Qbfg<pTndf)R%^5}K9 zkFFWF+$<kI>{-+t__b81WCGvqg(1P43?J<<<A8R5eg5-b{eSV^VyCIon#>wl{?=Pa zcsl;A@A-H9%m2xp|25U`Jr`9}cR#p%zi~@v!x7KUOFjX0S{`x!?qz*$a$KJ0zLl$Z zp8L-K@zet5{!RQ_HLGsDb3C)9wDjulkMnIi<qtGYUg#U`KW(e2{;%4anq{>?;=ihT z(@woUwwPCcv;F<=7q$QX*zErQ<J-wzO)CSY-w}N|dG{6_=h^QUu)6<#wqgCkPP_HX zGnW01xTjIT&)Gj`-;<QxI}a(U{!wn1ipXea-4|$b=T6lm-J<R}OhvO!p1i$wVLmT! z=b6>EHV(O=t@){Tq1=;vZ*)fKPC3$d^2X68_23?5?8+zgDn=5&AE`Hd{PaISraLL% zpZIZMwg1;^|Am+8G2AKWb}_!mY13}JZ+e@|8?^-%e|Snf9^E;)f1ApRS+Soc964iM z7i{TtuUYZkza0$j=?535^5>YB7Ylo4rFOrl-(s?~^dM*Ky43j=3+Mkh^D=w-V*mEW z<poS%uj(Js@}6}_?r{_Qi?ci`r=>GiIY`-btW@KeaI-niR&p1INRFe$g^kBouKC)3 zkN3<T)dT5sTwHW!RvFB^E;c8UJ)`T^{wpGR`~PtlU(fvf?$_0?SF8E59^BgeB<|k6 z+OspQgw9+n(4PAH>GIdNv#+%5t~|W8_1%WcJtAKhwv^m<UCK3S|IM&zawqo-doMn| z_SusOCo<Xf+a@`ug<luaTu{IxfArr*?RPE@;!}S3xBmZgF-Pu?{Q3|-mT#(Ue?xAZ zm%sir_HQBk2cG~<jTI_hT0U|!bxn`deaJbr%voozbHGsxDU+pb2`>DL>jK4ZgxPL2 z)x7s_aqr=62^$yuXPftb&a@Bb_kZa<^?r@(83~rfYhxsGRZF@nS{q$lT{66WDkppw za^Lv4{$D}u@AEINY5p{r`E7EJoo{rPO_bj8$E_;;YLATrXK=hK*cr2;TQTK+=+%!i zP3)vKnyeUJA90eL*E{`r^G6rS`TVMpmfbV0m0sUHwdk=&a;6gRvriEceC>;i9p{{H zy;x%r$F;~}rVrcX;+HjcQY#-{{P4!d);hl9^yZygB)lINN5-C6I-}5}c$=#a$HwZG z#_1V>D?5vCy}4HGaywt(>5(t5dv&T`JkkH)6A@A$;~Dy?;Gg?;!-xm2e=geayg1={ z!q#BT9-d0K3D2fmFh8)3V*TXtz-u|v9T_HB9<~ivPuVLj-*m@0uw!~jgWrCmb#toA zu4hS?q%!OFJ_(%uBCz{S;M5O+&0i)4{_&7K8$X#LXg13vPnMG^%`B}GK1KMwJSRT2 zXyN1ucCRMb200k+-y_)aVj^pw)sfyWAI@kd1)OC4^}nvibz_jqKJi2&Eyt?|7o1!C z{)xc>7D1l>IuCQ(UQKp0y%{@2HQ(-Jfm|NHYhAdfqWU7W+Z`)C!_T#?NRo~axaEF* z*5O3mxgu-4Z`={%IJeX~k0-cMzE5(}!}qp5JDN@^iDgEyrMbnQe&oi&BRcc;A;&m* zZ%_8;R+V0E1=Ej5#$335F#Z!moR#B&<;lkCFZ0g-*+28Y`RD&>|L!mRcc1N>fMOjx z>z)IXAK9x0a$T#J?$r4oJon%IT{CC=<;=ZN#<$|j#RW5iEp;!b<x1{mUGk_$Xcu#J z-5&9?jT*OFCLHaqt6!@B<m%+SsI%+dMla5rvUXkWnhV?WeKtgH&kVjTH*wL*w<%(` zL|)(9vT&tdS(~ox|Cu|~PhNY}8NQ|U>NQ`J{r<BUO&|X&*p+oJ?*88SvHNz<jNM=P z@!i|Av%gR1y4-i_$RiflDO-Q{xIKKzs=wHu@8yHTcfY=!efs+K3kQR)JKx^3d(ZCQ zPv5@f&M=<dd%>*ydboU^r+$Ho!|i}j6_JZyc3;ctSr*E4>9OLZE{=?R37Z(HpauE~ z5rvr?O!A9cf?PCSDCmjyd0mKhb$Bi(f9h1!?H@*A2jkariHTI+mNc+6IoWfm(YT~` zZkd;u*#DDH>ec>le*NQ<ec9X<R{x51`i?Db{^39E|J0-PRv+iTZ{&OX>eP?pqGF8~ z%yMV83ocag`{EV<_FBM=o42RjQMtHi%aqOg7^UT^xNFO%^RUkRZF>2V*g5HQbM?NT zyKrsO#{aW-Engd-EnSkHYF=9RsC|oG@x&8XmL#3Y7x+<QzTx>L*-3n%Rn0Y-9v`RZ zmH$1;RGD46-CVcyZGY)e`3bhyM2mY{MEZ7Q2W?lr!r9UC;(*85Bdg4p$i6gMRl2EN zY!N>XM-aoJOjrKc=IQg&&e=64i(XQis@bvO;n@qD?yTIB#Oh;lDE#z=@@d;D=hTLL zzdUX2Z-zrM8yqSH?3S??d^xl=HA$`c){JiTQeAcP*d5+QuOjC;Bpt|H_MQKxQn*6s zvTr*Y`Oo|_n)Ufn^0({TT6hx{+}mxlaIU_X&J}J!j;dFwhGh$-=Lh>+HtQO^pY<yu zV)nGHhhAG&t({i%bN|ZE7djWo%#gn_^-z6EgIVM?bNyK_XFczDdzx!G!|{t#rUXwe zpJrDbA}HLHWnp+)Cr7k;h1uV3mRBk-SMP5AWPk6^(`RRYe@Rx~*gB!yZ1>eucC2c0 z%i_w<b}bGxbn@R5WIiwX!=6jKtKHsDd6#tR*e|9PXAb>PetCMcd<$3Q!Hk75OJ|;B zvdybwp1sV^dhbEO6|1C9opO(DovbO~WnHG%S`Z~HxpuC?+Nb_^3QlcNGmNr!j5<AE zt?81K%$yZF+JzTwEq2RZ?vY*hIK=N*SoX}9t2A^M-uN={#Zs?TnjY4!t89}q<P_a2 zru>R9xHhxKZ<)g3C3_x<IHkIO*%9`>Oe)x8(L(d}C(V~@s_&JwSf8tW{Swpc%|^4| zUyhnJ`T2wG`r@4%zFw|;$+*qZ!`|?g!oLnB^_S{%Gnc4+f73E=(vi)A<-RvLg65T` zSiIMGen$E9sdGD)owob0QNtGWKxWCj%@b~&clLYeqjGqs$HvVQWu7Zrp7;1PXR?T; zwq{9O(2FxmmK0Ckldit<od2iXuYVI&CHFdgm7gAV>gK0@ndNT|t^bs9$mfBMn8S;v zZyAm!0~@CLF>kQc$;${`*?G=nDdW_hX=3X#vvR~Xt`2mbCC*aF(9alC``T8TrN4}4 zvf!4d2A#}Pt{ha~q~ubyjzjZQOxC6i*IM}H_v<lSJ#@@{n)JzIZ!1%O7R5NYCw<@Z zW{bJplTCX(&NH0-s^<DBz&*ClEi)jfYj@yIjZ^Pagd0A4z9@OVb!q2G-j`0d?tc92 zcl1!Cm7>LSAFHR0pHDuW!*yWat|`He3QwMW*L>?JS8)C4x?sm0Zgq2cFDxy5d)ebt zsm-&w+;5IX{?JtUVI`-2p7qP7AC?TV|6Aqf$UHdj&-X!bW9QAk$4^~7RJ^0V_3-Xj z4HE_8kFZ3lJ>4m^r{AnD`uQJFPeJ(Cj%j~5%$ErM`W$#y;U|OKV&Bl*+P5l7FIbw4 zyzbR_Z{nWTf8dYD8U>d{X{>tezg*k?Wqc9ujam`9`b=X@r=q>oPs=BZ?uM<bO~03V zcSg45ZJUN8fo9L9#3s)-x~)>XVYa-|)@^rdzV9*n{ApsG;iJP7;`>AjJWNcz7<WHc zWvN-6GTFI`Lw$DClJ>iwh2-{yF4BDUHlY8C;QKcPJ_jE&NEnt(-0)HU(AIUm_Usk? zd%ue}Ra;iSQ{3lw)b^dq_Pd)5!>$yryY^O3eBY9MuK1;IOw=F7gzN26vVC)kp(<{> z_52;qkM+Fl9Q?(@Cad+S<v#FP<uTJ|q2bM>#7(UGpY)b_%HG?gu+nO|Nou-v@{g<M zE-WisSCqOhRMhub>En(2T{mU_=Q{W}(EZ83a{=PF!ZsWHP3<sR)bV}4oOlo0Pm|>n zVvYZnSL}cA`T6-j>2DXaZE3M*4(r|e{=W{#^Yq0Zcba&bR~o&Y+SYO6$+lGoXYPNW z;{5blMx^vcc>%e&kdT>D-#BHzwr-huz0EW|jyuux;=ZG0d2NyRB0T1F?BqJquD>pF zUTDw}arK_U`3-+BxVNciJFn^crKP_6(~Gq#$||i_JZC5-ukcT~Qr>kX{K~YK3->8U z8z*P@Cv7S3+7kXn;o9k+StquHs=xeMay5!|`>ZG1E_G_IXVOy^Ey=fHJnhHY>b2?3 z4pymKy#=OM=KNz^^}%&Ro%3(uOH;1jO4It#tk+(DB7WKP56Np!&3@VOr}cpQe>2_G zWh>?{bFNd8v)ZnHR6k%v%fwyWi$00W)kr_1@g!t&p5i2tSN$Dc-2a1A{scMBi(l2t zQvdg%_0I$PbNPPEFHB7j``>%DKKbkY8=(vSNo!;tJ-uJ`O1-pKav;yOdTG9hzuT=| z?^nH2b2{R&?w&4b&C_CGYjkr{w?u0d#3@=fUeo{W@RnmAQ^xg-`LRE<m#}6no7k0c z@Kn}9(MwHFZ@de6Jb7Ed-=&ulq$IVL*4ABmx>ZcC?dG(J3wZqRWgZuuQ<nX_jZb`O z=hLm{E7H7tO$v*b9Bo>-dqt(w83~)!=J~}NY7D2vBuc41%{vx<MQ_GhNh?j;(<d4& zxKm;@&S$r<I+uz4xw8M??Tmv5Uw7ry<giX^v6<3&=+b4O<%hD8M6BGhd2dC?G-&nj z=VcbXx}ML%s%G{q)d?%QS_6a5J?07Y>|}}A^C!aTC!@rg+8y(3OCR_aCU%JJT6*YP zmif=kzg*+;!?pHbxV~1Xt0b}JTxzP@#js1SDwcKV+J1K~y}@T1@ih9}w<D)?jXvji zKKL_pqC<zzynen5zLncIrM3B87BQ+?k<h(vj@+M9;dVg>oM-hgG%&QBG*)g{U^j0b z%c`K-RY4_1tE_&ee6O1rW$;wJp!`MpG^q_sSNLz0%NBKYv%M9jXd?3D)|JzbOu}`) zuc!?&-_mj>`{sr%zP{d)yZ27<vORoo!<DVEozqMBvfdPVpEX!pV!^dD?9;PCb^Arr zL%%4w7jC^IH-AkS=e$#V=T~0z-jcGe*hsaZ-(BS<hw7D+#`4~4t{(nuQnvd2yu4F4 zyk37fr!zCh?J1Y#ao0LOAr8x^Gw$r)f)Y1{u5`J*{o${eR-JZ(P3t;szQ~(!a?Ebr zI87&UgQoAHq8EQ6JEH<qN@f{_uQi$6ndc?4qo(DHkIMQCqe&8ysp^Z3p6Ivt*sc0~ z)N8uEUA&f*VcL}Tu04J6sv8zPS3EP_&slTHuUndm^0q0WFa3?Y8h-va{$Ky>|M@@v zo&Wx~&wTa#)!+ZemA||>@W1}Rpa0ok{<9~$DaYzClwH1mO4_yT&!@RYl}}l@Se#jQ z-MKGlIH}&#BY%4FWS>-SWsY5c*_)Z0<o+v4?|uA(|MSTQKls_VY*_W`YXQI8?ZZ4? zMR~{NAM>x$dGXTkK=8KJ)(<olOQkO+HB3up`pA6q+LRyHG==wOcI25{QLnM`Tr7H5 ztaj(d`DX9e#mC0)eQwfPUHSW)>Gpe%9m3vCpT91Dy`YW!PW!^<G$;Md>Njg<nVnyH z)MXaW`DaZE{pZ<Vc?2Bu5U{Y9o<EmYFj`KRJ^fIM-1K=4|Mvv;W_r#GF)Z+!smZt1 zSls_rl;8C`=OhZ=8;Lt<&6ypfuX8qzVei2wRh%7X<~iyA_$w%RLoSJ7F@t<`R=^&9 z-9PP<B0OFm6ur6AYtd?fL~ZxA37&~zJJ|!2zI2J2HNQLk?7UgEm~y5$Z~3_+b1r{; z#<OOp$hjE3<aO=(%TrF@-0|t8!PBnFq6Ss*$9lDfr&@OySo5i!I}pPVmLu8o^M>gh z*&Cs83?|GP-B<tEO#G|Ivg(qigX!^m?suQu{C0es{kFfd#lN}rpFF?n(dB-6+Uw<y z6J;IEp2prtyl`gG39;xYsx0r5?p550TDQ>a+JlgDyZhZZj&>|8*m`|d>mHsZibj_- znoT~1H<fxkt}snFZF0uokVfc*b*F=u747oi*k{XE=6$H}-kgJ5Dgt&&g<cc#To{$L z_vjCyE7vm?$nL%u*V0xmH1*r2+bo}^Us)Zw=VS-p$I3;@^?UbNmG@N@2!<8wTDyGy zlzH4II`3mhl}WyM%j+WD*?SgLya~D<9lu+q){4hw?rFEztN;HAid=M0CR{}Bk3(A9 zE{89f+YV|SXx2TzV!JK)#+f|vD~GSOwVX4aeardv3)S1V9T_rq-(TN!EpOY@rS949 zk0^=#i#)WO=V<D}ABX1Vp1h&vCYgG2w!e{u!%gK$_pb_i{<Zw0Y#5xmXp7B@lltyI z5^IE(CoY}#WG%xf)^kTWrilN_OP+f6)j5?+CBLA9|2(HoRe4~axV=VW*0271qG!Yn z-7Xs$2>*&Y=jQw%;O)nC?DtAP_M2Q-+uxYNR1}%h!m!6KZIbMhN1cr}vi_CFp4#0w es#mtLJN8YI_--_2t^4)=>?##9%NQ20G5`P`=e0Wk diff --git a/dbrepo-search-service/lib/dbrepo-1.6.1.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.1.tar.gz deleted file mode 100644 index 7914db1bb84dddf85611cda3b766c0c0cdc094c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40022 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..58081673e955d89fccf70c9161037a725b647f71 GIT binary patch literal 40056 zcmb2|=HS?y(4WrqKP9OswIE;DP|r-yNUtQZh~drN-&MEWCRxnd|5YU7-AS)sysmeb zy6m148?`9euS9xcm-^$6>dq`4N^Fd5464TWY_9%1$NgvCn~>1>3p<2V6uq{c)Zgf_ zK>zC1tEI13y}MPG`@4SKSO0vUy9RsT&wH}@uw7(*dD%DqL+^jol&9yHzqfvSx!n6l z&tHe{3x2=fclP`}{#ync+R|#jSN#9+;KA|5i|^jLc<<iBckd3~Dqnp*{J-Hl+u|pA z2bWy`wrzj)uCMhq6&>~E{ru%u_7|OfFDE1aMqc*q8(H~-zwTS#u>Iv{9rNs$yxpv6 z`DxQ<fBVP%_evbo|NGWnpZ@<9{U6Wu|Ni7Z_3w`_KD_wu-o>}hb$za%{pbIl(p!6S z%;zWlm6w%C`S5@5;=6yHpZvFWw?1CYe&qjm{%_^`E|*Q)`EP&Vzx~U6f19{fl_z99 z54&DcW4!*4{<7!M>lVMgTDI!e{gU)G)xx>?>CY85UsB+3Q@?$?zrWvf?yi+P<LYmx z#s0jV9kKE9o}C%ly{C=eetGq2&DG4<*lk;{hnwHZ-5q%~Z`O75@bvA=f9&vDdM@hi zIp5b;b?p|im1W<Wd2_RjHp7EIx1`#a9dZx3_@^=N_N@z7WOW-RvMn?JVtUtb%evPR zYo=W*w#|JrJCt`?_j9SodUoqRE!(gr@n>WD-Tsd|m;IjA7(1)2%>Lr7wCSdsxZhU4 z+hKp9?#dmxKN}Xzxh>1@tKM<=X%**zUGFj;MgDbMu(QAKWhR4A$d;zgW&O>KuOsUN z>i5juB6ZM#-{i%X_b&r3z6@6EV`pX9y#997<XL_UhGhi}EPGeJjLmX&V9aRPv`12$ ztAIiGa(XPY6Z844t7pBN`KaC3A-vG!N6DK8Ii~k*&etF6er&q6Sd=Hidd=Zk-)?>7 z=(~7BdZ&Y-V%XD`Zp&34!n908;%{#-iwymK@yjZMTDdbqOo^6nszbSB)~-IhB-!#F zSGB9ehb;@=y{Hvd=l}in_+3W!HLGm-e5CBo*nM3cd|N9`PIrk~M(SZEkBq86ji!gD zRfX|yur%7MXSTO+$LGIlrO%nFBp$gsKW5k=et^4};qsH2`!WP)?J<{iaJt^KvS-V> z1Co9}*T37bDAytO&$CdotC8*h1=RVc86Mka<GYmqUc*n$1zT%aSRTkl?ek~xFF7X0 z=<D5d<<^C0@o5S=>l5c(a+`P4*p`3Q<=b+Jf0WA%OL)24mR(*YB%EUzTkW%=!F7dY z-h!LgE*!d-C|A2(+(xPL=M_btF2)<;+5J+F&Te1|-T1FMtp3f#>KS6ULv9?u`ZwQ! z%kx5M`k{FTOL}sn<ZaK(9y<Nbp`0OWqeFw1jJ)@&rUfrL&(?o4iA{d7@Y$-1jGxSs z4!5KlZz^!y$s!}4Ca=MGjG<qdIc%qR&zHu+eEHjn+2t8h)7G(0o@n)E`?~Lj2Swx_ zDmwbqaA@krFilf#Qxs=#mX*IIz{Brbe?d2T|MsK5!hZyb?$i`Y2!Fn0iT6H*9nuRJ zxxBv}Ghl7iby_XQq7lvE%oKI+2pi9VKTG)CFBpfgT;oeQr<HW_SVoG|`S}TkH{U%@ z>u5E;yjhN+n}1mw$4Bi#t^;<L3J<uSk4~}>Xt@8{&TpQx_r(Kt6Mi*TNvuD#E@M}L zt_|OscMgec29b;>7$RoQ`<ZYtL`jr6>xb1vp933Scg9~}nV(i_`tex6shM^GT#51R z=VE4yv4(8^HH~?%%5$5O{jBp}xlXGO?OxoU%)fHxd0Er*OWV@<O1;<l7cZ%H(d-bH zI(FfUPc_r)13x`FcC%+WS`~g-xKmT@E|c4nuV3^yJ69<ws|E=>D3<wb7eDt)b5oJt z<KT3geQZxAh5nk%@r2v&L=Y#tnb=I>MTyPXN{dvdKWxi7_*>_}>Qjq2CcNH#VXN+q zZT9=v?;V`ke!;q97e^6Ozdq}$jvp0HYXvs@Jkkq~TG7Q-l=@2U<==ZODc=}GZ=Uit z%v>M(WQNurUA6bB(QRJKc)2eWH%f*VioGkH{o=*N!&Q8m^2zPV@rOefDBa}|Y^~t> zQ?OCs-`}it8k6>Tzh(Z%oygReaWmp3+f<>bV3%njt$#Y@XE?{FK2#_^uGTd{@1#du zldrv(-LkbFvEHs#p^3_ZS^*n+E0|@sTYvLB72NOqXnIU<jkk=xi0?D?#+DZmthR>& z{!F|oyE|E4?0vv@JEhm3o!)w^h*_5ZRrb+ehb{~EmKz~nE@`1VS!!O-+7*^P^@&j5 z%j-oql34vhD??b6>Sc~uU1ei9vzPM=i`HV#IWi4lzd6Mh=Kr%}`?Yc7?RDHg(jG~P z#-;u=blVbsxz1@T*KXUXhs9@2y(VY;@KmPh)fs`)W}cerJ7LnSCI#L|jsreXGA~&d z$Q;seJS;tvF~Mzu{06(*6<Y$X7sRA@r`>B8e0*N_Le(BSDZh6v+nY~@oi~0sowe(3 z^KDnRc@v)9`FEJFbt|iBLT~ScKH)ifDbE*ww7tTr!?dt3N0uYjj&a7!6<=R+hU<jv z_6_~4s;`!6c`>=mLjB$$wT$?g3$kTrz6&?7mJT>8!@A?ZfhQa-T`Ua0&M4fv;+C`K z)SJd#e7(G1*e7qXVHCJ|F>if)l^h4-Wwvjp|FQNxs$!fiagu$<qBC2al8lp5I+)Dd z7lqfFY`S=-M0Q5WA)`-vd{Ni0=^ilGUd_X|!J~J@jj1)48?V0py(|6Vt2dPgYFk{B zqny62<gPz_pT+n_sgIsu<KIR%rL9$~#MUdY9np!=%Vn%t_QbXEajeaw5RS<3%Tcy- z>NB~29#}bH+0!K~Ve=aod@rr>_34v-C%y2%q+MH||N1AU$kTqY^!N(<jrR>c?@D{! z|L+D@!HR7+)14R$)Ef9pn<T=|Bp0X%OFXbM-+H)g*TW}1M>ZU(;qeS^O`D-5w$x>z z5ohw0^&*KGE!jQYHVZ=yUp9D)r2Aj!ddJ;*wxPZ0hf3K((=Ech$GG^iZuPFLYRkIv zHDG?r9NlxR4g66~+dDrjmeK8B#&Xr|MGlWo-wO^?sUNSsI%P~}&*V7&Am!=>5v7)v zC8j36W~Xhhv(4@}S$=T0-?b&NTTi-Kv3b2#-oqic**qaiS3=21H}vb&Yl?M3%vU|_ zj_7v&S25K3wI}>nO5f~&sczO>Z_A%u`8c8FK+Oi3CBkX8zr4Pmc%<T)JUe68cTP#Q zZ1r2k;V*9*Ge;zZE;QFxvx#J92&^gaI=<=f1cg;Q4mrJyczPw)bz8=a73QI$sZAax z9Mh%crHdVx91u=l8F;q0(ElPEWBQII7n-IVOjNSE+4Z?8pn#Lt&hCQ7r5@jusG@&6 zAGQa_?%eZgi{EU~h?@CKhs^b?@3F7C<7NNqRZxV(DKF22Y0tbfy=Kg_I<qiuLa(II z+?icrDPC5;DyODd1S_9Az~<z<LhRt`OFmX@!5_Vju;t!Z_HMD|(yEu0Qwz2>C9%w% z$6-*)nB4JNz*%tBr{csP{!?eVclg9!4`iQ`_SMO*S!uJp*MXGZ>%x7LBE@&jd-U|t zHb<^$RU4-|aj`@+<ZN2tc>cyAN53a`EMClKZk80~4rW*0Vw?~r@oBxvtf@cMo;J?B zbm=6!nM=l=MQuW??dx?PMNIC<kL%*SYw%%r`?o%?iC)@FC4CE(v=^S*@cyvNie#l~ zuDjB0iB`udG_G9ZILdMC&>MThxrOuGIK=#T9GqVzDdmga@bTgQaIElGa>vPA+dW(Z zGeRfa@;X<wjNyn({Hc%x<r*2S6E7xh4#@7!*r_R1^Wv8GO{1i<8r80O`mD3EcH~s0 z==d4=2wt^TpDwhuJy!eP9)X4<d7&;`-fN|6PcHFNmUX>jbSbDal4&BRrAl)9dlrLe z(<@AWXO+Ef5c!&U>5Tt{!0S$*r$>dDc`T_<7P_t^nm+B(u~Q|nt+VXDNt8b^2z?*- z)$V-KtU}Z710fu3rUyg9o!{7P`ZYbTVd|52yeFquPnS&Hk@Gv{-a-k*3x5ndnD3kT zY!hrb?J!g5p5SG@8O<UaG<+A?-6(PSA-vD&gp#rS%-GhW!jGqNd_1%7-NxFbJKi4r z&eYc+%EfxbecOr`7u&q&7$<0L-=y5q@mxB~r&jQ`#4mxrX+et}*H3?GyTE_`f0h{* zyqga-Ww0K(dg1kvvmxjI)aHD=t1R-u?hI#F$*drOKko##FBg<LVDv&ZRzhJuS7ynA z<z^4(i>~%OBR!o>Q>h{G)sAIzBkgAT?Z~`+`CijM&Wf2QTooMm&NpD5rju{7(aFqV zv&S*-7p$w>gpXa{C*QQIal@j^3VDlGExlMPIrEP1mu$w<>rHM&t&Y7IXL@VxHivh& z!=9hLn(JPDd&kbqn6jv|+saB8=bet<drfNk{w(|LdgmSPZoI+wLH$eLuZJEwkF?t! zsquyj{PZk6xLhsaiO{MO3ZEwFh)uYeS$b}E=z(8P!(M;->ihcB@@KA}Hw9nSn`OQ{ zpW)Q8)z>Olf7YIO;dR*aO*hjXGV|U$R{EGt?ajA6g^OeF-;0UgI@{;grn^qk<zfu~ z1WU3mu48_C#$dI9m!3iKJnK(7A?Gs>*e=l1arz=&6mvBG)Sljb{8oZ|;Ty6~tDk$f zJJx&F$)1&;Yr{SrTP3~LGkMy@d;F$9bOXAkp40t%Z&T*yJ*|_%nZF+A<lwu;X0z$! zO-_TRrE7OY9q|(r2w1R-M`m+=^n%*bvu9V`dArUnX6L2P##8T^&sfx8S9^PxdTU?9 z>&5m?@1i^On0p*PWR~01)*8H%6qJ84MKCxm`ikLqjtf^_Iq#MK`Y<_HP)LA{{fDyf z_iIz{rbh%UxUp$1OGv^De{u6C6^omk7oX>S;8wo%__s5GUEYzsyN?w*Pv2lU%_i;4 zya>MeKCSCl$u;-hu`Og2<-1)bdGK58^@=SySId70wrsMNdig@tWo|-G!}pTYa@9Uk zFU#`Zw4CDQJUGQe;0~+9qtK5Bt;}i_WR^IGTzK4Paj&gp+3RD?uCtfe%I#y+Zcuh) zG5_%FCfARR%S?A^2n%pGeNH;x8xWw~{pc-2==T>zz4>C#^0ss8Zm}+iea5QlpPsUL zZq2#{+rRoeQa|vD!|CqJSvdmA&)A;c$#*JA=ac2p<&;h0S-Y(vw)lPSyH=&WsnR$3 zvi9YyW<A#Yy7hMWH2ItF7?~gU{_dD2V63Woh-1Fj;fFso79HI<^{&9m;?KE)MUOrm zKjGnQ=JjFHGU0cNT4Zd$h-ju9s6CWn9BF%Oe&NB*U;TEx^t>aH#(zdMjM*ev`Dp37 zYUf8TPCKVX@J#=F<MW}rM(-@y=JAACO07QA8Rh${_q}?|O%8SwN1hgosi*!dcIxfA zrIDD(a%Yc?^UhgfZ0_%+uU`*X^0i-hj?*VG2KTuiKCqgW@ZT5I=r7XeJp7s~Y{e&o zt`+8vE3WFTk>Wq|!J)!*)k4+#n|*G7FclEka6|I){^PM;!Wx@Dy{lC<3A$i>aOqta z0pY^Xysw(mN_=ly6wfV{)L*bB@ZyjCxmhV|C(nG<T*WwrL2F-2b2NL`jj(TNg=>EZ zKX^X>iJOMxS0083!T}e*6*hNGeO4EA@aRgN#nKCmu0+hd>6-P-gClw4)~ftAMeQxl zS_&UGCb2dsA2<E<fa_G(i*xGyb&dv&A9QxgpEp$h7Q3`st)%EhTzP}_wH}E>XOEN% z|JZZ=p5PsZ^qlEmZAG8EBx#rhPpMgz<*;H~BWuc;r_bt>gb&F%x*a$oUOu1O^j^^p zNv}15K~q8sMONS6tDZkouJ9(O(=}$tcbA>~DmlK0HTZ;fWxR;o#olij9lUpnU=8O7 zgBC~42}>LGSJZJIoqge&*;x*brW2lP8D}*vwESx*AhUu+L2OP%iv0I!Ex&fnmkG}m zjoW|ff8^8pb)W3R=j$u~fBx(F{0p5$Td(|?-+cFRbH%^s{~q3Zr}aNwaz3~51zy_= z+jp!hV>)%~-Yr#)I(4bVy{13gI#Sl!$}M{S#l^b1lzIKu*PaFih7EjQ^71!*J0?3T zdd13l6IMMfjy?VA=hlQj88iKS-(UNZAnj~ka_7lQw&Z|-ZIS7>FC70C)x5~Xe+&18 zAjid3-7}u^Z#NLTVRupM)$Uc-c3!>bbX)Z8{<bfB+%|u;&+4y_eVlc&)6Di|=C>!y ze@<S|rRLmOl;zB=>b}%e!hf2Vc5vRODR=H`t9EM1-)o(`>dK3@o0C=>F>0&c^vb(A zZCZ({-BOkKlNYB=Y7uR#n=+wC^k9snXXK`Xt&=xz@<_Xwvew{S`nDx&bt=4k9(A=n z(wTEc_3_SSs->yCxerzJPa1f6d<$Z-5%c>MwDaAUC+l^-Oqs}|W~Zv!+FFzS@QK04 znWmmP+|f%_dprFrPbN=Noifu!&F-n%WLKqiUS3+0YZje(ViX##F(GA|t0}ko+?54W zCfBG%>!@=2D(yd$Vxro%cFU42GEej0Ju&&Hsqd+4WcgHOb*s(RGfPZES*A|eqh_~M zb)%~DB607u$*Zz8J#&L2j~(*NE0UZ#_02M!Z;L$hGZ*U^bLz!hTe>9r<c&v0m)1?X zb>_~=LZfwi)~Hy1oM|1Ymz(76J@2<r+SW5mtUhY$?$i@fj(3_g_lM5B9CbTY)w?St zSyNT+x0=0K<XKVlb^7F<<;T8GpEzatmhA;a^L|X3ykz+k9ue<r-pQ`1s_$KYJUQf9 z6O^c<JX8OQUGd~!MqhedC;xfo_3d=i(mhZ1M^0wgte~Z<x#7x_1DhtXc>9XYnP)Pi z^-0krj`<2RH#}K#XwqbEZ$Bd)+nXD%EIIsXGQYR4la9UQ#w$yX6ipWP_7BprjNJHS z$<dc5yCr+pZb@;|e016~D<tN8s*3rlv$`{$tf-pp?OE2d>-RD>+hx8fD?KMH+`nc? zipNnUZB<R9yHDoXS_aje@}3m3d{a-#$&Ql|2AM{^c3!@VrmWezCB@72xVG*}qbJw7 z)x(!1Zkdzfz4MBg?=GJmTF?CVO-W19^qdi7tE(>=e9=nG@07^=OOuSB_Dq|)MDwVx z<;hu@TVkR<EnAd0ZNd>v+g?@GVy}InK|#xZOqqUX<&C1JDwS=!yfjbF6Xd`A$a8+z z`s$BQ&S#|DO7dJ_6jU@X<-!)xu(+a(q|NmcRW5oI_;H?G)YTi}bt$7{cIn3_fvM9s zPEiSR71EvKBlYfv-kgwC8zxSg<UO_V-29YT+YCNU^1FQM{Op!liGQa}nxb`fw$P+t z(Z@v}RYIqR>&#iR>R6i2j4fKdAB!f1FO{#Is1mj_EzKj%S9z7>r0C15rcZdIWtXb5 z_t;*S%ah`br`^;!xgpbc$`qN|ANJ`_Qi+~4Q^a$c==@2O(wtdM^()KX-YPES&VT*w znas^s7gDlr+=(=u`0d=HeIF{NWdlF?uX!uRR{S$@ajo`-ufK0)EQoGfF5KD3^)ff` z-bA}&mRGm;{MOC6di=-blV#^GY~OMD(EWS2mVGd=zvVsqc**pur*EBq#*)(Yu=~ui zSCUtbEQosR78YskI<F(TOHPD&?(s7BBW1T6PHtR3cTNWTt!dv*@qF>P*k{f3$-;3( z<(pkmlJhoy(KJ}Ad^O=ft-n0q#0lqEa~(716|>&|mc4uTM6Gb;Et@wu&2D<J;ex1+ z&;os);A0k!TX!g=YF#}Pk#_#*3*8@QCFit6s5su;@bq22p@!d<{nt3VHV4?{%r)A6 zHZ0x9$lqf{?&9|+8N{?NZP*sae4d#>qMtL`w%N7L$>!)6=Kt%z?!EOd@6X#4zgDQv z^W`b=D|viAG0JVSOJYRVuKi_ZjG76h{uLY<KdKcr-MDt`pRMx6+_$Ta8(Zw!c6874 zFHJiRS%*FUd#r~0^@45td7n+_OXPNG%2vF(Ng_1pSD>U>;Jb}C-kUbOo9hsB<7<Y| zrVPuT8=r29xo+q#XUesF>ME$^|Kg0M&-?A>*8`F(+CNXZZm{RxvFOl$fA2Rs)NWX9 z*iw@F_Ha9YMs35c{onp)^c>BIcAoK7koD?<ujh+}7e2WqwbQpT!v4{#2P-}vEm6$; z*IN4V`^Kw(J6_H^c<Yvb+JVRSIF9F}dt7IFcJ_;9V}|?$_C0N?8FdzlJ0wi9L*^U| z*v%L-&qydiF)ZpwN^Y;Pdu-(n#@7W;nyf<Bb6nZ5tSmdt+(~h&uYx^G==DE}ywZtZ z105Dm`OoXj-NZOcZ{F`0>m_Ypw3kM_o_$cZ_Zi>o91f>ln|pp0PVE)m|NdRLr|RnW z4L;lc8NB{*`^8o3dpGXHD9_D3{6bOW$Ip`MrH#(3tkiELS=fAGi~O)WY;`98E?cw6 zFD<Vl*jnc$$#I%&TAaDtee2=9i|;1;R_9(y>3hGm_jUJO*?@-s@Bd%FFZb{M|LLZS z-@a{9TbgOTTYZMXnW~!Nk7BcK&Rse4@0zr4X<5%S7E5NlxNG+?{`Zo%?-+yLe7x}S zzVWRb!>$FD%qhE?jwxL^a<c8ROwjy|CS0o*3B6iq6tn(I%=RGPv%#{BM;snTtiSVG zE<iQ#)`=A-pE|OH{oixWGv%+#qHU|zdRsLfe_iOZKHS(i`TE2a8~EmTebqX5bpGs` z6Q*rFi&FZmzRB`^IrnwNmsozq^~$xEV;H+LjNdUbeb~BEIQZH><|RAjb7B{p_batt z+qQ+9%U%5p<A;ROWS4o{KAtPs{cn%W|BPt)$lL$#u`=5mY~S!w_uhwR%iai82|Irg zf0zHpxjTBrO1p?>i{C_*EGW^oR^?~bIPsscA)!v-yV6w4PafZMetro2o#ttgR<il% z?InGFD~qpO+j%)#cZ=o2NXx&AZe1;Z!m-_Ln&Vvao9~oLIGZG=9w^$yoXytmx$s-g z6b&z@Lig2&?;kt)eS4(l{IG+X{u5c=E^mC8nsD1t-MrO0<DEyIS@TE!t=lHH*>E%K z&)Az~#Xs%2)sj1Q4N=~*AOHIPIRE5d>FjM>)ydN3Y8m3<%x+t^?(c0hY_cqQ$@XmT z>$)$Ri^S7Ac5Z8!EcCH)#lL{&eRdyihy_^YgsWfQE^5HHyX<mK`8%oWYj;0;dh=`O z>rKXURohDQZl9ff`k3qFjmJLxEM0uJuDZ1N*p0*=d+yro-P?Fc!%jQ9w|js5<;UjX zZ<X$z`gA?qJmBAl7Zv`M63wbQGOez5|Cg3t-kCe+^SQ|7GFNWD{=E8FWMPkhWv_e3 z?Od*!H3n^-juQ=J6Q&z?-+%kPQjR;I^^QyP@mamk_*Sh;TN{7b?t!LqaaPD5&iC29 z|6OaJ%j}zV?^qhImHqL5W=Fi=<Q4O#xUbsK@_Zr7jz&kmuYyHC&0bzxGI5iuU;{@) z^l$r&X<xH$?QTn6U>>%cF)^*`VG{3wnBGVHH@Rk<{B1Ay_D_H`i*xno{SN+rwe7b) z+Q021`<Ci!O<`A?b-A|e{C@c3$9r*Ui&y`?AO754bkG0V{~r>bSLD~1{{L-W{qM5x z=EAazYj}H8=l$POyrtad`~LUxZ{ECr|5oO~Pk;C0tAF30{wcC@d)U3TQ_HiT-i^Y_ z{H3%fTKjWt>A&Bn{)hkj`F^+knsfF4#s1dE9IfgC&0NiR`hT&hy!HRTFDkxUzb$zB z|F_wX|5^W^yT1AVM(*vqzZ>fJ-1`6X*w6apAHO>!`L|wt^74B<A3uNJg#Yj5<YeBx zk!_fB!}iwwo6&Fo>pVXE*7y4KyeOWv&+h;2toburzN)CTP-<h=!H#tsS;S7IKXCnc ziLYechAnfKJ>Pk6mPyw8()+KB^3Sk&2d-LQzklKH*c6Z1`@a2Ulijpu>+bgZCy%A^ z_kH*-z|Zx@dFNNH&HG=kvYqp;>?^ZDW_zhb_*s6Qa+#cU3)>|x&v9Cm{(Nqzmd<zX z$(s(9+o-R4UiHdx!^FkSH_D`}w6+{8?fw+!q+jXlJY9I6rQs2i(r1N9d1}*Uebs;U z<=~~udwoKmB_4Qmi1Xa8w!GQb!!Nx&xarBsxku-OFSGD%ti19;qDg?`+DaLxUG?2} z7nD0)-BNx2Z$?!)vv~7MPS>P8KUOS@EmW7ftG1{=S0i-e-F117Uwi2;)pQA5qggZM zmdLNZRhqdBH!9N7r6T@>@>Sev7isj(kvk$K+&{JLN>q}yqMgh?i#YFqD3;|0zEQEe zMULmVPDq*9%|3C#zHUCdFnbw~H?AD3KPC05@5w4JuPFI?_ikJMt-VuJr!sxoHRsva zH(VbJQ>Ob!U$vUOYRk9F$7TlU<X)M5>stIv?}~eheY=+R2zu?R>(%G~ax!;~`<?{{ zI;UKkz4EPq_K8gPy^9mABdl_cze>FxEW7CS>=*6FSPs9ac(h@~iL=d`x3=Y++w%8O z?{b^oNA5ncatepM_sG3_eRP9Pnwj{~JInXPO>NmAdCBJO?BC38pJqJ|n)d&$d$H4z zAXT$Ca~&HsrYEwpoRaEiM1q96=kS>(+CC^;wIkZ`_OgnaWy;b#m4?;l7G7ZB`sQ{0 zUE<u@C+wwGZ?+^<E?@t|MexN$Nlo6Xk6HyK!n#yK|CCxp=qM?s))+MR9&_(=w|03Z zb>hn;`CHO+?fxlw#m(zmzH-S65$V0Bvgf{YU`+WGyvCJF()%5k_KA|KULICmI%_7g zg;-CG*gNgL*@TSOh06j|Ekpa)f6V&mee8yNtmM}<ttQ2*PrVD9%eKsBMeOZePv^Ap zn<-5;E{@+^tMqxV<T+Q5^GSMfg+ct!Q<UczEL9R%l6*@-MM#hHUx9L9Pv-pcq^;al z>$>$PE{zZ0$DCi*>nSVxXqKT|U(Ky){<03elfEx}KlOk5)Blw}|IPoqSN=OcAAk72 z`T2ML7k{i4(7E`(ctdeX&%gP5|2|IUS*i5@{J)Q<{(si_H(%3EUh<52LALXP$x{55 z2bl97KEM7{m`mL0lDfz~?Ki@^epE02toyU&Nrm`#&XdcGYMpl5|Je|K_S@YPY-ykF zw%ncedbeXj{H}O4mlvO_A`19Ueb{iK?30boWgEdw6I*Qr6*Zn#DDBg$KRo?`!Gy*# z73Rt%v46I<{L1@M!T!cFE$+C^gNoF?=e<kzD?ZG+&{rmOHTSyg-9Rf3Aw9<k!PRER z7xZp<(HFPHardt^Z~jmHYd`&O{hr<X_y0b8?$p2k$KL)osHoxm_W$3%i}&8?9sU1S z_FcozdWUcS?`i!npZTr+%pU(zc7@py!uBrHbT@ym%#*KIzx?cn_q+t{xW_Xac%9`N zXG)fe-wEP#Gck3lo%TUjVxi*SdM*pOyc-uUK3kbRV+m{6*64LTruGlF9{rOj{NAX~ zW@kzBiTpH~{bhTry|^Fw>z7D>^|&ms^%3v?+MKG%W)im+{eHHb;rI5NfxQ!t1y8xA z_08f6bHlQa3<`^Q<F4l2@cAH=TQ(>4OZbk$Pm}iQD&F?2ik>oO=AwIIXIPzX*RHBo zeHZcY-L#eOrn<Zf&EPu5#gQyHi))u=p2W4}KI1eo^B#stGsBp;KNaqhZ<A-abDjBf z;QS8fK<%6VL~g$G`6m*oeR}?(?4N1nZyf#eH4D!ziC$M_5UCb>N_}R(%@l@w{RI{5 z2UhHu>myb8$Be;h&F<oR_wu%%cfNe=%a4_pW=!MoS$u5L*Bf&cGBR=#gOqP{W}Wn9 zEtNNre&>8eTEy?5Q=-M0sRs-S-|zZ%CU1d-%<Gz2#j%du78OBVM;|Od^P9(fLQJe@ zyJyl$#^ZuVyRGwuUKi>;_f_&WdbH;x=he=qfquM~5?7pVb}$QR-|2c~oqzY)iMgBf zH#H>OX{)q<m+$iG>$Qm|bnb5ZXYjF3ZBP8v!lZdTr;9(@yQ_WlSN;5N^A9%un@oE@ z*Gg+E@YJu<)?2^Zo&UYrmmTN1Z`?m%x?^|to11^64LSe2RBvyzH^0yQsaae&MEup8 z>kT<k8trzQa)ej|FPXld5bI%7d$xjCIPBtbm%UAlS6jRa7x~rPP*8oFx1@T*i(_9* z#IHS@R1?wQFA<V&YgRb_;m`T6C8u1B77zY3v-W3jCwsT}QqJVFu3~Jn_vO6m->$su zxAAYG>|WoXkJpYYsY{Fh#HKLgdV1>HBUR5$!uC{qPMQC6yM3|pE0^D;N{@Qa-q|J_ zK8<~$q`Q@FZ;pd&<E|fJ(oOSn?l1HXcscz<lwiQlxLYAo{_p28|66xy!Qvfj?K|?c zcWkSk8oun^Ou6~&7q88q8k17uI?I0dnsZxw-hH#pW<M@)u<8~A%Z$xDP0Gs`EZ)v= zWyyl<9`n{eCYS!qU-)BXKF<lcn;~q^XCAy!?9_L3f6j)d(dqRaJFh+buk|(bcs<Md zb=pVlZB=;oo+$Nmn8bYjXZ*pPuiyBGMlpYJ7i6y3b3VVH@ne7<SJ2f-Z*rIIw`KG2 zcqy$EUJ}a|r}b<5c3HDbz5RNzF#_KFN4IwVaY_r}JSnz->CK7>2mX3YcUheBrm;X~ zgZjy}6IcAw;mmzw{BP}s>{N5NR;AFw>2Ey_*taaZ#C~;-N6vm1(_+ut+)OIBH5mdp z1eJplx>}ztKDD0XFz1Wjw;s+KI)7)V)+w#y5Z8G(F>limzC+!!jxG?&bzNJNb-KLp z=7fu$RTIQ_+C+s*Mr_(E;u*K$;)bwIS4+I>y$*Y=P~HE>)M$U?T#?LKcRiHPod|g6 zGRa)>>9;8bS9KZ|-Ka~7@o=@=k!0txBPV3av$vL7%bZ)@`(NID!%*eIU9-XorLE1z zF%GIHkGd!9$@Q4$>ofgJ^LbIm0@W10(6vepD_XR_oIl%9r%<)>XUXJ~vEl~(Wk>Iw ziz}&-`0KUc!>1dSKKc)h+CL|(bGK<=O=K{>d4P?pw06Vh$;-Ih#m!Hg3E*bi*{H)Z zMf;}OJzJs6H#hyh?f+W;6vL(8&ZQ2=Umy2boDg4aFB10ovX#j4qQv6|m~*Wrr`cRG z+p*|<d&!AyKmJ#5mPly-_%p3x>F4PsH>y4fURdQ9eO7CAA|vamPx@Rp>i7~`4;*yg zq48qYp%R9O#hl+J-`f;3lVh=03D=8yuH3@fRqw7uw;x@WYvSiW`}*8xH`Amfy+u1$ zOBb4Y+NjAnMO`c@ebIK+aQbS2qY6tiCa#gXKdH`Oy2|r?k7q9V8GQ0a(39I1&U;)} zEGrUPx@djil1|f&J{!ee7N=b_+t1SZWp{&!=Ak3XwYKWY^)fqtT~PYwyGDxl=Kr(Z z&kiSNA3b^@=e25Y@TxGi<c_oen`3&1U0u|lebX{zcTp`}xn%YEMV;Q}AzK+Y)vs2u z5xcmS?+Zr)tG&yWoln`{7chUHnm%*y_m?*oJ#NjNZS^@=u=VVQ><1^E4Sh?_95!93 z&+ySPrzq9X=cHnArSikzU&nX;UdB|h(&N3a<Gby~`rm`g-kB%exW9%ot>So}P0z<8 zO5U5&E!k$bsYgz<zIE*C`JdSnSDe|{#4`2ZW~Y$0(yje`_c+g_8u(1{OWgh_=1Psy z5w<u6!AB>L#PbNAI;q*uQ7AQUDo5>3_O|%<I?7j`7G8WhL2+|I#;r&L^UW1KF`64q zCRJ;#wUk<@Y+5C?`{AsdE+3u13GDgx&pQ5pUaH5kq?uLZV&qh(lXIVcEPErf<g3`+ zEqm@&y}My}?YW5h`K=RfPQ3qdtB$#0(r)q4vqyGpeqp7)Z`!^aH)r0<*lhhwd239? z<;Hjcz1NxI6;}`K?X2PF*{~>@^<$cly4!}27YYS`lveHME?l8*_G+g5?4z%bmR}Ek zle<Li^upGeId-aV49r}QtV$@#ospXSDd*4Ri5m{4cD-xw-Z(?vUe0S}(BUnLb*j-) zshPiCeBy8QZai%1V!)Fu;!z}B#BI5S=jpwTKMws2nEOxnRlv<ymkz<n(TluW1x>|y zy^B`5{F>9>Ycq94Z-ZFmhlxk+b|3$j@cg(*K+ueMGn<7*(#gH7jyG)mm=(`W>-v(P zry28lrEQ|1MBK4DFE)=qACs)LCT^SW5PAEmnP2{_-j(}yd_3WC@kYy6*MrA{DmRxd zx4-uLQTq8$e-tDaB)!)34^F&RZF_oKhoH;sg1zge@)Vrh#+08aP-p0Ea78$CiW7Td zkW=*H`Jg3W^$+@To4=U8I^>a2BV#{z!z|B<5BXls5xxD2KcFp?=kD*0`j-dA-l;td z)qmvsL*b%hN6F3hiY0*|n*$0`<}Y(TJL}}ODUyqi-I!sq>XOqf<$@)lZ(ll}p69b# zdS=GfU7wtG&Q)Ko>L-~c9d5pS?dG0a`jNZic75F65#Ox%TT_;E@y1oJH3g5Bl;7n! zC7;Z;<j=*VHJA4*eqYtC&&9s_bpB^qMs+dw*qW8Amc)kdD}ENXyncSo=RC*ulWVfn z7EgM*YNprxuB-c4>U~o-1U@Zvi&eOEsW|V9=BWd752UUN6DWKvB6800%*0PThpb** z6=YIzveKS8QOh{&;Iz+O2XY-FpPoD<5?HPqmVIdFN72&~skZgbht#eW#ypskHfO!6 z>q(P}xVD>iyk`IE41dSIZMofWUUO$5`_y&~HDx!yquol<zY?`~-u{-j@%jDT(>K%@ zO8?j>shKNoKWFOmJEx`x6x<E`rzXoMJY%AXD&MEFZ>gc7{%3C7oZoJ;*{m^TyMLn3 zdDq*w=ZBi?yP;cUxte<g%VsY39>3`)X4ZeVxpwCBTKP)lik|-YAD_G4*pZ`LzVbxS z`SV9uHR5^r`_H*$>cse+>|Sud`qWO&mluTGuc{;&YnZ27J>6KO_426Zdu|0ApLelS zK3PO2=4@DVcyimzGu@|_>mI62{p_u-w2rl7zM!gu&LSIGg(XvbWEE`ULcb~aMIL3Z z+}N<_j8IAIq&XUIWUf5j5xDH@)-^|W{*9b@M||}kj;y#v?}Q`Y`M(i7@p5~|Q~9M! zmv8)Qd@yOsy1#a2$GuvtR4=C<GBw^^`)tE$iNm3X^n}GE3asbfWx3KjCuHj0zpPLH zzB?fED)TDWha$1bqKVI6G<t6TaHu`A#_mpAShDruoaTs+FCJJ6PRms_=M*`TaFhM? z_IJ9o<yWd%trDD_e0&RQ1H;cI*)wJNn--th{jJ3`VflR7g>p;9SQXn|mv}@ddY)V9 zaP-s}_WOr6edfL+uBmrDxjja#;YIlxMsML&HZx~En7!+I?4`WZTlU2*;FIUpi&c2g zP-u4W?~6YdthyNkEd68uF5GZ`*B`V0Z;K1-0{iVNJ}tN=WHR3}Im-Fw?mIiKtvL7f z$Zh*hJLhL6i;qngTqu>C_;aqhlcH!@n~dV5Kiik=xOixlhE0FbYV}^(vyQW#rZ5{h zv%H-AYM$$2kDW|X<$tuLR_vL<9&tb5{p^KGucF&-UY)wS`jGplqIojcEIzGacksM# z^6t@2w}-PMZcVIu$=_`u8{Ij(r|4J9rH^V|Ihl86)JEK^kea`$(aONqPrP~0S-ss> zZvI&ZJ2pubaZEnCtKr5M=e<j`OR^)CS^m|@WUOmm{`3X^ieh%BH1$g*6IZ<Z`7=kO zb)k%P#4fSmS$`Y&<js5!KQFD|+55&sqT<~S`vmu;H3oO|q$2L!NMyF;{IYLbYR!qu zZ$#PLfBxIp^l)l)qGQdpC<~PxGd}g7zwFbX;dzYh{JqrgVygGPoGMu!u4JXzJ8ALP z!%8{NEp7M}cdyO35L_0W$P%(=?Ucp~FF$>sqH*x**&Ds-odSBV_43b|9RB3K&CW1& znyCF&j%nWh=PfGvxAYj!te4*~lRvXI?U0>+y*$si-l)F~vYSh1rpmRh{&;&^zux1@ z`n7SFKB)J(Eje)cam78)x7{4-8n<UnnB-!r{$gHEnc}pB%+imkjjLCO=7opXyRa6< z{@v(Mu9>rL-lsKl<PH_=cw$`F`?Klr!=AP0{)e$%U-@~ze_qwpjgRe?zg_xfn*Q}4 zU2nhXAO96(rF;9&t~v8$X56cu6n`$=)h74O;hvKjMXS}nRHVI8RJ(KIDvy0BBl}jV z<$9ryR-6yLI8`*g^q5}qMB9_9JLko>)c>4aqICLZ+@*UTroa25E0Z#RpWz<aOCO4t z%!}R8c6Ih2p`x`W`uUajZtc}S5q<jc(qM_#o0`7|J4VED)TezvFLh!**VWS>mWVYQ z@VuITbLB2G{=BqHlNL4psg&yfEm7q^`IO(Ige{gPQm+yvPx-`MlAG7=(y(Sr)6}pJ zU!oW%-V%Ot->|aYHT#;;t2vLtA62XF+n@U}mgz)%r%ig*-#>yERw~J;PmaCxHK9>q z>ay>_9ADSuRLry9FLYV8D|6P7r5rE+%$w)z!mV^q?U9~u*!kJBC+aq*OYy8b|Mki; zak=wrlC@SO?a?u9-grJe*wE$s`2}$+V)yf0b#nM(w3o^A#k7Tv9dYSb<RU!ky%<Cd z_xpT~@66TO@pj_F-EVe%tI+u5aDSuhbH1`#Fa3MrKi9S@xO@os;lcRRW^wM}FT3ZN zcFDhT-^FM8QK(k*r6lX4lz>@N^K&+<&2$#L#N3}N$ltZl`;yFRU;D1BJpm$TQ+_Dy zZGEZE5VW&(YS?S;Ymt|mi)LgRCOe$-`kVU2{A=9?o4JK)d$&L7P=0haYs<x&>hNN> zOB&w0*43=%@(X-kuRLkxx|;e=2GWPle{#<0(3vJ1ci1{ME~EF-!=R?jiu#`0XKRjp zJ9Lt3&+nJBwwziq&%|GmapJF-XC*pQRvg$}aqNSV&6I`(A3n<zEfKz)rC)T8D|<c5 z`dJo}T1_otO)E2h9r-+m#bEP|ntR5{BAaHFCHTDDZf1NaiYq*P_hgnWCpP*l+W6f1 zjLLnZ<=X}ICMCbx6znVFYn^y@QvUqS_gsB%3z%enuSwMDIJieeeve7-^rQ}-_irt4 zzWSE#Xruq_$W+&@pLVWmiJn&_^FFWAeYZ$h;PkRp-b{;5Ow@bzNb6<D^yR@3+$Urd zGKyC@TWFST(hsy-%oacG!Ox(%Io|f4UVE4I3aaYAlbY=>u`zYa54MkSw;tB|KmL)Z zpnvnD@Y@p3NxC;52Bk!AxjlX3)S0Zp_4{5}3SN9R|MP?*y~|y){I<T6ep)VfPM4da zP$1}g?wGO=&pnNOOlr@3Eu5$9Rm(S>U!~QQ&Ucqxc>VN{e#e099m=^2emC>`yyH7F zVX2CDwR4!6=CtLq1>bx<@2HCfs?It7_vxu6PoMu*vyPjWqxI0^V~Y3rT2GeXMJ&eA zPcq^p_;!6&zPS7V!{1K%8Hd-hU;dov+NoPvcOyAU<hYaJO8pChUw!0ei;Ft!yb{y) zbMC`Q71Q5{_J7?yBRnSa&CI)x%NJy`t~1wsw*J6n*M9~_C8Ks*TeI@B@P{kC@8f&K zcw$e&?9b8VEqgepZTs(H*K=f|e|^V?jUPYEYh9yhuw<?(%j3UVBAaK<`K*7%`6J7} zPq}`x|MxBl{NMBc+*{}WLY1G^a4kzoPYTrcJ?!(ca^@z5Td#fWCfwY^qiHK<xy5#$ zv+4R7T-CL9imf*#E<4-TH3r>ul(%~t^YiqXt($&s(<%KU8k0G-vZQ^M_UA*)mK`2q zTn}etYftb<s9PGC`?zv?;<By|edTN+!@1(_j+zr(!;)th?EG+T8p|ZtN9wbBbmD9N zCnag_<Ivmicc$`>qiwPZfqK@j7z#J-S<t*;d#l9R;*XN^+GA&2RWVw%&*0wVxwA#m z7&o4_S+yl7(sln2&0KB0Z6bPN#m8Lrf4LR;SO>j1$uARWwEJ=7H1Fh!&VSDmD<`_m zyL|e5uxD}P{7If(<>qImg<7?mpPD^SVsha;%WC0;9w84GzdNzJqAMioE>Gx>G!4=I z`z5ndKL<BFkG!3GORU?>$mQPouS^piPMj2M%W;Z4UUK~3tB4Kak4rSHUrtilHL2Kh za{Tgo?>$Pdey(qi3TT{RTt4aKqo>RK^n5ctznFVJdJ^~QMNma(+4MP;k$k=@1XdI) zRzIxqV!PPA>xU+v(7k=Z*QWaWFH08lUGk){X0zp|E|xE%*CeLDJoEck^0O{2O(nm) zrAu^-|J3HCADS+mu_NT9?91ZHhpnfl+?lACJZbj+#j1OkeE2<GWxcV3mTR2*t-5z7 z{F4+c9p@Le|KP}f_4s0>^~VHV$<<$PIY0Ma)^B4o{maviZ$G}4nVjRhIr-lWz7LI0 z4R#(lv@=Ln!P+t~;bhx~ST~u7b*JaHeK)lVxbeX2l6S)b%gZwy4S((u-m%z=c`8>W z*TvQRxqGVDZ@MBF+kP^QWov0vr^n7$hc${*b*~oa$s{Ky%g&BS-;-Qyyj^A6?sGS~ zf{L!4u(*~r_wUT_8^R^OxSd(k_VRG~yql%Ahwpb-n$I)%<E!_5Y1=-{y?UB&bgw;r z^xW1rxGrg~(&GcI$5Z~^(d)js_`Qfk$h1HQ{#mPdzg+X~xE%bTdYA8SCB-WLnez@U z`o6CzWs3NI_IZUI-?Zdav)|e}TX{uo|D3k?$nC0kDN|yC)u(k%%6^@aw~OVPfaSLW z7oNLE=9_+Wwf$D1X6-p|NBEh5sz-;d;^wRsX}6x!RG@$VPfFQwpRz|&L~M9}tTx>` zZT_OqM`g0V9=+kp(5mwF(cV*97Z&{4w`tp<B~zBpj?UWd?Q1;i^n+RU$6v6{w$y4k zzj*PA>9%K<EGt+ObvM&`m9AHN>W}tW@4T;T-#FlsY~nQKhQjHao?1G4r<>{i*p~2Q zL6z`YmcpYBvMNU++!#M;vz`)ue2Z=Fv!c4MT)(7mvrS}cvXI%y@#vY?Iem@iH&g6q zPKdWSp)Gc}bx{uU?iG*ii`#;1pU%@d{Jhv>&y;!76}}i%=|;YLdT;I&rb9iO3LG7$ zGaWEK#%*}dqW!?@gB9-#Og^3ay5dpndEtexZ~bqJN{NeElE0{jbHdjRuRFA^a=AtA zYSf(nXEjql+p@d|g0>Qm`1s>rZ<~L6L$2ksxi1;+HB4^xwVaxHXy%5-<I{igw=nUX zS!V2AD)nKJP;_>Q)!Ea2uU{Fxng2uUwRqYL&QrPpJAL_gZpgRVC+e{J|FNd+qC47> z?JuzHkn}SWc>Mb4Q(L8swxo9(HGRJ;yDwwir7pVe=?lS`UoI)$>@(^;>2=6hR)GD5 zz@q5lpB)Vm7oG^OzWQ~+y5s{dHh5+kzP!M((r3Yhhnh8ut(1gba=7$9yz0>t`yg4Z zU^lY{`z?<+<)%8v1FKfX*`99JbV(AmOLk<KqW3V|RJ^OQ|3paAQ{DN?O_r!KT=?aY zrg0?9wf)@X<ozt4R_02ao={yAblZOKMYDTReGlz^&DQ?=Hv8iJUE5M8MSm@8`CQ^< zZ|-wkV&{RculAlwzjX3Qv%Tke>EN5WF`MgDUkT6bIn&$Yy1&z9!lNqHhpnL#<T<w8 zU43O+^TUkS#+5uD=l7nq*PdwQ_Fg52Z}pOL>D9s9cdQfGq;E)y?UDcfYSVYE2d50| zug+ZYkbA~ouJ+7Z|3Y3YZ)kci%Vs*eLCX1MTaIQ+W^rL`_3X7v(@(BWI8=JLY`4qH zQo}D<C)!_sk`8Bn_2vDWouW1SZp_zuT*DQ;+CAdov(wz$o^Ty3mS8(MZ+fD{lJCEA zCD}Y>Y|;}J@j2B$GG5FubEm~T^;3^l8LIB%(mGn9VOkop^>diM*go!<=$w~<mAxAs zZgS-6b>FpOS?ahT^4}aUn^jM0N@lgXJTqiH`c-q~q=rwDmpMdL)-2I#XqmL+)tZEK z!J}n*s%CNRXI)J8PC46e@!#(=`;v^tNmu1(@9S4rYS&u+c++x&KQedC<~UvYA1f_Y zzU#^N$yXQ8&5Ni#{`ErYjm6?IYo2{k<WRB`>kOL}*I7MN|MV+Wx1)0Hkz1D?|FPlQ zdXAN!CeIJP#aqFrdqei^-+(slmezj(_6#2<uX0rWGBbK!+esDCErLO}g39fUw<H|; zviM#5n#e6z9;{v&yKK{{&!O|yt&6gC6rE_P9o#)P-rhT$N7mK)=qJtDvnN_fzg~2$ zD%5O4Wbf38uj^wU9_<X;aqim9NB*_#+B5baU;i-R-g51^bIxpES`rce>e|zLN{%k8 zI3kl?troC+xM*JV%GsfNy<YDUw-xHxz5P*BhMTO~+Qris9H}u;cl|nD=jr40;!j7a zj-S}vwqqmPfqgkgA7u+45B56~z+$w*OkT8nrcrW~_%3C+O_Q!_N7^o5GfydJVt1`# zQP{(2=T(ygqt7cRMxK{s+ICj5==W-&4QI}F$THQfS!e&cc1>=iaqNzwbw~3Um69*L zdS#Y7`+(E;_@susJeTZ_mHIJJH4~@rwmX{1^i#>;a)s8To&23oJN;wtM!(o}y@1!A z`E<Yj>ZQg1R2YH|1)o~IJ%FvAry<6_%*^Gf<rZ%q-?MDy(?09R>(2Q*|L)V`Q$ck` z@01QM4_#L+!r_w2KE2D~ioPw+)Q5ThG_FLH^K{>komJ+Qui(CmSuxV)d*HEKDpnPX zPH;&5)3SNwc}Q78&^Ec^^^S-V?dV+>UxaP@^!mqn?mOq7xqq-bTvz6G{<QV>AC})Y z2RlT(t1IJT(0|Z%`{vT@#LiRi3;#Q*yy6xv)PA^h@0Qbd(naHg`L}YbN<?d^9E{s^ zBS`;6+`1cHFDp-m@2_8-q|M5%|2Qq7OOEyIea?B`-n88G3ut(@Y|dN<h5Ehf8Z|e5 z2Aq@Rk}nI6(t0k!%GbJD=7XA_(SNt|ArW)qzlUTUs#$K7aJ>HDy#LbL*X<wgum9)% zN_6c}zL**OJgif`{_iOI^u%ss)Q|nwFSjczuC1RIpKhrkp?pJpuTAgo7mdN~%PlsX zsMyc;C^h-7eDv}Yi?7dr6~eB@IM1=$t87ot<Nv|dwZ9I3ne<oht<Bz;UOmq1MWVY> z{-3Wtm?r3|SLpKJC+k|b&1!pB`H2ekf1^&m3b>nY6Y@QJ(x%h)tIaOHzm)Rk()rcC zCBG-By!q39W13RJ^dh&nCO@?*oBS>*zn^l8ZR&y7hl}4$Tx#SkvP$yPq{EFL>sHT> z>+WJ{+cLe%f2+mWX%iE(4utSN|NWA0&*YZl0$aBPzYqF7_j|@|m*n#$d3O%HshiXK zJE6?;nC#jcQ}!p>YF{&+{;%_Q&gYLjVe^X$=X+#2pVG_!nQroZ4ZFM8V+MoE3o<Y2 zds!YnTDnL>rS*$&;dJBp`FW1-8f^9R-g^JoxFE-9U%BJqF2jjM5@*G0bT_^>Y!U6T zh%nhuSLygw|C0WJ6<NQH)o<9(f49MNTb%iXy4OF>KQjuNdHS-#^F1fb57teuUjDxL z#fHk*^CFstr$cLheyeA5xvcwtdH=ile9`7gCv@DSkBCmZc$=H!b^M~N1CN>`*U7kR ztIdAx^I=U$>(o^nf<#Y+il%Yh`G3r$wQxqp7nxa3Vc$=mW~y+U<s{~!?-)FTPg*~) zYuSXWx4At6XSfGzOqumzk!jP^2XUP5mU6#asmZNxrv7l}kxY;_zY51kCftjrEBGxx ze9U`_lHca4>SL>QcX;2EzyCX}Y>BLEKw)zAx|+^O>t^Ky`Pdr-#%BNj8^coO`uz{v zvg3M8FZyixD>XT1Hu6nnI%`&H&rs8x@x*wR-id6DvQWOxi4_$+(c$GUewa>Ml_0go zZV%^#@?e9lJPX(sD@x>C+hQ&@Pd~l1l0zw*F>(8hkY`)33!R7xXnn9*Y?+IK<xFRr z&#%3GUUNLYnW!Ys9#$^k6}{>5nubMx80N05{WD#G<K~6<<wxV3g5x*8Z+Y${dhN)+ zzK|C8V$P$ks=5_Yd?o_=LB}~>2{~M=U^v$CcXOEp_oK5XXWPkKzxnC7a$U@0_u@|- z;<|Oszoebd3mJQKrB8H``q#fDg-;+Qu0L<-ikknguYEtf_I>ZU@A-cF_FMei_xJp% zWtXyz8dLZr{#6@Fq}}`SNN~;9^P(kky-lY&!y2Ww9n~wm;kG>Z>3PY##s@`x*KW5x zxm6k^U3~9C+U~!0^8)+6@OhoowCA0&-fB^Zw$SX8>|fV?>R&r8uyXyYQ~FPpLiSBO zcx=O)SksHIKbc*=BA3qj_^z$rYyD$qK3n;ue*CgwMcBUCjgM!joM2As@~Akp;gQUO zWj74Atho{CGiUnw?V;+ss@<F!ncF2Lem-ydV084->h2eR%%4q@T=jRQR{b{pKJoY~ zlFNC#0z>yr`SOA_>Qq3#CDXoZ($Ag$&bWBKXWl9OV9uwX<gPt^ZvXs(&vyIMuA9E3 zJdfnB6#FIh|99$rmh&DZFU=3GzN@FHW_RzY@O_r`W#6w9+1<PUS(RPWsLt!x+c%T! zjP19JNc!8y9G|x#Mti=o?Uagt+g1PXFI;}jTxH9Cp`U+3mxz5AeXsiEGtZ?N-*<-; zuKBW4r1H$~YOcmT)3!Fxd{L|RQO6~J*AiWgIM2FCr`4<lr#GI^53UltR@kPXRnc&i zTU;hnT5^x)#85do$G0<;6@+fpHhq6*A<-MYDdU*Ml%>n$E=NT_=xU4HX%Sn$*=2sw zqWv@Z+AL-ro-h5<@X3AU^R*jz#CQyoeorjgDBx({>vFQ;S>~DD9_i=PZ*QE@d}qq* z;sw*nU4Fm+%*wkZIN-{Z3CX<yiPOyA|2W#&H+AF0t-gOZ&9F*iHsz@mVPN1|ntzR@ zeZRCXgU<7llD6tko)-S{X!l>S!reNWEB<Ms-}%E~mG^G>?5YvXfBz+M(~Z9?FNgd# zi+imcdU@fyS`qQZU6;>n<&|9@vXxP&ze&|B{sZ4kiK<(BSMW#_CTreHSMhtDFnxc~ zx#Nc(%1Y$=zn}HWb!DRRf3GtJKDJ8yvw9x*&ADyQ#&__KoQJ|rTfM9sHO!8`H@9{j zeLp4grt?$vD;pD(_WgPF=l$gLtGZckXJ@(}Pd!w$`FX|i)2C+!Th-jESddY_^7IVR z%1cYk@BIzd7QJ|Hp7GUQ_UFx|Z&<?4H!YoCxtwun+xC=$e5tkUVF|PE)Knc;`Zq=C z$EVu3fJYfVCrpnneb3VOI@Pq|RNVgco4RzqeauUGCC6;ETpct-<$60Za_#(9*L$CP z8uy4*Z;(0T6A*tn`eq;7g;@s7i+))Cj$9%iUH&Wi))(vN_fr-JF7>wy^VglmuUsA^ z@*?c$hK2r%dROYVuM_6!+V*PZ3MVP9gRX)Vhwrsl)U1D&*V6y_d=gWqj(1ku^6yPI zOZ*GPil(=3Xj}Vq&WwipX)8~J^PRRn@ZLBi>>BU2>GtUvN-<fofs8w*?6=ewndqv~ znCNd>W98g@(ba3Rklo34-<>te*H*+Vm%ViG<?%hat*a%ZAMbyb=cAXC<)ibia@MI$ zy`Q9Z8`jH5%RLk4J&>_DSm4(7^|#LUWxb8yTNz>*yIj`7E_wU@Ewl2|Uz_~Znkl*a ztx4Qm^Yqu|2SpyU@bf>PbwH#|Du0&T`KuLLms1}~m93e2Xv>_$d2Oxx8`r3n-Lj0& z@jhodzpV6^_x@#bS8)G+aAlgBsFCm84FxOsxHqlLE)30a7W`WJ)cSJf>&8VVuHBrU zr4ji0Q*`4KDPOOvyM9ax34Q&M{c6XZ)vN8fzMf2tn){!(^z5!5K~pa+)!V0WDmk`J z`-*J(kJ5kUS9D%K@-{uE{(9s6)?c0*j#NGJH0|AbHF#dG-NC}<KksXH1|7XCtthL1 z@%X{XPEI^})?Yo}R#v|B{}?y_tAwNI3?;r!jp=ol?kp*}aA9VjlCtmw$x9Qj$jviU z<!ql)($~W8^xea;{bbZP+y2Y4n#H@luXTO6aiKS8*X9(<b(7Kyr`WX4ev&y?Wy{Uw z);{*GUwuAKz3?#T&$IBavlMMPzPxK#8=!r3rcktCptnM9f8NvD$jbPzd()?WPlYk{ zum0Zj*HY=n|Cq|;uzNEm?KOP7yx`cI+Q4%XY2o_!MJK-~=j@wt#cuv_-pLG4ms%ti zF+AROdy(G^7yk2-iw;HB37Y#T{{B8|t9Z9iz@zZXN}<c8cW6(|SvqO2!_=JF`tvU} z+3oidJU#J?Opw{y*Qy-1*5u81zqZWrbI_4oyBt-|J6rtb1;0qro4+C4<4)Vk>O=DL z=k7`W9AkB{VZqZoM|NMZ>gqhX@=X8rKS@T1SeTYSZ4tG-s$SA<7k^J($LGx2-pi*n ztN)zZd?t>uNpNk3yzKWtud<!oid%YPtb}sU__^<SChqJm_+*-^4^!=VPoJ*U3d%CI z^LqEbS$lm7@BRrbS7W#RKbm{}Wy+cZ{I4dbCZCfDzhPT^BGh}jb+PH)*Zm*g+>P{~ zFss(y$@Y9_^^@AS&6iHHFJbcOHg0yZ=H)h>v9H@8da`AWf)VFso%KAQ+hipU@PAeg zGS|Jc{=y@7{liinc3XP)Klr><=H<qKq{vHmKBR9l|8qjo|CEiW<+YOxOLxe5hIemK zdug$IZOZ(Y?B(3wzW<h(;(79CMy68Nhc1?zGu2P{<wgp{zM1gqL&&H5g*us$Wem#k zHm4=pUu2yNw0WRWA$`%X<Lj;-#}oUW$+$Kw7U-Q)(DVFxY1x}!zdE<c#s7X?uNV7C z+bDBkGwU<U$=aKGUv9KK5`3?@Q@6iJ`D^aN=D4J7RqH;^XwW*ftvy+Q!$F^O-rRGW zo?C<&w@pg7QE8Z1bA9V^XLakz{#VOaNolYBr^fps?@gpgTA0FW?rHOqRkJ4Wm3pmx zez%`nyKn{bzg>d<(jBUEwOM%_Qn+6}=RU!}^5-D8e$6e1wz5ebk2xp0H`*k=?`+}< ziwvw<aQEJpqL7^e>q|W4|8#|)_+V}9vCnP(XJL(0ZSfLGuf$`FEIH{4Q;yy4G1+c^ zdTa2bPL`wk4vA;lH!kN*Exk7Nedx}AuO6MAET4WrA?jZxTaMYZ+69bXcb#G8ox(T& z%+<Mf-+tldoc{3Qxu%s<82)8EHkM0X^=tXU`|rc%KmT!MTlVe$#cS)UoRz+1{<@Jk zf6abt>uUFh<u&_uZ{EK9|J-kxk{k@(j^7vj&M*1*{o5ABc^^aX+uplxd+YA+#Q!_C zZI0@>f9Cj(?`J0N-WqMa>TT|3`P<u-ugvnx<$nK7#@8$IzdJkokMi$73f%v8&#z5j zxc^p8=DnO;!y8+Rmap|CTXz4RyKVECul6-2jt^2H$J9hP@A>I-=lS+y^}F`{csBFV zZ2OPbUvz{`cpAHiw|9Ty{%hBcENw{Oi---FQWaL;ENT4p>wEK({od`Izixe(?&FK! zR`&hF?p(VWX4M5P``Z)tzpB;P9(VOcZ0wfXyJ~8uuKW7CG5ytHs|Jo!Z4djJ&u-ni zb=}(E`<4kAU!Kzv*t~4>udrm%4;K5^S<5tuHf&pxWiof~uEwtm@0#3}U0cYztn%<S zQ=@xl8T73mP5=0auP5*Kx^D?DXT7wENT_<aj^Ez(gX4D{lL>!TrCs}Fs+DJT?8H%B z%~#yNGUMX!n(Cilw?1n6TrJjc#V)1w`H+?9!m~JcnZ6A#_hHz<zwG%#!4n*YuLZC8 z9k{SV`oIN|f~Pw|Bvec8G#;2M%;fN_P(WfrfAD(#l{`%eC7br%Wmo+eI6tRQbu!Nh zL&dt??5mc<clvnW2!0XAH8;MzTr4WR{LW)h{XKCTPL~!%xW-;fX*t!o;;_<+!Xq1` z<qIy9Z@>OLyw}*$^tB>~AiwOlBaTP@y>qito5j#`CI8vEq;4^hdr{3>6Y^}z@1z$W z(FoP}^<rOgABRmc@8p@c4p~n)af<8r@;y2^67^YnpY?9!g>T=w@Sbdh-><UY*(;o` z9M3+oOJ~b(y=xm1@AWrohe&k&Fo;c+vv*(i@Vr;X#0k6y!?Nano)eY+X7kbAjd@KT zS2rlVKJD_0<MxWq<<dfqr9X8er;CTb`Js68hiRHa?wbFv<8Mp9|FZVpxoiFJ|8M%a zzWy((hw_>=Z9HFCtX|*RaIIZZF858&zT37pZ`JOfR=8hlcFp9+uQ#`R_BVR^qol*u zHR_tYug!*llBKi0-TAH%x3*;O)W6#|{SW(g|J}!X{qF4vjQ@6Q`oFL6xBrWX)EjlI zZ|tK!C;Wda^H%1)?7KIIe%agD-HE?hf1l_7eS42j|M!BAQ~Iy?<-e@F%%6%9mNg0A z+YjHp+dNg|hucqksne<J|35x_IP=f{g#Rxx(%(yz9K74y%pCE*UHjkuOaH_F)Gz(N z-p>2^|I}Lyn_vHTZ?9(8{#$<(B+>b&{(nVzef{_LxuXB$KmN~EE;wEE-{;}~c6RsQ zKL6RD)o-b;Y4|sP@!Z3r|KpFfmwkEv?nZ5Cd3lm|e7Vf@yVGB<?_^-;`RW{Ya1n#S zyXj_UeB(o2MJ~(Tuzi`aT-R~mALo?W)s(GTrq~|;GHulz^L1Ig*Oq6l*?4Jj=fPsu zh@auR^5YU#<b>|tR(d*f_PnLHugNdlzU><0js&H4<+XC#KKJFGDB6(y$a~SRwzd54 zd1I?BF3M%qJ@~re%CTSH_vh8x-}!a#Ma}<bPkwh#et&!G`|8)T-}`O*c0arR;<f)f z<DOP$mY2+u%zL+P@AN|U`f47j#|ax07v4*W-e>i8@;%mf?w1$JJ~Z8?dHu6by+D1A z<VW>q%LSi#G?uw(%1k_!`JO?v{CnE@)|0Y3w_Tmvvi{GyZuM1N(-M_xZSHd~Hl2F> z%70nw8qxWkAGfwu-S_F~OP^M-;g`YTiq}&!xW7vuj_0q)oU^*;Y{O53-Ho3PY+i6d zwp7CI@7W#i?`@PQT&lrswZqwq)6qdm^~TYKyV5@}1h4rZ603BbH*n+f<ccFp`a1W{ zz8DyEt@K^MavmMVjT!S~XOtgvejyy|GW+c=J~gfucLhU(Kh|Yd(!2i!+kD>5T)e_P zzE#n1he+MVGsmAS`13`J=Rz>!K@ku3b?eV8YPIM&VAE8&HD`0aRJqb7Rh@NvWE`*e zuUqc(`Npo~UhZul`R;WnPjuyUW8TE_MM`txXDh2a(e|lJJR1zp-VS@v&meoWGOL^M z%#=$p6%lJIE^W54PpD1fleU@}=JNil&TXY-^MX%(-DMHF^8M3<1c{s7PUk|If`b{( zyq3EE-;S-0clEU$vo8re?eo>Xa=Cq)?MZFbm5P(!Y_4Ru`;LqE-qW=`8k-lD79EQ4 z(>yY-p+3xQnUhQD=eB3PvOY;c366Y1jO7b{H?Q1r?8=l#M%G;yL^%b|H^+F({GDJf zp!QlqK|@<5M>Z$XDr4nd_uT=0QoRqA`3(}z#cY}3Hs!YXRE905<QD$A`&Z@I{Dh5W zO$Ro=JKp%x|8d~uuvaBvi@#Ybi(gcop>DWgeyg`nVvZ-{1;?0Yi58JhXPutnvbH4g zvVyE|W_k0wJ_p_!W2rw~{XYKB?w|S+v25NorPTacy~YxLtSyTalTEE3$z}Ig9yOnF z#r5r#4RWH@)t6tHykB=OF6piNd9E|o3-*0cdtu6*eZ*j&u2S%}jM`J*&c0n-SSR<5 zvGvpM1!<pV_ib1lX&`wrdD-F~kN-VMU%vQ0W_$RSucY7h=h8xDIlBahg%$r+mEPR( zQ&j$bbl*GQl$Re^r-a`xjheoHpVj`V*7Z!MXWqH}uJ*^W%YWS6_Z(be|If{4s=o_& z;@j?Lk*~iwO_7<^W-8bA^k#Hm_g>!D^WtOwsbt++cbWh7L+L>7`z@ujrf(PjA>!-# zZOPp|nWh=@YB$|Ia+$AMMIpabVpmham9^fM84C>J-o5I&<#g;s^ezUYN3MSrFEs0% zb~_%w@!-kwKbbf3UaS9maqrdX<?GL{m-@0HeYaJ8Sy}1tS9?17dBt~ZIXU0VKUzFz zM%ztR!7~f3vr8f(A8<aL?DyKq&UJHW&(B3S-<jyGySZX#uFO8+{+pBIXZL*g;PGa{ zm!n6uTsh-ktThbEzi{PMO^`J2uce>k*S`$!|Nm=dUG0;}AIoR8-T!H=#5z})i8)+n zBHKpsxu2(+Z&72bF*LdLrLTR4dELTz{y*Xi9iMw-1lY!2`K|u<SF^w7*Sho7^{&Y~ zo+oGA6Pnof(>m+(yzM``6m~zKu(!&2KU<TJMCXTimglzZpGAA$$8Bhs{~~<;WTk_a zPYUJ<>BRD#KF{*}_`(FEo}(Y)St6%9mwB$W*fX_0=%l@ir&Qqd{ufgUu06H*{Zser zhZFZ>FIrFkpQO|4{I{)+_s9BRsrc*SEvG%E{a+-<bMLTf;6CM!dCw01aNfXjOyGz9 ztGiG38tW;{aG30t{psSqWs_{<K7GCa;(Goc@w3kT=MQH$?K-}&&iBjB$6tO5a~`x4 zZ?qSjQ_J_<^6bR3&tIfV-FG*%+vZ@YV;@{EUs>;)b@a*FKR)~IKE>N#%=lfi#s1=& zFF)7pS$L7}N5=htdggogrC;SA_+9NRAydG!Z{a=mJ>Sh+rZXNtE&VF-Ky}8&p2(VG zQ6ZNesYaVbb@y*`t=MQ07sb+jG%-_9N34CRt8K(0_Nez_@$c;e_wHM9yh2O<{{0ts z^Z(qv-w{_QEaDmQ>%_({#%J%l+tu4&mazL|_{ZmO?UTQE1yrl&OsZdIX5VF&StEZm z=h6-PPaFUHT=_gP`22a3Mg27{_Lo=vvJhO<%W3+r`&hzf!#TnAX7At6>9kkW$?VIq zbAN7PH@pA+oX!A6o0a9Wzt=fFmj3iH_JTxPQ?`Iwn~boyOS-dPy137(k7o5sCw|Fn z;%-Vkk+@Ug4WDJ1en&Qs<@Fs4FILrT5oh^2!MWBmx%|fs{gv$QYsweNwFjS9b$nZ} zLcg<0CYYm2?fFmZSLYx8jTK^(?K|lG>h8n6+cS8?<PTrf{8zO5kNDYTr_(=o9ee)i zW2~TgsipZ|C7xX}&DXCy>)2lD`&jzp$JpSLg8Dya-TQjP`p}<_<bSga>>theZ+-UJ z`x>+S73KZk>ztK8{piSBvBX>~i#s^thyI}j=M8TxyH|U!diJq*pEqvL++ru6JG<&b zC4cTL(fQ}SX1l%qd~sXnxf;dgGo92zG$4X2gKBD~UzvaScec<pmrvod-JWy{UcB|? z=dGMz&-f`SuRdCSEm`rs;rqRXU&T3GXBY?;_>^!6Gah$of7u-LH}#bMf7cRO4$Io3 zQ(P9>7+&rCzo@*i!o7e^<{aNc;|D+9T)4q(_l+;n;DN-O3mMFIx1yV>&Me%wbW(EM zr)g1=pTqJxH}_kn|8G6^;lS|^+y{Ric=)IFLCu4LeX2e-MLu(c&h3&(2WQ_Z@2_%| zd+P<_><ah%@v`-);NKr~l2iYu|Eq`m_YT`<=KYswU$wNL!r0n0lWQ`wnn}`9`3EXr zY>vfjb&c+tb#3#tuDh3Jtk5v_{-`UP{nSOTG;8)UwrTu7%S;Zxy%f3Nj(1aM_rH_h zw%N-q^j`1wJ3C?BwV3t$c~k%9eoXO}nY8<8j7>B@JA1VAhUAa8W}m!vqS$?zc*L^* z?|(;^to930?Ei7(L+Py7k-LmqL<I`V4OmVZnZ#^dJ?WAA{I+e&+myblovsm|_iBE$ zfZo#cP8O${3uhJ_)qi`&Rbn@z=Ck!r_^%e9+x$1@<EC=Mg2$pA-+asBqPEF@3jE$< zy&?F0v32@U3(04@mj}N$_FeES+L7J<o=vOCAww^BJ$plgxf3Q^FY<iU-mX3?v9wu2 zdVZKxeVvJV-I`A`GiOUq4ffi6<&BHynR$JB?)Q)Ed3_+X?cBNb!8ITD_uo}0H$Pu= z#(ILV^J&c|F5&0RyPYL0dkw19J>~3X+!i*;`Kq=*Vqa<g%`k(RyBcE>tY>Yl{QBa_ z8y1(7&1Ol<-Z-A$p?#>&<3i*7gGaRY&S^VeY3Wk*r7tc{Al|22`^5b}p3lv^J_jG0 zb7SWsrR3ZD9<#4=W#3~Fx#6tV;Xftmv;FKPp1j%h`<i^(xoqX<vQ-VWp}Q1c3HD^L zr%j005M5nVHd*>_Un~2)Q?pl2eYWhZ!G(zLi&vcdXu9^?iOp@h%y%w6@;6c|DX0Hx z`8$d8K_@<$R)5@VsVVbTXuqFL__NR5VvmFJW*+3aal+)JM=BTR-3ZTP+Gl2J`v@O; zc%rLuYFwgK$<D7_AAa>{Kby>y=E@##Dyy<?!TG0L{JU)ZI+nNy2U%U5y3k~2r;+)e z&>n^5&7YqrJoz$LuF6SZNr`M6@A?mKk8~wFDxS1{kZKWI;l5YKc>ia+t&y9i+&^AA zam}T!xj*7I`U-6_yKADQqR)H%)KekO-)1ZIyR#=QGU$9gy^DeIklc~=Q<rzND7wsa zeR5TErs|6McQnjf4j(MOY+z-nf94oyK}B#x@~f#&GL5Gz{Bw%<>?0rl#HCDgsnE1^ zB@^Si*VPLr{gL{9M`B0Qo$PH-yA8Djm#bKJ^ZD-%J-z*9=Ni+?PJM+PJof}5-?@ta zdgEQQb;tfaNB@@Uzy6}|?PinV&pEDjpC+EJIKHKIp6t?@B{mI`xsIMH3p#k$SqT^D z-02o5UZfhH6WHCi@mq+_Q>8>cbH1`5uYxx^6=%y{q%7F;AVr-y<*M|LB6o?8#eN&} zx^_2R@a-&G!N{t%Z)!>Sk{z<Dl?#<W%eEG_?pyf%vxQW>nfgqI7Q5hUqI%aOWK_AF z6#Q4uUbg8zuVH@Yp~r{Zf2n`Hc;U+27x{;~>^?F-K4&0*L|Ib6dee=UUpdzlCh7(p z<DVZ|m~muL(aAy;_eaZrL>q6=d)<<;lU1o!uPbX(jp6@3Z3R(%wRe8Uj_G~7(Z$B9 zCBA%e-y|`f+ZOL1IBuJJP5<m}ztxA8l%&lJ8xK?&tPB=Z``|S#qyK&L2jAz*3UAuw zm&{5}l$P}`ubEWmB^*B2-1nB-{zKg<S~tVq=^TDiWMOpYiNpDI8RupGb-b<Vifgcc z^j-CLt>z(_%<uC5I`03^*vR4bUjAA$hjLA6)lsE0@77i?3FAw6TvRSU|C0E>HCNLD z<-WMK^u^9I%-MTU)>&cYS7GgrdRGex?zAKOA9+5XV*7GV*8$ag|0-|%tDN21{xDwd zOVPo3590r|C_l0~a>Ue>x4uH*klpIfJNgsTW(KRB`C7Dm?bUtOxr&K<7d_~hR-fg# zG+c>EI4<x3yWQ8+-fwTeey#kxsPg8{<Ul3e{kC$wIZ+|9=1b>Xa*Qx~!@h9Gt~Xos z@<TlwTsO_x$i%CENa0bw^NMq`-d>)4O?xTpvS0Vxbvu-<G*!IjPRhI=YhvBInXP+S z<>KGsHe!xtiudmCO}iMP8~J1_$C^WFb(#0JM2An`Gc`UUsynA;|K8nIXJ<WlzrJeI zk<`z*i>@sFIYXzS_VS;lrKPiTKHoBy*D0TK>09aJWx`^Y_d4uxKJZbsT`InHYF<3! z&Hap5w&_*+=AD&XTaaLW_WIe`&z`O{Vm41Z|HUUj?}^9>ClmHhdyRU-mv1+mWcm1_ z$|;vmPB}_Hv*Q()b-%t=*)pw7dCv`16;-VRnw|Grx7KIg*&^j|+u)@5L!E~gANn<1 zpQm+W&#r?FKaN#yc{8>B;KyCE+IOs&JEE5dM6Hq9wrlsUwK`IBE<L-=!54To*sz1u z;@5|%yIArZF3h>RcVFVi+8rzgXKz%z?F_JwnHIj?e7P@Y?rquX*x<&`%YJ^pea)AJ zY1f{h#s;nefg4AsDSE|iU4L%&t1q#4f9t(-JN;`BhpEE7UtS!cCRNFNm1{D%RtEhH zl}>r3d9muTT=~geMv{v@KYP`~uzSIrG<%=(8HYsT9=SAIq_38~{Kj{`=)EkpLm%Vj zD%W+c<kV8V`f62sjrNkOexJXbRh`JP&FAQucMSZ`w{N^!v(oR@Ssf0gW(8h(j{u!z z=W2RV#5YRy?>etrHbMP^?39lUu{j;0hf0?2zi$?KjW1ODg23)nvq@7-=J!p~e`3_W zJY;jt$Lyx#7Dw9IPR%@VRB;Bk`C`6_&$pVynch-b-}>h0q280-k5h|XvUGj~tKAgI z=<rH^VEg68*~Z$m;w8RKQxrwSbdI?59ofXQbYtY<hY^jl0xB<8_y#9cRO#otF%(8L z-Ce!Xnqf)m?TVSKGa?*1{r&1$)jeyzE*3U1zPjSAisrHlNddEG6f3UqU9#qL$z`9d zJi&j1x*i9}bx(TsJ0UOkq~hkg#+iOXUydz!)FRHL{cdW<eS=pifph0Q+^Bw3rXzL7 zp@<0~R(?MNlH_y?BRq;Gp9d{p@3dTzbh~fkk2uysk-ws+AMBHl-ga<Z$Mk-~l(tIO zqQzM=rmO7lP<)qiQvcZc2WFop{pi(HkPLoc$i<K>(#+ytE_q?C;>>>nDxdZk1+rh| zapx1UNp2|Gyj;eD;qrXJB~zs?9Obu;IKa9k!A7k3@X6~>vbseR>UPdiviakqx!5W~ z*f7J(@};r1oU&Q&c4hsNoT$4^5A%b$1q}UlS-oGci|{;feC~6*UzN8b551ga?0<=S zcCedOtnsN8)+|rgY+j^Z{$%~SOzxN3(MqWSSw}ecy>Rni^-YL-L+H1|ixhWl+;Qh- zpATbiO3tzK>kE%p+?M7(FsJ;oX0?3TG2R<VK684LqaNHY@e45fd{O?_ji<4NQM)$C z*t|+Go7BbiUddO5wIprv%;lTT`dnDR{Aguaq3&Mm3v=t{aGk#SXNvpLxkvcwwPt$F zytqjwD*gG^BfFIzX<p&p$@utcpo*yQ=fi&#M9cF0g!W~uN?y25CH2Xg*A^4c)ocp4 znkhQFGd;OW(z|oo-B_E@C(|B%UtZiinS=S%6vsccJIbZou6y&>)^){5EU#Y_;`gmu z=xO?+4*z|g1=Hg+?g&3-O~1YG$<#|W#uaa$`gU739gO3*@wRC4mwtPh?RNE>S9Rg$ zDU0f!zx(uU&ipIF6Mm^q`u1LG`61&sJIW1aUQ+JadT!Qw>Fv)S*~lkqgasAY_1;v^ zKC{6}#g2t@$(gUeW4MBzX|L{heW&-N>O!5a6K`D4yOl6V?_f9BT4M4=J^fFh*7WxC zs*e5(Tm=#ry$kMtIZO4V&+M~*O6P7Z=~8Dly!OdX`>&hl9#4PvQyxD!-M`mms&80- z?tlE;|ND3SPc8jd|L0GA!a==zF)_zv87{x8x3uxP^S@|A^&YGL^^)>++y3R-sabAp z{@cls<-lU9TyXT^?}vVq1g3{8U(USz^t!K`w)72;xA|{Zd;e2dR&tMRiqX1_uN2Hp zm5lD>9*sWw)UdT;dFkrfrGE>yY+k)_1EU7R|A>9hW~jwA*V-?9XL_xE#rjjyH+DWd zu|A>vef@17{g~}l7bdZ8igTYTdoT3xMa`pAc5hnfbM{j#+iAB)TDkQ$O&8Ta1TJm% zG0$caYk73E@Y>Wr@hAU-iIzYATda9!=x*D=W#Ibn{d-yYBTxQ+e0TAp*FXKo%6r`Y zaV)!K!@BdRkm{_Ye~;Z~H!k^Bk?GavurepYcGE59-q_E^2a?aZrHMP=I8f97Yx0K^ zpH6&y|Drmxj*0ok{Cit1c;`7y%dy#B-SoWjaPk$-lH*4|*lSI_oGGmTM&s7vovlkv z?;0fB_~-OD?wmoui=HIEt?t?q3~qtn4;Ic2v0pE2K4UNc-Q(R&4mYK&-TZE^k9~j7 zi0AUmduE^COgzQLd--0r+!gU%y|<=j`sB|%7t&tVzR1gOv&h@ad@<*Bw#N!y>eEx^ zX)M|``K2sFp-n_=YGz0AAE&os0j5onjZ>%Cb1!H+WMeMZV3eu6&0~A)uFKrF%H?$; zwlOL*1o%vxa8tjeP%%M)RYK&6;<;$gKL&@tvAp8#UcBISUv6{T?b7zchHRhNCS93o zEL59i&d#tWsrzVqa)0Z|N$%nYqx!C#f4SnULOW;qnY@krjwDoDwOw5t+HA(gn)Aqy zEkC_#{^u_&Y@9-cIdNYzZSVEvgzIl$J09ZqiMQTocl6$kb1#46WnRn?y{M@v;eBDv zO75hkduvs{-T&u!>EG?>oAurs|JMb)tGBiI@$m(RPvc#AzVdSZu-C6|Z~32<wts)B zrEU4{BcP*HEZ+Wm-~4y+;<<YtEARPV`ak2p_1l8f|7-u$YyaD?^MC%6|JwiWcl{Us zzyIIQ<+?t*YJ&dXKltur<Ej7rng8Esl>Yx7WOr!t#;@Hwwp6U&w!O^rVL*?}wI|X_ zleT`V=m^wOzjbr9bj8|O|0c#6SDs(n%ie$e-VW#DY?p(R9(gq%KYo1H)z8@ne_S-0 zJL}%smj}%RW-R~RX#Vce*~j}n*gDJK&d#{{*wIXUmv}_qH!;KW@_8R`mucfV?vK4~ zZpK90eRuqmmy{n=d1~5y<?#(BlXoFo_rE+RF=5eL#+m+WdtN-cacO1ru3wIG>bB{= zUd>xN%UnEnZDD1by8WE323yvxeRz_4``fh8-I;OsW9HrsIubk8YwlKq8Sk&^+Ii*{ zY+p8armd9?XYK!$sTcU3ORUWJ$Dr?bq=tQ4cXpL?*~+Brr99WT-hS;XoONO26RG4P z=a6LIBw1#Cp5wc11e<sD-`+9p@VDyQXJQ{^@4nFgyze*jTlZc0g0YL0uIEYZSvQ?w z$Ll_|c~|9Gbb3M-=e}h4zOq!w!Y88TU-H|fS4HCX>}$V%?Q?8y-*TA)XZGb~`@S+_ zymLcvyI0YD(JfjFieH>M6;XVK-`CY(?G%SYD<a_+1~jjFl<`q>?lbp&7S}tsp3vra zF0<u0!-|FSlO9O*?w!ajB6Y4!Wx)@b@QQ3vsYUB^BWADR{4V(YH1Fx=NVf$#?X~L{ z8LwWwc)skZqfyDO9M1F1uE-`>d9ZM_+rQ(pSP=TQFhMA)p=(9`++QAt?<gAzXXGAc zI*}3ex6$;FSalfx20Np@dSx36cYOY<R{FY1ZT^Ca=En@qJR18Lmx)%)$&j42&s^3a z=z7!2{x6FT%=I<ezw2?=HpbkC=Ib}D4C1|K!CY$>aZKX&H<PLRl6Ys%PcV_-x_G>h zSNHyMR<|#w#bkY-hX|!DPY%%tQ}#Qk%q8`8fo0Y0#WR0(#PWT-QU9*u>*JOrOVC9D z%xMmGZnve9l&mf_zyH?ct`fbkw()kr)r@_)Yb?VyX#EH}|Ej<8OEG`H=}Ea;SO4Za zB%NIN@?48;vR(<xlx_Rk)Q-J-d{d;btua0Dq_IIk5>uU(X#B%n$1ZrB4O`67u~pRB zeY*UerbMkBH4;|891`W`=7~7^NL^>``JkdHe>>TxMd-?viVr4V_LT1J=Un!cgFn;d zi2cM(hgCU*X7d|wWRP6-^Fw<=Z`Q6G_aFT6e7HPx3ZKV|*twHe&3h2tWX-(mf~DRK z<HI`hez{y;z|MFo>d=w~yK7h2c+P-s2rzqV{Yh5D`ORz-H)UakpDf+C%H+*AZ**lp zdtqXll+wBNM>M&9`yCfO?zhIZP214m4D-RiVM)Af)>qnAO!^q{X3{e0>kl3uc*Peq zLu}r+2aoRVlA71&qSCmUE#SoUm1&21cFg<1>RVV87+$<4aOYf?&C8shuk-B|T(vp4 zAt*ylGyc(^t>TIPp}Ku>eX%jRHRo1J>xtTis0i0I@ddhcIq$jnp>0|EEnyptkIIVQ z<W}&#<SkD&XT2C;<?H``lE9i}FSvw$aw-T`FS~tunUv21A*(>GqergKN|Dtp@M!tW zs$as*DQ_k<(>qF;?fR2Py1RI$he)4F<z2T*$Ij+vyVKvdJ1jmO|9;@IMX>NMsX*=C zjss7<`>a%cP6;^tDCE&b-d{2+S7=pf#B%V&xPMnu*v+mnYuz8w%WW?l1k8?kt?^yP z@41m_s;{)zp65*lD<9?DeQkD8`CcNQMTnW7p#F|sm(-5)2zFNR{5f&&9rG)d%0*@e zgRj~>+%Mq9d)6q2W%Jerp{^$0qLbb}`<1E0QPRJ$Q)#33E=K*6C)iYNFTY!IZk3;( zX=|_R3ip|!yI$S<v^#nJ7P+zvzK_N0*6mm2n<KLGnR??A4L+9G<h)NOUiIDG$bW_@ z=R*I9uDt=PdseRlT?|n6Lt*#yd1?w%7fs9z(=+UH3a)fqYcx0Y$Q#*Cv5l9wS9fV0 znpn@Dd?16F;nO{n!tA}-lb$plT=7>`e0TrvJ$?zw60zdX+E;34WN4hWnQQp&>X!Kd zzODs+s=Hd2t=f9rXXb-!g{vCAk=It47&>ZS5OK*maVo)QiR|QgET_y97)_o}lw@Fg zoWi^2rkR}Xm7_A(Zz^$pVl@6y%)P~BeLveq>x*v_HeLPf^CPu!(Vqupfefix#&_f! z7&x+}vJTCXduZiZ@L-8W($AR<rFC7trZtBav#qkQ-WIYYWVg*(p2?e<d#1CnXlC(z z-0`LJZn)aFDEGvVqUT?+b#Gdde2?iM4@bg$$!)W5bv$&KS!ytU!NtaZ36rMDuuu4- zqj&7_L<8g8-KYMiPW+SOq#FOIjr01t&c8?9do+@YwHI7)SC+oZy^h(%d2{2Qsm-^x zmU2I9o$4!Tk}z8;INkA6<?$m9LU%WJXn(PJ&~-@2bnT9uaLEg8`&Yi)_IgIlBj(xr zo~K6@%O3yqNc0i2=tFmx3kEvNRNNb%#@cS0{BwrR`pmU*mwXSkeQlilXx7BZ5)rj* zlkQ#rXlj`F?!rwD*1|*6KE~X?uXN<mhh6U^zWRQX)^NL?^Y@~BG~=QJX1{%A1YTp2 z_6bt&DtvFlcIMpO1&u%MJe`!YUfS=O3s3l&`x8v+dp0k6=%#74E{N+nbA0Ea58T%c z#9unSPPybeCqZtx>0NOyJ+-A=O4BwotX=dsf63-W&9lmqSIM1}YBaf`uK2vS*!{uf zX&3$m{Y>eb<`dlc%DlviP0i;^hm`!EQei32E47D0X7cz&^ZJH4#Y_rmUv_fE(&tG_ z)GimZ_}iYmWNh}uw{4<fK#~0M<_E^r0w<0zg(w7v`u4P3^;iFXRB+McJ>Ah2|0M&J zA8oj!y}_V8G2_$%*`7MNXFgvhxE$QGS!RjzGuaQp2b`wqOc&aAwlCE{V$p`ZH66RS zT;_GQ7lgF_U9_X>hUvx0EJ8sHlNwrB!jFo|XR(Lw+qLS%HD2Mb7qYrOxq2&eOt(Mo zD6v<zS>M~l#WY!s)g_u`&BIMI!Y&_vsQgQkeZl6yVD}jziJvCs<S2cf`sFBZt;)hv zPeYfN-de*@{6pkI&C2JSq8z2#u3lZYVa*iL*)uq2J)ff1`r7fjLDrlaZpFgcD=#bf z<$KOHJ2$6u@<zr>7go7GQ(U_9%S_L?>`HMNr_D;`&pzIA*C5XHiPD0EOPX9VIk5+1 z&Utnm4AJ^pocPN>G{UvRtoOW&?7|uB8b6g*@%;^8_W1U=>gt=D7h3h!R>bbqo!)db z?pT+K>uW~-4%x~1=RWo5%KULTr)upa9HJa>z~}Djz#Tc$=TDnsE6X)^!la`yT9+hw z&Ej8dap={Pwb?hVbFrUNb##!<tG34bwp*e@Px)o~@^mI|IKj1gQ{<<_Lzj+ul^N|i zYT$TKg1>d9z(R|I4`$5OUuNHZ{gMmEbMXb5r5jIaq?Xy;wCL`WeAM-hd)XqBElf}U z%ESbAStbN86Ob0(`2W;|3!yrj%a=@@m=viRdtNho*BZ-I{_Ag-I)wY`otLxZRFhO& z^2&6Y_q1EC0zrGuDmrw=KJ745TB~r!S#dJkOT(*o)pgIzSUSymVtdM#PjgM5t>)O8 zw}07PD>F6Ghbgn?Gc>GgeJAkB@#X}dAE(s{-^LcM(#pHyb3OBtk~7C6KIdgo_gC-M z|2*SPOs(n$(L>3;hL;a^xJz$1zf?LQb!WHNr%(4%kC|=iwVU}~gO4-h)ZuTwhf}0C z@3<4RY*P7|EqZm?lO$(ttKD!jGtu`4mx_1voD=iXjJ#SZ)8fD1sLQ{TcIJk&HIta0 zh^hR|ok`Cn)}7p>eL^LuETeGIk2Z_o&yQ|5{}TASD~Q=8U&mkIp*>^RKDUU(jT%Qh zR(ZZxFAwfWuI$|Au<&D|Uf@#2Nerwfj$Tk`;!A6tt5$Y?xn82lBR`j<|Bh?o4DZM6 zTH3Lxq(|=h7UR?EmnE7lt8PVK_|8}_yz|Brfp_X>COXcOG+8(~r*lPP&&3Pg(Y)$& zJ}cSF9AfKZoa+<0j%%yfuE)wQn>y>l1QMsZMQ3l-zO~wI_tifCW7uv5X!{?t7jY|q z?v@Cb6Uzmc>Z`eB2;MiIlG{*l^pahJ-Vcp9UxyVc%-2tg@ivs~YFf#)xwP|Rv-#T7 z^Ivq$UR8E+k7X@$fO*{3bJ26-J4NERTTMS}#vPq?<kq3vVNuJsKkt>^qx$04s=Fz- z*lz#bUYOpOzBp=2w!8KGGtv|M$_yTZt^+Wc%%NzzAWX;Wi;Ndns(nM{>00>`cNgcF zI}vuC8u#BuU8+6QBHX`zK`guJ0i~B$JeEI|&-xJO!)R8N_wsv5o11U;LbgSXyIyQC z{vA2{!wEHYy94j4CX0m6yAjFvA%Oqr(<d`(Z@+qcFnV^Vq-t<)PNIrUZ}9cYY{3f( z_|I&6=V_>x@cYGiuQ&fW1(<qDK56b!tNm-3_y7O)?`zL?D&K7SJu`lxcYe$RJ&rF7 zIq#Py-_g6iCH>Xave55ms${n~9J(f=;3gD$wB*YATQ}?r>TjN%JhN)i_Lc*oD_^WI z3(_(!{q&^rX(h`I1&P0hy!T%D=(0kUb8#C}qzrR<+=cGPSx+owBc*w3ik0>R6&N{J ziLf)tTOMv;F21$%aO458o_)-H`96=5nS;*EThqjB;M~T?^L4HF=WS2=_ATpvzxaQk z*s`)k?|Y2B8IE64kbZE{;L7=5MyIa*735St#&*YYcZA!mL+p+-9$r(435(R*mhJ!J zu#eqAV_v`W3Bf-ex~eUT<oL)i-_emvy2H74XS;9LFVEwC{M@hH+R7wYCq4FYZSTC7 z_}qrQ)6%?Rzx5oZw33&cTKjyz-xgjG;AkXReq(-x%sY?opVbd5gw^J3>@PWYFrCZe zUu?#VeWit~F7o=tIolOEpZPV#>b-$n_G;4|``$`toix&!oByci=A<a+jWO5RjX0#( zEH53|cy^n3vs~qwE|CNCd(SV}DJ0y;9l%q6pW$A4GXI{hMvtakyjuFAP}y$Hg6)kD zs-MW6m-lYE_wtFI`X`-9b|s6_6&AdH#eK-X;evowbK>?J&2v}jPKffn=Q689s&LAZ z8QMOAvZ=>fKiNs%oVBccmao5$0RKfFnPuL5?7MzHSJ^Bpy6c;L3A@0jg!fv(^J^pC z3h%$W(>1^6wYk1SUq_LCUrznccd}JapXG};aNU^IVsWr<m;2Ay6%Qrny?TCQb8JEO zxf_ntcjdFL^-KJE%whMnI}R)DS8Xk~_2&1p%yv}Ma%tfZp4}+k)K=#3`QO5w>tmW+ zyNiC#ZC>;5l%w5guJc>tC0<W^T`%IOJ?G%Rwa!iRH_kj%b?D>AfZF3T#joD0dF0)a z&-NxXyZy&y@#`NMrE5>L2>f-D)zP)EP+R-5(qV@7!*Y(eD3iA=VT)^74?8Scs3&TC zws_@XIl+fBBQH1#`%1~bVbITH(&wqN3Q)J5BkHs9i><w!dZ)qH-34ds=1t@=%5QY{ zHVLZqWBP7gVq5V2$L<T|Eqiq3l;W44SpKWzp+Z#I-@gAb(o#F@KF$6A_Wh}g+KmN* zW`6w(WlX)}gNs?zKI$!d*V$#KJ<;%RSd3~yRGC>%((&BQTP8Gzdt9$7F2CzMU*x8% zSg)2}+hV&ty&A8p8P1(ce_&%A*KFdua>=YG8g7gQ_cNmsyw0f|ex!8Bcl#_`p_KyG zG3~aiox?2s_iy^Pe|r8NV_u6xuWNVIvZj<S6*OE^5aPRFzqn&`#YI1Jiy!J&zVliX zN5(Dh-?cX+?awpMi=n{>HQHP}Hn%_So1(jB<)z?s+ZR`v{$Gx*U#Ml9wPnMvy>?~% zo0}Hj37r3Km0RYY(A$dh7Df4`1Yh@Dckb@4^(N~Y)E@ObT_HKCa@sMr$+1C#eY<x& zNLhFM?~<Ed3tm<yH(z+nl;&G|{jYv}%!Ln{OQP80oaO&yXss4ixTMX#Js?}Exb@$p z3P+ATpURqrs~3xV1c_yQ5z7^7iGQ$+r>^PWGd``yVdf7`=SV%++gcaQ^!(fn&ZeSM zk>5_}=<SeKuMpceX^L&sp^e|=mTzERc8&e^<Svgj!fjWpS2|Bh^Ge<m7yrO1#)Pxu z>tmNEs)~O~7T1S-d-pcP!0*iA?-w`alvVd$3=3IvtXuXG(}Xqib~IG&pFc-qo7>~| z84lZz-Dd55FhjpI$@VzELFf+k_cmL)b9H7;|K%b3DeJPS%^Fp^RS_@P6D88;sO-DX zYqGnVz2M%3*>~NJ-%fPi=6^qv$@z|Tf_KJylY?&!Erg{WKmY5;tkPB;v3yD2#m9B+ z?gsxD6<4%=$tqCHHL3gmxBP<LgdO*P%$HF#jLB~et8Jc}<?ws?#?BR~iyO}_<A}6B z^lrg|jdPwdUHKEA(h<My*B|AU>RY|X=9|v`wRhqX{~swG*F;p7_cbWodGEj+w@7!z z-@3-<u4%$2rc`w&RJsN<sCj>V=kQ7TPs*d+H{E_0Br6nVTq<#J-X&C#D|cW*8v8<d zpU{VEME~W?Sk1~Kwd0TdfvpGXn69#N?J>E+D%H+&!amFF<o!PHZCh$n{nQ?>i)K$% z@`%-$<jWQt^FE`gZguy`>f+U<QW0s{tGQ>e#>6ixW)Ae&f2Om<@P|!MQ^(_qdFrJf zI=;7TycYVVimOm%#bn0goXT|?eJzH^_g?vsl$Rd!`)+n(1IvT|zyA0Cy;}d*{t~Y` zm&c?>I~ofZ84sr%nIHeZZI@tCsq)cM<!7(bL@x8bdJ%W%!}EOwO)r*QtykDl>1@!X zA|BnG<g)ql?~R>{c#m2hu-j_J^Lm%%SGBXPi6*-z7Ot9*&pG4q63bwpmZ=h#&9vU< z@%JQ5wvQ5VjS|<(*d25FsBp<{QMQuR($bQ*nU*w_zX;m0YlB$4^_R(&Og(Ed_>9cf zl^dD*1Rc*{G@j2;_js$5%A>vj{v!<WSzKzT?(A32%e%R^JmKu&c}~4@-=%ghPCj8; z@K*f8iO09TuQJ@;b?J}bx!pex%S_LG;dtHlR^jr;d^bOEiA63wemiQ#aXF7w0n*21 zZ%H07Ut_JYw)pVhYG$riJC1GB+HYfEbJOn2YTdO;62g04UbOq@uq3K2m}81d@DHx* zA;x+gvHjWKxvQmPk2c3ozI>ETbLy&WQQr0~l0STcmT>a3tT~cgzGP95ytvz|%Rzn> z;xQKmJXQY2G*wGpdfPEkdbf4Kv17J5$4=gSWA|V}r?In8ZD@4;CEw)U*4zF8qH=7D zp3i<^-+Sx&^dBn<HpU)0$zpeuwLNg%$LYFCJsz@E$v1ADF|doeu~<B;W5zZC)uSic zBfh@3k$PSJ>UNV0-wE&bwFYJjH}Go28}F?tH{M(K`O)3mv(4XM_FVM+T>I|Vx6P-o zU(cEO<=y_>dv^bR`}Qrj6W`w7<=4aI^8&LI=AS+G^mY8bhqvwb?>%j_=Jvn4x1+Dr zSx9y7o4s&nMQ?L);rstp#lQa@eyVL{AvwkG>*3wu`TFrG?Hq3ElRmHSmzAI0l906A zV~dQ3zPi-@k3T#fM+k)NXwP_Iww<Mv{kg*v`O0_YC$xeB7A-1&5yAVbenNTNLVMHA zcOPDSus&hWw$B1>uT2Ercce^vvF|uz-bMFyQ+NX^C!Lk`UXl{*@NuQvV|xeP=nr@P zK8<3{)+z6vF*B`d_Eoo6SpszqVH0NQ%<X4O|1)`SRM|h_lPm2ntr7iyvt540eR1;@ z;q^(~Jhffvk2h)@D?9bce&Zj1o&UnSxt`YVs{Z}(+pAxF+xOpSKmFfCK*f{qX}wgp z(dz#}r=QNczfM1X&%S5jS;?ChKa;#?7IvEL(bC(z`)``AD5>1}>v`J;-}`5;|KIX< z?`*mDuXj}>+rH=dFBed@om;j2+vW+TLKlkP&rE(h=lwE)UHPtNMVB1h?Y8uu74g>H zw>(1N)_m=KYj3%|=nHpVDHtBPFfrL#=8v_i<N08B>yEmv;4|#=8z$MfX5A{<{#~f< ziCA-Qm4vZW-LseWf&TwL-t61u%iq69uCZuycNIgb>hfZ7^+Wv|=LvmP;FDNzF(hc` ztK0i${5k%_UhTi(PyL{O-ARkCp0593tnt6INr!jFpYY>Hw^=>@-}B%2-}xW*kN^Kw z`TL{b+x&wG8f|awA1iMDf2FAP&zcR%Q(t?!#w=g4UgWkmRPFA4(*NWQ8s#Va=Rc<S zw_bsR>GA)sYwd4;fXMH!(d$-v{Qti8e}1{Y;k*6||Jbj=<2L0#|MBF;EA>;{dj4N8 zyn9)+KI1{f4bJCPT~?w@7j%1M&$ih!NZjq^>CQ5<yJTQ><;lD&IcmI_DUQZUtJdAD z$hg48_Aa`<;9Sch?b=ey7)~CkBh&t56~zahpHM#W%M+`eCenWUmUBvRSo1GFenp(^ z-mKk<MgQJ=^n5Sgr(eBd{%5ys8urUes~YBCHmc8&uM&RX>ijh0iD(l~=Lcq<1?)`^ z7QZ`mbfaRSy`RMfCCkUnhA02dzBOge{To}J*c}m5JJ59OZ_aA{t8yR9K0bTI+xB;2 z&f$nh4;`Xgzn_RU?pPYX+8}woWdD5M@C`02>e~<Ho?ZI&LcyV|hf^2r`*zk%Va7I} zaFaRPZYn5l`L}Kr*P>jrjCp6ce&-q4oqF<L=#%~G|8+J$?N|NVt+DCX`}>Rk_}A1v z?>_$Od;Oxn{&KCa_McvK<lO&P6aQ~Leq2+cT3%|~CyS$-goJoM@W&V@9^#ei5i<C9 z{!RUvf5+FoZ~PxFXEE{EfA>ieoBp3<+Wh}&@!t>mf7hmdOaHZN{aX8rDb_;0$FAvC zXTSFDp6@(0TdJaW;u6P4hi<9lbC^n6b=s_WTHy4y?Og8sp9Pop@GSBEBpO<Bs(_`Z zO=i34^vRFJq?U^(rOaXR>3Zj!CFD|k_?Y2|D)FkqF5kY%EX|8A&r4I@r1rh>iCUru z>$^{<+{!=s+LdH2I_UF1{n!6_|Mce={{3J5<iASaCxzejHZp2I{_{Bf+HWGm`;Xl` z<<I<=^*#TtFZ<tnWT8gang5@ym;X0B$-%emf2YvL|5J`FGMLi&f4Pdc&;Qkr7kSAp z@ogwA-;|xZeb=pm&q41#EN1)I^}sG-)=$Q*_5FF<=89MTC}qw3ttS=H{!_TJJN`wy zgM79!@2ML~Z@W^&mWqnb+4VGd`P8Ml;sL?u&az)D4dyS~W3}Z%*LTxLYX8EU&fYoG zDy%;<FQI9|^cn3YB`I8CyI;Ou{nA%7pL^2c3wOnWv#sZ6&&qn(`8&;{HhhBBEw+G9 zANudSE2)TbSaA1^>F$`#H+Ra%a4_pX|HEG~qiww%kI3!=v90@N^82=~c=W;lx~@Xj zqbt)t{xqGecX!sLKRYUp?)q@sDe9xw$NTSC5`DEIV*VGe*17#e_c?RL_T4e-S=@Xo zKKE|?w*Td3lafz5W>JFda~`(d&%1KqQ1wau<U)nxQOCZ^oyd@K$cPKyy)U$CrOtP6 z6Vb@8540ZV2`l)wo!x#;@O_Jz)WmtL=Bg*7mfuM^WV-ya=%E)cw|G8yJxO-Q?RN%^ zttbEc{7e62zguhC|ID_vpMKjr{+rJB<j?WR|1Vxv?EY_M`BPq=OYvqAqy5~+3KM?+ zU-h=Gb;*CrN!R3^r=M8o$dYQWv6Mmjpq9d`pO<*bE4D8#TQ0aV{J`NGj&p4Ox_;qO zudm-~<@w-o&HM{x-ds9S^%nK@xutuJm|pDr{QY{E-O8zR4*s<MH~E`uWbQO6d-Jfh zEITh(9#pTg+HR#<;-s}leO+u_?15Hgj(`7rk6oS}dtz;`!=0duDS|n3Zw0?-yLM_l zhfc}mO&@1%jgw+~cmC(!$w`aupGs;p5qk5;F7u*B57T3bXEL<`r!7w%wcmK$azm5c zhUR%XT#M(K2>hS6WyZPm-QFv2Y%!a0H2HwaUhjPuYQF~lU$S;N3;&~drG$d`C=Kn} zo!+&lTSK1s)H?XSQjy-WsQtiugQ;DyKL3+{#V`7&-pMp)kI~=$m-P>qTx!4apT$$E z>7Tlnvu8`phZiq1EK+{m7yN3kzNC1U(KGqEvlA+hWl4)1JhkrC&uA^_x#0^%bTZpg zZh7}4?|Qnb<w@JLb)vhNEL<<Ybk7xEzbJ9}p#$k3*I%>`&}Y+Hcd)m+!C-amO@)tl z%nzG=vH!VvsdMRO$LZNSm5f8Io%hRjO8ynuU&b`|Zv#8WokPJ6Qi;1;FCV(x|KhNM z$E4rwtw(Z9SnE<(+$vg?7e2dedH3p9xob6_Or77sY-r=*aMB~_+8>4N$A>bckJioF zBKG)TfaLir2W!+;Ir~a!8yBi|A8s_U5@ze_NK0#+w)RGwWo9Y&iT^Syl|}3#I;K=# z{9bLOE1Wp<&+#Ywoln(&+G*pqApMj4<p1Ba+hzRzNqZ}O`#;4cQ0l}bjz9HB7&rfy zcm3xr%wVb@X1QcP%ft7l4zANH-+XB4+q>5GGk0xUu>Ixz31)1oI^TbNarN>?-hS0K zZ57qn*~=Q)Dw1zpk1zRR`(wLy_AcgU6U+{FywBswUbWVY(@tUM(sLz_7iDix6nZbu z)!le7KXZ9U@^^m5OdU=wQSXP}tCP|MLT}CdGsk1YrR){%zaFXkNqlHJ;C=SW^)Fj_ z+gVO)R@Sq=U%h#y!3?fLCWn7NE8BbRdjFArtx^MrpPlVL-X_V#G_ExJy#IY`L2B!z zdtdoW&Dz&k`?tM1yJYgM^OKWoeP?wWe~bw|KV`FVq=oR+##M7pE^alES~W|pW6_3y z){7jPDor-_!fEN<pIa;JVsu(2T1-2?_2B|Zm#6KQs(Bth{QE$0LGRVAZx2NUT-q0{ z@oQ6_lE@X$ry(nDJbRbK&&}1?HQ`@v)&BdoGG=Oy>#~}jPFl|Mdpk#@mh0qA!b{W- zZ&JUZzG=FbTf<jBmcU8vC*SJCUVYYO$@}H*;_}%y?;TC{yrht-A#Zrr)7|&2peOe; zK3{?LX6vObJrV+6MK`@t+7h<S`*!OYjpM6#ZMyO-Lzn0C#QIC=4H4UpUA}GOdPe+7 z`aI2<R=*Z#PTS(~Ttvxc1KU5=x;cyYd$dhTw&J+F%xsdvVaJ`B)0Hc?h2FiTGgbC( zaryP_=F`{DihU<M=am1fjs#@^Q|?_4R{awxid(XodE?HFuj=P~-CA0|%zn|?`}$UW zdA|R5n&$LMJ=nl*==Y1sRIJnatTWeSJC62q2aA3=&8giY)pmz(*ZJ^cbC+iyo~PII zHfrsB-{cuTCAZcDxXtBoI<>V~D^liknp%9?|I}~ytKRHScAV6*nQ`-fqu=l23SS(a z`=9?Hv&`}T-G>i)NId@h|6|A8|MMsO6~7%bSL9r9z1f2JsY}--Eu0z^wt54PwdSGS zf@Vq2Z>nCpuDkm5#Q)7T?`#*VB^T%|um5-d*uIMw^5fSXT6O1XoYXU)@X%b}`u$<k zxDUr<YW=O<xpn@6CBN?Q8)S8rJ)3t~=xxqLWr;;|7iw>E-W?xwjpuEn3ZF!v+f#;j zTfQ&3nDLqMV}IL3WgEqw^CACo=k_ky{L^7tm9wMVw<j~pt_7?3y4CldKYzYe^3o(X zLD>XFDa~hka@#kTKXc>uiE1g@s<dU-0@0POb28J4O_TH%7CdmvdXQmY^J8I{%bGh8 zvn9=gw;sH5qOfT;pBbBAp*&}@pn&rIM1$uGGCE(po4l#+iiVd^m&~tiJsGoGHcfmX z^>O9_9kqp<m&I&3X!!bHWMtN|L!3<dAA+<?wS#v1haCRE7`SAu+PzydukF9jchl*z zXr<w@srTicm+iQ2v?Fm({9G%ILybPJdFNOc8WjcX&(&a9+&sJOk%L$!Pm}*8Bl$-a zl0w(!J4nq{@-&j_s@}{ec-v3eWbK3!X~XqfEOW1`lrH(F|5jyM*oxZB?@yk+Sv}kI zHrL~sJ?TdCB0Dm2c(na`{65?HtE=YaZ0%3mapF$MtbGj+p6Qe*JXvhv$=UzHj&HdQ zmtqmu?6SjZo+Sn^H&1rzX-L*Sz4YVH2Q9W$y-g*tT5i`*ues0|-nprNf$vg__ba>) zoZ1xeY5T4S*P}a5>}`Fr?D_66%}61w=86_iL+cydDyGSc#DurbSP|NDE9d*y&HJ`L zUB&%tb=aFzGiDd`$1Gje<0E$T&beJOmAb|+R|Oh)$6gc`y~MX`*~F&k$hwf(Kc*FX zK7F6*xp`;K(_70;IVx}e(w$eT<JR&dJj3;b;ZwmUwyDd`iKRb(JkQL={{6{Y0gg&H zlP*Z}AN{=9I5L>6>A(|PwfD8bpXBawoOiu)crtIWj=Fm6w!gDO?;Li1IOSU8@3T%< z`*gUhy8rqtIk4iX-kg9vJhMX79jh`5Odc9aai+Af+?=q0Y35~j?mp$bux{qa)^lFr zn>Kyb(b~r5cUAPwmzjYXs&b2RIsVS7xVPxf+pkZ%MJf(FpC%f``(<a^>fp({z2`eT zTM(x&^2_nesT0rt{@Yc-Y9%>sr=8wBo=aXgDqIEh&M7@ssL^@9*y6{j<qY?k?x@#H zJDL&t#dG%VPk(zp_k_(%T2K_@swKsKXjVvLs2xkPpTaeU+!?9r(tYdaRJ8v(pIe+9 zJmCh9-xrsEA7%tkj1cE3)pXYAFaK6ABXjD7W&ppMOzatdr><nn=&47zJ1<VV_11wi zqeMl0!z2$CV->4ivYnov3csyA%=u|~slunVCqEiW#Lbr3|2ORDk6VJzE0St>_+)>+ zcspC*#yoAY(1L>S?FY8~4STxvd6)Cmli9~@epoYcrP|8<v3tYmao|ePi4Ri~nI*S- zwODNV;{DRq<iIH_#?+`OyN;ZDb^Te!r00&}Yo&e~q-}gXnV)~-olD<0-eG0g+46Lq z^91W7NvH20PZFQ7W74;84^`I*N4;)X5_-GqsX$kRTx{9KKl^q5>#zQQY~7ik^`)Xa zPCMyGGU!?UUvDsp{cyowbI-J&_4_-2<$Gq<<;Q$^_3NM7%9`~b3^%`Dm#43s_xS#V zsOc&{dMh?uZ!Le^ns(M#HvQ+__m&?%Ox;v>=h2tLCKC%*eDq#&<3RX?-`j5q{ayXb zKL5SgzQ*78s$Cd1+_#jpT2vfAFZum9S+Q*6uru81T72q8eCk$yUMX*U72UOxUxhvp zoU@ACsB-h6sSRwJW@l{zh3A*NHQqA$$dopfZNkktyDp0e`&1Q8D_^62cFvZ2^$+Tt ztF_iXGurlmZDZ&Eug`vMpK^Vg$We8^b)T>2Uut-gE0|p*zq6F#M$+~BLbdEsmglZ7 zyISe-Tjj>iM#T?tZReKiReJ3{`u(zX%mZD~7ZcwYy$E`D>AA^|uTS&!FIStK-1a50 zV40C~^=?TugR(5Htqb@>LasRNdb8)MYBK{*@=4D6($D{Xt($OA?y;|m;iLFHdp%hX z%n`W5;G-$nmM>K{S4?D8c$ej6pW^FJ|0PB2`ZR?vY0(P*MIJK$-yQZ}pZBhApP%*W z6(;Wk)Yt3JXqQo+mwbNqi#nU~D~*9_MUUS+^0;>I+_vt;ClbSU&FVe0bBW@t<J*lV zws~X;D9db7{$90Hd3&=^mywF{2_vDDb!Bza9tJLu(A+rJtMSy5;(OwWeFA)f3k;Ua zKAPZ?>~(SGstjMxn%=jYd3dck=1u2&_~GH7K$)+?8{(28&Tp{eeBI41-m+oevmH$= zbEZq4GoIsr=;x!rvx#2u*>mD_PVukiJC@#2J*y*Ht+K;keD$pz74t9ensIv1jJx|H zP8^6ha46!+k%%M5BIZxrSf%}#@l4OfX{|9~M>d_?vo%UW%gFCq!rV1SY$7+-eo{;i z5|a;7y>{t!k^ha@BeVWoWQqUSdw0)+S*Ow-2h6wIbNf$}*4+vDMwP4I8K$d0`+xXP z{fz(oyHEZ6|L5`M*iB!`+5XROv=M4q@W0<cu0!ba|CJa2v;Q#tC|p>v__5TZ9XTbI z3DXS!IZh4v`|otR^q1W~x^8r~ZV+52RP0hz#b)I(yK2?#WA40}+_&C+TE05s;*Bd} z9y=;NNhxPqZQHo6>g~U8-~S8W=JR!T-|P4FtBVvbTV`_mtmE6*SD*2TmRM$XSHeT) zwr|qxsN!Vil}cu}qQaA(XDS*r+HpS8&C=~>+oX2BWu8XQl6gAkmfpLWu;km4nQB>^ zEM|G1GT5fiGedLQ(`b9ezal{)GFOsVj0)xZqhe3JRhfC!(dm5Nttbh%)9IGEXGJ!L zZp&KJ{raToeaU0SJ?nWNpMJ1q^OK%7;~qZt%hx+EB--S-C;1*d*75k3!i<0Cztk`L zZ~WIj=)e0O_vS}Bs<{lBzxG>5oJ#y#ufjj$U%k~w`>RKO?@@a3MC-?w@;(E>2^N|` zQJSaDGZtODJn`=0iS0p?Hh-4Qob>sx^CqJghZetb&fR5``(7dK(ym>v{(kvB?+pKg z11GPjuT{T&FGBpUot@of`^@6xtxm>Ic|TuloPKrw+g~rH)_uB}{NcwpPvwIlE4<%z zeK{F>Yun26+b%RMt}VWC{esi{>%pa`tJkav-O=9SelDV*>vGJ~2}1uSI`ih39Jmv) z+A1&4Uej!+s~@A~-A7Z-9y2jp*5~r<DWBYeZL>~oFPguq^`hD<m$hO(Nyk&(Bz>}< z{D0=3^Xq&**$YXYiTx>jAmwNL6t_tt)BZ2rc;LzZUFZMv&E;k=zoT%`r;z#l!=Cp` zSGMft)a2XGAUDaP{L^}6&aANMHY$dn*WC|kobbJ%quN04z}3hP89$kCuYG&QX;Rcx zrC;*8vAMAYPSdk3)%{+m+ZF%1_4Gxs;TI9V1^d`qBT5~OuRq@UfUzoA_~a+GSy~I& z_>)$#GNt@m5FVeT$HeL`z*qXFSS$PQ+Hz*&e9jM&>Vksa%jC{I+{&1Kjd9kZfBL%3 zxAQ+7x>9;+&+fX?+OPAPFKs`kvvd0P{P^N&jV#3`cY+?*{r>suo0RFpyn6+?3$@E; zZCqp*(wA55y|VF1{?@Cl{-55fJbF>sZLw3M=+?pRi7zJHzPi<kM??0od-(qwtz}8q z;*(y_&-~l%zWL|1{}rM|Nn!D6tLJBa?LJ=mv%LNiqm6Kg7njz`NnDfNmvPHZl((6^ z>Z5@7dw~$cE_UCgiV`0WXT)!@+!pFD<J(pKFXQnB-5WYD_BXz_->&-Svwrg0kI~ih z4A>$shAkA$U0Twe(c0<a+LDp=RXO3iQ255j^*;-0e}DgRP4cC|%x|DhOw=l)7#+98 zJJ;|WUu^6t!98n7#F?!-IXufvb4%3v&#|pqz<a>TF#PD|i;rpyq*gC34h*}pxn-yF zmV0`+R(&>;j(<v6*25Ag(*C^3WH#sFnHEtTlT76L*&i4GtTB_xTD-8LY}wqo=a(M6 z=`*kY$;F+E&ZZX~ve;#MS3#-egl$yg^o-!lmBmr{;l?eu^97!%e0klkQ~g3@{c9hO zkouAdNlz|*>EC2{<3Z}5i#04SPHa71YhY9H_2V1`UA@A#1Jzp&J>Ga=sz2)vRu(G> zo`lum^-g}NJKHx2tbf5Uw=OkE^!uN6SNUG7Vv7<xxmfSwVzHZ#0}i?KUUK*Qs9bDP z@5|(oE99Xks4|^LNX%)KvgK6kc$q0&b6dUyw!fLk*md-2uYpUyPQew$yp;BIN5N(< zy$k=pC+m1kQTn)7VsaqsDn7PS!P?~wjB0xhd^pc^FU`C5lDF@U?p+Vos<WOuJa^%V z_s&TtI#--Lcj(Fz?dQ=eig<K*-Y(8QdvU`wf39ny2HP#0il6pLC#iinZ0KzD=Wn}U zxIv_glJ4yzM_y!yUg>Cf=<sY?#)RwcL7NWl^qVzF_|DZpG5#;57p5yUO!pV~aP!0& z&t12T|K~sZfA-J*ng7d|{NLVb>(X)GkyHP}mLL9+lMa8q-zIeWf5`Ix+Y^_j)jRRr zKFK)MR?4JYYq@38rENRsI%}P?SZICZ^W?o5-&`)Lwdlls`R$#&PG>&P>AW)8`%<}U z^LT1=-S^cdH=f<)JKO482am6;`sNeMBEB!<)y>^!D*N(>{}EfyjnDn}tUCX8TjIi> zwU>NXNPcg>9s2p(uXlgHe7bw~%dfND<@x#d_Oyr0@e5HCQ-9%f^Y-}+k+_+kxqdzA z;Iq3Edw<`~np$329UkRPXLq08z5D*Xd;1#9jF0x@6qnb2eK_q4lRMKE-cVO1@mY1( zy}U1M(Tezz(vjlCbW56ze>$t^3vP+97_pWE$2BHO2y$9=c(*PV`VuC2q4Icp*RD&~ z8+$@OguiBx?%MN~Z-(rw6t|lPBzNxjvsUHq{-5&cf8dk<8x=ec-E07jmZ^WTFPm#o z^5;3n!?_%v_UrJmD<|qa{^39E|JRVm_M6=c#e7+Q%Uw99xvZx?Cb5&fF!i?6_ui*v ztfI5O=U=*Y@tD+^qAe;$FJ!*>2RTZ9=Q#PZ^z^mo?{>eNtM~ofmGG{ezgKU2J?Yx| zuco^;m(1E_|Is;pj?ls7nO~>fSGd8JH$lHsqy5s;b^C89IO@JHo3?gs)5X;l`+hDC zH<b18Jk_yVZK{RR-71d@yggTZ)+RgOnyB|UYWeRN#UlqA6jWtrmHoM3`s41)YhQ$S zcq#4;nA;E_b(bf1%UZYWfCDYbd)E6TXTN@Z{H1%Yd8Xwp9-SH7Vj4dVs()cv7ri6O z=TJ(3boRd`Yo~l!R-CWzSMysafG6YllYffwI$SFIugG8j(D*ant$1Gjng6%i-c<2i zsqSal((PLA`b(6_$^VbYQO#K4g3Bw@Hdv~KPG&fob=fJj!v6UCt6u9Kn3u{~70zJ( z-0T(jqhIC%+f$R|4&j9i=K8a4&JyQ%bDH~-K;fmUJ;A}-wi(u55!l-lWWi}|ly&&G zfX(mj8<N+O*Z=W1uisbs+3xp(%q7Z?=6)^PS#qwfGk)cL&(8-8S5&C_@3AwVm;7VO zrSpl8cdp$2@YBTO7lNK8@@-@}b=+7fb#FmWz`~|8Dd}?Ns~ekxm(RWOfFq(*;*3^X z?9yNj0Uzr!w$_Z8$r9`4Dy$Rrzg}=^hnjJWwPTF-Jej6PQZmyscC-s0+FIO}y}Tpa zu{zZ8P*`^1OXtKWug;gs4^Jy@T&D7F%F2&D3oBdBJScpXe3B#mljTk)?#r86gE>NF zk3W_?bUQLfVdb$0i_#u8naz2#?9rlay-v~GZ!Wzm*>*as*KfY_1-4kVb!HvUr?y`e zbNG8jqWMX3Pt%I|W$z|R-u<jx<tB2z{f_BVg%cHWlOFplnN>W|#@hP%ymh~NmVB}F z?A$!5>YR6$y|HC$@no5F^{40jxnz2t*pz8jObdEqv-HeNua(79gVMEA&xd!-+n8dN zuBj&U<!JMh-(6QG+o-H`GqETV+04Gb`MA_Gru3a3ocOo6b4T_uuc?u0&`p@>yxYsW z^vp`06)9WR6r2re+}!iGSL)6m1rMeQrU$QXzyGOFvE}isISbaddA!l}lr2$u-*n=9 zspBc3>9ce;nyz(kh@0M!m8q<Hdd`zIZ+{-#^s=I%FZS-|Rg)k65SyOrTg7%dCjXR* zeA$(!6Q-nkY885~D(mdBe%$h)M#$=JWv*umm-DVEW#xa?gme~6^XE9n8XWZVK~0h5 zN~aC>F;1%t1h_8$?)j!5zvH#i^_dDW%6reTzc{txTjml5Yq^hlEZ;t<{1LfSFWWy! zoT)1Gi%dh`|3mzKd>@{xv;XL@IR2+D?P}IT);nhwJ*<6kU=qjtqau-Nk9P{~>6h5Q zxcJ}E4JA)GYh%1CTcke;{QbFN?Zg^}e!<|YQSsI*xl5Q1N{brb?|Rd8RX^dQtBr$( z>shXt#;4P7d^)aQfAd9K)Yel>-TIr4_Q(HWD!N#<_}aOd+bboDb<<~8Pq5%hK6k_P zn{BbrrRqC1^?})spWS|b^vvq`FU<NiS005cv%XRG?F~Bct&)@RzSb>~337`rE)#p1 z_<K)Fd%kGqsVeI$%B3pS)-u5#ZZNws#Vs-TSG(id(I4Cm-*4>MFLGz~!=1lhmukH$ zR6kj^I&R~pzT&N$c00XRtq*=3%DLQ<^ZBl<>Dt#0uj5)EUb>sR!&)V2*(>HRIS<V< z4;n{4D%|9DC53C@Nm1j;`W|ZWAwKU6W}GS1FP_9#^2ne2mY&d&t)^c)C%=iAn`;sp zUU9hQP5y+6+xwjqDorl*RitMX*Dk&-;X1qWxWZ|HH_Dnjc#A6h?uab6v_JjdalU>1 zGyB)_r3du>gl;(hCicI$qlLY6-?^uS#`zI9gWPwd7D}IevZg*yH285?ht!PD`@*tQ zL&DgFf2Umj-nypq?vYu-yIliTR7_7%|9W^!#tPMQ?`k$&y??vvvXb@k9&Ue;z4nZo zlNosZuYIYocw=pGE3`dd^roKX62C)LGaG7!4(|&-vTu`Gfc!Vvn;f$ms*Mis4L-7W z)AQ|hr^20;)>{SYFL-oKYsXcU?V)`>u3yVoGnZMP?kz6MHj`25><<@OwAWuZV_L7h zgY!O)@Sco%C$2AE@%}7z7oL9Le|q|fOx+rjR9neO`vrcyxIb;JU+CM*E>DhM+UH*r zb%VLpOJr5G!YaRuou41}M9(>#lG)+f`iptxrbGLMIQIul5TBlvd@#QLiofB9)61Fv z1#5|)eYJn%ulzOtj932`i~P^~W#y-*_k&*T@BHL3sp;$d){PbkU+=$K^M6{<=e3hI z<xL2lG{tlGmfYa^xfdILo?3P{=;jBmjU`cU-!O;%WWIWFouGFN8~2J<u2mC%Wj@@L zJ@M<6LtAgXGx<E(?s`+})dVTaSF394jHXPL(>1ho>)Eiw_g<#D=$vm^&)xXMmz#*1 zF8z__wN}%!c*)VGg}ZlDI)zBstTt~h-ce&HW|Sx;np$`){)*nr?UGh2ZTe5ld%~F! zqxCquXQN}G`5%=X|8Hj;KKOc7Qe95#r3Rajoh?(<HO_5WwX*P8MPzosoJkBNA2@Dn z1O$d=^e;NRJ+soOm2ab=)~UKV%I`Ep8&8WXd26~bG;jU>ee-(0J*sDYPr7Y4Nm%bU z**-IV%GI=$AB&T(u38Wy9(R7`BEOfLLbq7YdwD2q-ra`<t7S8zwYJTj+Zh_2_w44P z13!(O8#!j~k&s(3`&3z`zi+deQp%442C>?L8V;@aqXCTknT9M3ECR>Q^DrLzRZ%8l zG38aUhU@YLtAc&X-cMi26<pg@CSJd6CS!ExuaMWAAvce%aKEj!l}B}@S!svG+1S&z zujX$t)m8f(WtdwVdpYcwoYvH&ehUHZySLd3GxQpIWAhfyo;EkPS83hSO?7v)`d_5- z?mcmFYt*ZL|FYFg%af)*yYk{fq~TS|nMntZJ5Q?V5PI1k*`sppRZpeVomab$&(?~_ zoZB}=bn)2@QHsxZbjJ&@D)otVKWy9_IwL1k^U^oj9d_Z0r(JvYR4?NA*Y3-7s48Jy zO0>ip?a3QrZ0f@ng~>?GU3Ml^``nX5v$<H;F(}yzpVXG?O=)xcd2t2T&(p4p`)}p# zGnvwVUc9@lM?&<V(*DQctV>>0a(tfpIDl>CzA_(;HvUT2UsW={X8yPT{9pgYe|s?% zPYY>-|Mk!Q`~UfG|MJ%J=HLIlnLQ^R{2wpY-aOG@TIc`&4L|>1fAOFHSdZJb2!=Py z_6J^D_2}2r-K`&1af<v9T^K9=-}_O{?m5%Nwc-yr+&E}2!zS?UZGXbcb=~%7)Z4r5 zWsV;DxAOXQTNx&P;}s`*W$S$mE^S=mZ_Vg`)$i>FKh4Y=9s8IfW(&y5pXynrw*B0U zDZcI%ix=BHyzH5``p32xr_bJ9Qd$1@)vs5!%U9nyeS7=*omctXrx)%2TT@%z`{3t^ zzbANSY3}uzFY-F`lFjtz$(1_u&aya4&gI{-a6#XbjRkdPR@TB#H=4xooNM{0qnY0D zv2yLq$z3(egdR*W+$o)ves=zrsgu_36h2n}UT}KZzYv~G&p%0qdX~H6toWYQ*=Mgh zput>ga6O)Dom=cq<6lz`G{0H-L{4aeC+n^K7Zz41Dox`Top|?@v;U{yM<MQ7PF?*` z2PYqT^Wb0L$_v`zH+XlgpS9dl$G7X~T^$)+ap%)+mPH#jd+mtadS;DW+_Z@;PamgD zHQ4m0W{rfj*2$w?#v3o$tYH!hYifR)nxObEv`^&wQj7dAm-cAS(PN$LqmUn3urXQu zPg!F5hpdg34w35|-gI)X3kFQ}XI#a~!YWmGFoji3+aR*>B-eSDunxV6FRz!Lc3&C( zTK@Us&55(#EpJLZ@Z3~;>f!`Zmb1xjMR&ALPJH$ILC7DUzBZ1h6Bd@pKAoldNM?ni z;guCkrd`(~$^su(T%Eew<fq}06(QOyPdmSTP%%;HOWmBSYcqPgmt9?!x^q>i{bw=x z?vR(Sb&F>%dVQSv?Tx8A$!8SR0}mVRXIxsb@zkuNv*(;vv_1b+Bd&9k-?_l^Q7)mz zXZSBJD!H{aGdz0Q469QXOT~7_oOaaLIK9W9=h}5W_xW85mm43=spXy5vzq(L?AJ`k zn!~SMx$=y|eyv#qYsCiEhy};XyykmaEY;e$RdMO(JI{qCifUcvS9f5@sJ_3x@me0J zyPy4DMNj9?=7#c{Lg8DFh~LZ6j>}D&5-7gs>yifRMaD`$Yb{h(?my%D=9G+yW8%c8 zntJXmi8Vs*?Nh~e+c8Y>mQfPYIN$sB*1B0&=AQf%A(h_rck;3onFs0*Jv0dD`;os_ zdxpMJ&$Qemr7v5h+?*d2+}K<ozvuNL`N##)@{A{0pR78;!B|myM8*EZQeoywvsp!x g7)#zHiSNE~RIhAfcPtW9z3#7hZwdD`h6St)02THexc~qF literal 0 HcmV?d00001 diff --git a/dbrepo-upload-service/pom.xml b/dbrepo-upload-service/pom.xml index f2bea09236..8f4506e150 100644 --- a/dbrepo-upload-service/pom.xml +++ b/dbrepo-upload-service/pom.xml @@ -11,7 +11,7 @@ <groupId>at.tuwien</groupId> <artifactId>dbrepo-upload-service</artifactId> <name>dbrepo-upload-service</name> - <version>1.6.1</version> + <version>1.6.2</version> <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> <developers> diff --git a/helm/dbrepo/Chart.lock b/helm/dbrepo/Chart.lock index b18ee6f5f6..4d2cafe9bd 100644 --- a/helm/dbrepo/Chart.lock +++ b/helm/dbrepo/Chart.lock @@ -4,7 +4,7 @@ dependencies: version: 1.4.0 - name: keycloak repository: https://charts.bitnami.com/bitnami - version: 21.6.1 + version: 21.6.2 - name: mariadb-galera repository: https://charts.bitnami.com/bitnami version: 13.2.7 diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index 22d1865df5..802f33888c 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.1" -appVersion: "1.6.1" +version: "1.6.2" +appVersion: "1.6.2" keywords: - dbrepo maintainers: diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 7c613aaebc..e703787206 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.1" +helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.6.2" ``` ## Prerequisites @@ -28,7 +28,7 @@ helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" 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.1" +helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.6.2" ``` The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 34db1f569f..84cf7b5ddd 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -116,7 +116,7 @@ authservice: setupJob: image: ## @skip authservice.setupJob.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.2 ## @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) @@ -392,7 +392,7 @@ analyseservice: enabled: true image: ## @skip analyseservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.2 ## 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 @@ -453,7 +453,7 @@ metadataservice: enabled: true image: ## @skip metadataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 ## 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 @@ -550,7 +550,7 @@ dataservice: endpoint: http://data-service image: ## @skip dataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.2 ## 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 @@ -636,7 +636,7 @@ searchservice: endpoint: http://search-service image: ## @skip searchservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.2 ## 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 @@ -683,7 +683,7 @@ searchservice: init: image: ## @skip searchservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.2 ## @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) @@ -744,7 +744,7 @@ storageservice: init: image: ## @skip storageservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.2 s3: ## @param storageservice.init.s3.endpoint The S3-capable endpoint the microservice connects to. endpoint: http://storage-service-s3:8333 @@ -853,7 +853,7 @@ ui: enabled: true image: ## @skip ui.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.1 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.2 ## 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 710e9d55a1..3ccfd30b21 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash # preset -VERSION="1.6.1" +VERSION="1.6.2" MIN_CPU=8 MIN_RAM=4 MIN_MAP_COUNT=262144 diff --git a/lib/python/docs/index.rst b/lib/python/docs/index.rst index 0a989f321f..13561e9c13 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.1, earlier versions may be supported but are not tested for compatibility. + The SDK has been implemented and documented for DBRepo version 1.6.2, 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 33d1e52cc0..5b8deb8408 100644 --- a/lib/python/pyproject.toml +++ b/lib/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dbrepo" -version = "1.6.1" +version = "1.6.2" description = "DBRepo Python Library" keywords = [ "DBRepo", diff --git a/lib/python/setup.py b/lib/python/setup.py index 027b8a5bb6..c6deff531d 100644 --- a/lib/python/setup.py +++ b/lib/python/setup.py @@ -2,7 +2,7 @@ from distutils.core import setup setup(name="dbrepo", - version="1.6.1", + version="1.6.2", description="A library for communicating with DBRepo", url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/", author="Martin Weise", diff --git a/sonar-project.properties b/sonar-project.properties index d354d54608..83f00a3a24 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.1 +sonar.projectVersion=1.6.2 # general sonar.qualitygate.wait=true sonar.projectCreation.mainBranchName=master -- GitLab From 49c41d420ea479b6a09d6864b69529b2648e629f Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 10:52:40 +0100 Subject: [PATCH 02/52] It builds somehow Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 6 +- .../lib/dbrepo-1.6.2.tar.gz | Bin 40056 -> 40094 bytes .../at/tuwien/endpoints/AccessEndpoint.java | 18 +- .../at/tuwien/endpoints/DatabaseEndpoint.java | 32 +- ...bstractEndpoint.java => RestEndpoint.java} | 2 +- .../at/tuwien/endpoints/SubsetEndpoint.java | 25 +- .../at/tuwien/endpoints/TableEndpoint.java | 58 +- .../at/tuwien/endpoints/ViewEndpoint.java | 41 +- .../tuwien/validation/EndpointValidator.java | 14 +- .../java/at/tuwien/config/MariaDbConfig.java | 223 +----- .../endpoint/AccessEndpointUnitTest.java | 36 +- .../endpoint/DatabaseEndpointUnitTest.java | 60 +- .../endpoint/SubsetEndpointUnitTest.java | 178 ++--- .../endpoint/TableEndpointUnitTest.java | 195 ++--- .../tuwien/endpoint/ViewEndpointUnitTest.java | 62 +- .../MetadataServiceGatewayUnitTest.java | 129 +--- .../DefaultListenerIntegrationTest.java | 6 +- .../listener/DefaultListenerUnitTest.java | 6 +- .../at/tuwien/mvc/SubsetEndpointMvcTest.java | 12 +- .../service/AccessServiceIntegrationTest.java | 36 +- .../ContainerServiceIntegrationTest.java | 109 +++ .../service/CredentialServiceUnitTest.java | 96 +-- .../DatabaseServiceIntegrationTest.java | 676 +++++++++++++++++- .../service/QueueServiceIntegrationTest.java | 14 +- .../service/SchemaServiceIntegrationTest.java | 416 ----------- .../service/SubsetServiceIntegrationTest.java | 56 +- .../service/TableServiceIntegrationTest.java | 377 ++-------- .../service/ViewServiceIntegrationTest.java | 45 +- .../java/at/tuwien/config/CacheConfig.java | 30 +- .../gateway/MetadataServiceGateway.java | 31 +- .../impl/MetadataServiceGatewayImpl.java | 120 ++-- .../at/tuwien/listener/DefaultListener.java | 8 +- .../java/at/tuwien/mapper/MariaDbMapper.java | 12 +- .../java/at/tuwien/mapper/MetadataMapper.java | 28 +- .../java/at/tuwien/service/AccessService.java | 11 +- .../at/tuwien/service/ContainerService.java | 33 + .../at/tuwien/service/CredentialService.java | 20 +- .../at/tuwien/service/DatabaseService.java | 85 ++- .../java/at/tuwien/service/QueueService.java | 4 +- .../java/at/tuwien/service/SchemaService.java | 33 - .../java/at/tuwien/service/SubsetService.java | 36 +- .../java/at/tuwien/service/TableService.java | 64 +- .../java/at/tuwien/service/ViewService.java | 50 +- .../impl/AccessServiceMariaDbImpl.java | 20 +- .../impl/ContainerServiceMariaDbImpl.java | 103 +++ .../service/impl/CredentialServiceImpl.java | 60 +- .../at/tuwien/service/impl/DataConnector.java | 66 ++ .../impl/DatabaseServiceMariaDbImpl.java | 341 ++++++++- .../service/impl/HibernateConnector.java | 53 -- .../impl/QueueServiceRabbitMqImpl.java | 10 +- .../impl/SchemaServiceMariaDbImpl.java | 164 ----- .../impl/SubsetServiceMariaDbImpl.java | 88 +-- .../service/impl/TableServiceMariaDbImpl.java | 169 ++--- .../service/impl/ViewServiceMariaDbImpl.java | 168 +---- .../main/java/at/tuwien/api/CacheableDto.java | 45 ++ .../at/tuwien/api/PrivilegedObjectDto.java | 18 - .../at/tuwien/api/container/ContainerDto.java | 25 +- .../internal/PrivilegedContainerDto.java | 60 -- .../tuwien/api/database/DatabaseBriefDto.java | 3 + .../at/tuwien/api/database/DatabaseDto.java | 52 +- .../java/at/tuwien/api/database/ViewDto.java | 36 +- .../internal/PrivilegedDatabaseDto.java | 88 --- .../database/internal/PrivilegedViewDto.java | 77 -- .../tuwien/api/database/table/TableDto.java | 36 +- .../table/internal/PrivilegedTableDto.java | 115 --- .../api/identifier/IdentifierBriefDto.java | 2 - .../main/java/at/tuwien/api/user/UserDto.java | 14 +- .../api/user/internal/PrivilegedUserDto.java | 58 -- .../java/at/tuwien/mapper/MetadataMapper.java | 72 +- .../at/tuwien/endpoints/DatabaseEndpoint.java | 76 +- .../at/tuwien/endpoints/TableEndpoint.java | 6 +- .../endpoints/DatabaseEndpointUnitTest.java | 8 +- .../gateway/DataServiceGatewayUnitTest.java | 14 +- .../gateway/SearchServiceGatewayUnitTest.java | 18 +- .../tuwien/mapper/MetadataMapperUnitTest.java | 6 - .../tuwien/service/AccessServiceUnitTest.java | 32 +- ...aCiteIdentifierServicePersistenceTest.java | 18 +- .../service/DatabaseServiceUnitTest.java | 16 +- .../IdentifierServicePersistenceTest.java | 4 +- .../service/TableServicePersistenceTest.java | 2 +- .../tuwien/service/TableServiceUnitTest.java | 20 +- .../service/ViewServicePersistenceTest.java | 2 +- .../tuwien/service/ViewServiceUnitTest.java | 4 +- .../tuwien/gateway/SearchServiceGateway.java | 4 +- .../impl/SearchServiceGatewayImpl.java | 8 +- .../java/at/tuwien/test/AbstractUnitTest.java | 50 +- .../main/java/at/tuwien/test/BaseTest.java | 134 ++-- dbrepo-search-service/Pipfile.lock | 2 +- dbrepo-search-service/init/Pipfile.lock | 17 +- .../init/lib/dbrepo-1.6.2.tar.gz | Bin 40056 -> 40094 bytes dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz | Bin 40056 -> 40094 bytes .../table/[table_id]/settings.vue | 2 +- lib/python/dbrepo/api/dto.py | 46 +- 93 files changed, 2616 insertions(+), 3309 deletions(-) rename dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/{AbstractEndpoint.java => RestEndpoint.java} (98%) create mode 100644 dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java delete mode 100644 dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java create mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/ContainerService.java delete mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/SchemaService.java create mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java create mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java delete mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java delete mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SchemaServiceMariaDbImpl.java create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/PrivilegedObjectDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/internal/PrivilegedContainerDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedDatabaseDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedViewDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/PrivilegedTableDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/internal/PrivilegedUserDto.java diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 9f00d97ca6..ec9b5f13d4 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -412,7 +412,7 @@ }, "dbrepo": { "hashes": [ - "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" + "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1612,7 +1612,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" }, "werkzeug": { @@ -2236,7 +2236,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" }, "wrapt": { diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz index 58081673e955d89fccf70c9161037a725b647f71..02ed2aec31c2b1881165a12d45060ed4a311192d 100644 GIT binary patch delta 39303 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 R=>>ny-)xbb%dmiz0RTX?Dir_# delta 39288 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 LHtuT-3s@NdgDHfU 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 7947e87a49..99df658030 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 @@ -1,9 +1,9 @@ package at.tuwien.endpoints; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.UpdateDatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.error.ApiErrorDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.*; import at.tuwien.service.AccessService; import at.tuwien.service.CredentialService; @@ -29,7 +29,7 @@ import java.util.UUID; @RestController @CrossOrigin(origins = "*") @RequestMapping(path = "/api/database/{databaseId}/access") -public class AccessEndpoint extends AbstractEndpoint { +public class AccessEndpoint extends RestEndpoint { private final AccessService accessService; private final CredentialService credentialService; @@ -80,8 +80,8 @@ public class AccessEndpoint extends AbstractEndpoint { throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseMalformedException, MetadataServiceException { log.debug("endpoint give access to database, databaseId={}, userId={}", databaseId, userId); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); - final PrivilegedUserDto user = credentialService.getUser(userId); + final DatabaseDto database = credentialService.getDatabase(databaseId); + final UserDto user = credentialService.getUser(userId); if (database.getAccesses().stream().anyMatch(a -> a.getUser().getId().equals(userId))) { log.error("Failed to create access to user with id {}: already has access", userId); throw new NotAllowedException("Failed to create access to user with id " + userId + ": already has access"); @@ -137,8 +137,8 @@ public class AccessEndpoint extends AbstractEndpoint { DatabaseMalformedException, MetadataServiceException { log.debug("endpoint modify access to database, databaseId={}, userId={}, access.type={}", databaseId, userId, access.getType()); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); - final PrivilegedUserDto user = credentialService.getUser(userId); + final DatabaseDto database = credentialService.getDatabase(databaseId); + final UserDto user = credentialService.getUser(userId); if (database.getAccesses().stream().noneMatch(a -> a.getHuserid().equals(userId))) { log.error("Failed to update access to user with id {}: no access", userId); throw new NotAllowedException("Failed to update access to user with id " + userId + ": no access"); @@ -208,8 +208,8 @@ public class AccessEndpoint extends AbstractEndpoint { DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseMalformedException, MetadataServiceException { log.debug("endpoint revoke access to database, databaseId={}, userId={}", databaseId, userId); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); - final PrivilegedUserDto user = credentialService.getUser(userId); + final DatabaseDto database = credentialService.getDatabase(databaseId); + final UserDto user = credentialService.getUser(userId); if (database.getAccesses().stream().noneMatch(a -> a.getUser().getId().equals(userId))) { log.error("Failed to delete access to user with id {}: no access", userId); throw new NotAllowedException("Failed to delete access to user with id " + userId + ": no access"); 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 d101a8c973..27848cf517 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 @@ -1,19 +1,17 @@ package at.tuwien.endpoints; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.internal.CreateDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.error.ApiErrorDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.user.UserDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.exception.*; -import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.AccessService; +import at.tuwien.service.ContainerService; import at.tuwien.service.CredentialService; import at.tuwien.service.DatabaseService; -import at.tuwien.service.SubsetService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; @@ -35,21 +33,19 @@ import java.sql.SQLException; @RestController @CrossOrigin(origins = "*") @RequestMapping(path = "/api/database") -public class DatabaseEndpoint extends AbstractEndpoint { +public class DatabaseEndpoint extends RestEndpoint { - private final SubsetService queryService; private final AccessService accessService; - private final MetadataMapper metadataMapper; private final DatabaseService databaseService; + private final ContainerService containerService; private final CredentialService credentialService; @Autowired - public DatabaseEndpoint(SubsetService queryService, AccessService accessService, MetadataMapper metadataMapper, - DatabaseService databaseService, CredentialService credentialService) { - this.queryService = queryService; + public DatabaseEndpoint(AccessService accessService, DatabaseService databaseService, + ContainerService containerService, CredentialService credentialService) { this.accessService = accessService; - this.metadataMapper = metadataMapper; this.databaseService = databaseService; + this.containerService = containerService; this.credentialService = credentialService; } @@ -90,18 +86,18 @@ public class DatabaseEndpoint extends AbstractEndpoint { DatabaseMalformedException, QueryStoreCreateException, MetadataServiceException { log.debug("endpoint create database, data.containerId={}, data.internalName={}, data.username={}", data.getContainerId(), data.getInternalName(), data.getUsername()); - final PrivilegedContainerDto container = credentialService.getContainer(data.getContainerId()); + final ContainerDto container = credentialService.getContainer(data.getContainerId()); try { - final PrivilegedDatabaseDto database = databaseService.create(container, data); - queryService.createQueryStore(container, data.getInternalName()); - final PrivilegedUserDto user = PrivilegedUserDto.builder() + final DatabaseDto database = containerService.createDatabase(container, data); + containerService.createQueryStore(container, data.getInternalName()); + final UserDto user = UserDto.builder() .id(data.getUserId()) .username(data.getUsername()) .password(data.getPassword()) .build(); accessService.create(database, user, AccessTypeDto.WRITE_ALL); return ResponseEntity.status(HttpStatus.CREATED) - .body(metadataMapper.privilegedDatabaseDtoToDatabaseDto(database)); + .body(database); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -138,7 +134,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { DatabaseMalformedException, MetadataServiceException { log.debug("endpoint update user password in database, databaseId={}, data.username={}", databaseId, data.getUsername()); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); try { databaseService.update(database, data); return ResponseEntity.status(HttpStatus.ACCEPTED) diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java similarity index 98% rename from dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java rename to dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java index 87a4d32532..333e0c8398 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; -public abstract class AbstractEndpoint { +public abstract class RestEndpoint { public boolean hasRole(Principal principal, String role) { if (principal == null || role == null) { 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 f30251a5ff..ed867715e1 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 @@ -1,9 +1,9 @@ package at.tuwien.endpoints; import at.tuwien.ExportResourceDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.database.query.ExecuteStatementDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.query.QueryPersistDto; @@ -46,25 +46,25 @@ import java.util.UUID; @RestController @CrossOrigin(origins = "*") @RequestMapping(path = "/api/database/{databaseId}/subset") -public class SubsetEndpoint extends AbstractEndpoint { +public class SubsetEndpoint extends RestEndpoint { - private final SchemaService schemaService; private final SubsetService subsetService; private final MetadataMapper metadataMapper; private final MetricsService metricsService; private final StorageService storageService; + private final DatabaseService databaseService; private final CredentialService credentialService; private final EndpointValidator endpointValidator; @Autowired - public SubsetEndpoint(SchemaService schemaService, SubsetService subsetService, MetadataMapper metadataMapper, - MetricsService metricsService, StorageService storageService, + public SubsetEndpoint(SubsetService subsetService, MetadataMapper metadataMapper, MetricsService metricsService, + StorageService storageService, DatabaseService databaseService, CredentialService credentialService, EndpointValidator endpointValidator) { - this.schemaService = schemaService; this.subsetService = subsetService; this.metadataMapper = metadataMapper; this.metricsService = metricsService; this.storageService = storageService; + this.databaseService = databaseService; this.credentialService = credentialService; this.endpointValidator = endpointValidator; } @@ -102,7 +102,7 @@ public class SubsetEndpoint extends AbstractEndpoint { throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, QueryNotFoundException, NotAllowedException, MetadataServiceException { log.debug("endpoint find subsets in database, databaseId={}, filterPersisted={}", databaseId, filterPersisted); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); endpointValidator.validateOnlyPrivateSchemaAccess(database, principal); final List<QueryDto> queries; try { @@ -164,7 +164,7 @@ public class SubsetEndpoint extends AbstractEndpoint { NotAllowedException { log.debug("endpoint find subset in database, databaseId={}, subsetId={}, accept={}, timestamp={}", databaseId, subsetId, accept, timestamp); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); endpointValidator.validateOnlyPrivateSchemaAccess(database, principal); final QueryDto subset; try { @@ -286,7 +286,7 @@ public class SubsetEndpoint extends AbstractEndpoint { log.debug("timestamp not set: default to {}", timestamp); } /* create */ - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); endpointValidator.validateOnlyPrivateSchemaAccess(database, principal); try { final Long subsetId = subsetService.create(database, data.getStatement(), timestamp, userId); @@ -345,7 +345,7 @@ public class SubsetEndpoint extends AbstractEndpoint { log.debug("endpoint get subset data, databaseId={}, subsetId={}, principal.name={} page={}, size={}", databaseId, subsetId, principal != null ? principal.getName() : null, page, size); endpointValidator.validateDataParams(page, size); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); if (!database.getIsPublic()) { if (principal == null) { log.error("Failed to re-execute query: no authentication found"); @@ -377,7 +377,8 @@ public class SubsetEndpoint extends AbstractEndpoint { } final Dataset<Row> dataset = subsetService.getData(database, subset, page, size); metricsService.countSubsetGetData(databaseId, subsetId); - final ViewDto view = schemaService.inspectView(database, metadataMapper.queryDtoToViewName(subset)); + final String viewName = metadataMapper.queryDtoToViewName(subset); + final ViewDto view = databaseService.inspectView(database, viewName); headers.set("Access-Control-Expose-Headers", "X-Id X-Headers"); headers.set("X-Headers", String.join(",", view.getColumns().stream().map(ViewColumnDto::getInternalName).toList())); return ResponseEntity.status(request.getMethod().equals("POST") ? HttpStatus.CREATED : HttpStatus.OK) @@ -435,7 +436,7 @@ public class SubsetEndpoint extends AbstractEndpoint { DatabaseUnavailableException, QueryNotFoundException, UserNotFoundException, MetadataServiceException { log.debug("endpoint persist query, databaseId={}, queryId={}, data.persist={}, principal.name={}", databaseId, queryId, data.getPersist(), principal.getName()); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); credentialService.getAccess(databaseId, getId(principal)); try { subsetService.persist(database, queryId, data.getPersist()); 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 f0ec00a035..077ec5b819 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 @@ -3,11 +3,9 @@ package at.tuwien.endpoints; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.DatabaseAccessDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.exception.*; @@ -47,24 +45,24 @@ import java.util.Map; @RestController @CrossOrigin(origins = "*") @RequestMapping(path = "/api/database/{databaseId}/table") -public class TableEndpoint extends AbstractEndpoint { +public class TableEndpoint extends RestEndpoint { private final TableService tableService; - private final SchemaService schemaService; private final MetricsService metricsService; private final StorageService storageService; + private final DatabaseService databaseService; private final CredentialService credentialService; private final EndpointValidator endpointValidator; private final MetadataServiceGateway metadataServiceGateway; @Autowired - public TableEndpoint(TableService tableService, SchemaService schemaService, MetricsService metricsService, - StorageService storageService, CredentialService credentialService, + public TableEndpoint(TableService tableService, MetricsService metricsService, StorageService storageService, + DatabaseService databaseService, CredentialService credentialService, EndpointValidator endpointValidator, MetadataServiceGateway metadataServiceGateway) { this.tableService = tableService; - this.schemaService = schemaService; this.metricsService = metricsService; this.storageService = storageService; + this.databaseService = databaseService; this.credentialService = credentialService; this.endpointValidator = endpointValidator; this.metadataServiceGateway = metadataServiceGateway; @@ -113,11 +111,11 @@ public class TableEndpoint extends AbstractEndpoint { throw new TableMalformedException("Table must have a primary key"); } /* create */ - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); try { - final TableDto table = tableService.createTable(database, data); + final TableDto table = databaseService.createTable(database, data); return ResponseEntity.status(HttpStatus.CREATED) - .body(schemaService.inspectTable(database, table.getInternalName())); + .body(databaseService.inspectTable(database, table.getInternalName())); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -157,7 +155,7 @@ public class TableEndpoint extends AbstractEndpoint { TableMalformedException, DatabaseUnavailableException, TableNotFoundException, MetadataServiceException { log.debug("endpoint update table, databaseId={}, data.description={}", databaseId, data.getDescription()); /* create */ - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); try { tableService.updateTable(table, data); return ResponseEntity.status(HttpStatus.ACCEPTED) @@ -200,7 +198,7 @@ public class TableEndpoint extends AbstractEndpoint { throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, QueryMalformedException, MetadataServiceException { log.debug("endpoint delete table, databaseId={}, tableId={}", databaseId, tableId); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); try { tableService.delete(table); return ResponseEntity.status(HttpStatus.ACCEPTED) @@ -253,7 +251,7 @@ public class TableEndpoint extends AbstractEndpoint { @NotNull HttpServletRequest request, Principal principal) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, - PaginationException, MetadataServiceException, NotAllowedException { + PaginationException, MetadataServiceException, NotAllowedException, DatabaseNotFoundException { log.debug("endpoint get table data, databaseId={}, tableId={}, timestamp={}, page={}, size={}", databaseId, tableId, timestamp, page, size); endpointValidator.validateDataParams(page, size); @@ -270,7 +268,7 @@ public class TableEndpoint extends AbstractEndpoint { timestamp = Instant.now(); log.debug("timestamp not set: default to {}", timestamp); } - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); if (!table.getIsPublic()) { if (principal == null) { log.error("Failed find table data: authentication required"); @@ -289,8 +287,8 @@ public class TableEndpoint extends AbstractEndpoint { } headers.set("Access-Control-Expose-Headers", "X-Headers"); headers.set("X-Headers", String.join(",", table.getColumns().stream().map(ColumnDto::getInternalName).toList())); - final Dataset<Row> dataset = tableService.getData(table.getDatabase(), table.getInternalName(), timestamp, - null, null, null, null); + final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(table.getTdbid()), + table.getInternalName(), timestamp, null, null, null, null); metricsService.countTableGetData(databaseId, tableId); return ResponseEntity.ok() .headers(headers) @@ -340,7 +338,7 @@ public class TableEndpoint extends AbstractEndpoint { TableMalformedException, QueryMalformedException, NotAllowedException, StorageUnavailableException, StorageNotFoundException, MetadataServiceException { log.debug("endpoint insert raw table data, databaseId={}, tableId={}", databaseId, tableId); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); final DatabaseAccessDto access = credentialService.getAccess(databaseId, getId(principal)); endpointValidator.validateOnlyWriteOwnOrWriteAllAccess(access.getType(), table.getOwner().getId(), getId(principal)); try { @@ -393,7 +391,7 @@ public class TableEndpoint extends AbstractEndpoint { TableMalformedException, QueryMalformedException, NotAllowedException, MetadataServiceException { log.debug("endpoint update raw table data, databaseId={}, tableId={}, data.keys={}", databaseId, tableId, data.getKeys()); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); final DatabaseAccessDto access = credentialService.getAccess(databaseId, getId(principal)); endpointValidator.validateOnlyWriteOwnOrWriteAllAccess(access.getType(), table.getOwner().getId(), getId(principal)); try { @@ -446,7 +444,7 @@ public class TableEndpoint extends AbstractEndpoint { TableMalformedException, QueryMalformedException, NotAllowedException, MetadataServiceException { log.debug("endpoint delete raw table data, databaseId={}, tableId={}, data.keys={}", databaseId, tableId, data.getKeys()); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); final DatabaseAccessDto access = credentialService.getAccess(databaseId, getId(principal)); endpointValidator.validateOnlyWriteOwnOrWriteAllAccess(access.getType(), table.getOwner().getId(), getId(principal)); try { @@ -506,7 +504,7 @@ public class TableEndpoint extends AbstractEndpoint { log.debug("size not set: default to 100L"); size = 100L; } - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); if (!table.getIsPublic()) { if (principal == null) { log.error("Failed to find table history: no authentication found"); @@ -565,9 +563,9 @@ public class TableEndpoint extends AbstractEndpoint { throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, DatabaseMalformedException, TableNotFoundException, MetadataServiceException { log.debug("endpoint inspect table schemas, databaseId={}", databaseId); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); try { - return ResponseEntity.ok(tableService.getSchemas(database)); + return ResponseEntity.ok(databaseService.exploreTables(database)); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -611,14 +609,14 @@ public class TableEndpoint extends AbstractEndpoint { @RequestParam(required = false) Instant timestamp, Principal principal) throws RemoteUnavailableException, TableNotFoundException, NotAllowedException, StorageUnavailableException, - QueryMalformedException, MetadataServiceException { + QueryMalformedException, MetadataServiceException, DatabaseNotFoundException { log.debug("endpoint export table data, databaseId={}, tableId={}, timestamp={}", databaseId, tableId, timestamp); /* parameters */ if (timestamp == null) { timestamp = Instant.now(); log.debug("timestamp not set: default to {}", timestamp); } - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); if (!table.getIsPublic()) { if (principal == null) { log.error("Failed to export private table: principal is null"); @@ -626,8 +624,8 @@ public class TableEndpoint extends AbstractEndpoint { } credentialService.getAccess(databaseId, getId(principal)); } - final Dataset<Row> dataset = tableService.getData(table.getDatabase(), table.getInternalName(), timestamp, null, - null, null, null); + final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(table.getTdbid()), + table.getInternalName(), timestamp, null, null, null, null); metricsService.countTableGetData(databaseId, tableId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); @@ -677,7 +675,7 @@ public class TableEndpoint extends AbstractEndpoint { StorageNotFoundException, MalformedException, StorageUnavailableException, QueryMalformedException, DatabaseUnavailableException { log.debug("endpoint insert table data, databaseId={}, tableId={}, data.location={}", databaseId, tableId, data.getLocation()); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); final DatabaseAccessDto access = credentialService.getAccess(databaseId, getId(principal)); endpointValidator.validateOnlyWriteOwnOrWriteAllAccess(access.getType(), table.getOwner().getId(), getId(principal)); if (data.getLineTermination() == null) { @@ -725,11 +723,11 @@ public class TableEndpoint extends AbstractEndpoint { public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull @PathVariable("tableId") Long tableId) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, - MetadataServiceException, TableMalformedException { + MetadataServiceException, TableMalformedException, DatabaseNotFoundException { log.debug("endpoint generate table statistic, databaseId={}, tableId={}", databaseId, tableId); - final PrivilegedTableDto table = credentialService.getTable(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); try { - return ResponseEntity.ok(tableService.getStatistics(table)); + return ResponseEntity.ok(tableService.getStatistics(credentialService.getDatabase(table.getTdbid()), table)); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database", e); 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 2b0463483d..c662bf49c1 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 @@ -1,11 +1,10 @@ package at.tuwien.endpoints; import at.tuwien.ExportResourceDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.exception.*; import at.tuwien.service.*; @@ -42,23 +41,25 @@ import java.util.Map; @RestController @CrossOrigin(origins = "*") @RequestMapping(path = "/api/database/{databaseId}/view") -public class ViewEndpoint extends AbstractEndpoint { +public class ViewEndpoint extends RestEndpoint { private final ViewService viewService; private final TableService tableService; private final MetricsService metricsService; private final StorageService storageService; + private final DatabaseService databaseService; private final CredentialService credentialService; private final EndpointValidator endpointValidator; @Autowired public ViewEndpoint(ViewService viewService, TableService tableService, MetricsService metricsService, - StorageService storageService, CredentialService credentialService, - EndpointValidator endpointValidator) { + StorageService storageService, DatabaseService databaseService, + CredentialService credentialService, EndpointValidator endpointValidator) { this.viewService = viewService; this.tableService = tableService; this.metricsService = metricsService; this.storageService = storageService; + this.databaseService = databaseService; this.credentialService = credentialService; this.endpointValidator = endpointValidator; } @@ -102,11 +103,11 @@ public class ViewEndpoint extends AbstractEndpoint { }) public ResponseEntity<List<ViewDto>> getSchema(@NotNull @PathVariable("databaseId") Long databaseId) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, - ViewNotFoundException, DatabaseMalformedException, MetadataServiceException { + DatabaseMalformedException, MetadataServiceException, ViewNotFoundException { log.debug("endpoint inspect view schemas, databaseId={}", databaseId); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); try { - return ResponseEntity.ok(viewService.getSchemas(database)); + return ResponseEntity.ok(databaseService.exploreViews(database)); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -149,10 +150,10 @@ public class ViewEndpoint extends AbstractEndpoint { @Valid @RequestBody ViewCreateDto data) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, ViewMalformedException, MetadataServiceException { log.debug("endpoint create view, databaseId={}, data.name={}", databaseId, data.getName()); - final PrivilegedDatabaseDto database = credentialService.getDatabase(databaseId); + final DatabaseDto database = credentialService.getDatabase(databaseId); try { return ResponseEntity.status(HttpStatus.CREATED) - .body(viewService.create(database, data)); + .body(databaseService.createView(database, data)); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -193,9 +194,9 @@ public class ViewEndpoint extends AbstractEndpoint { throws DatabaseUnavailableException, RemoteUnavailableException, ViewNotFoundException, ViewMalformedException, MetadataServiceException { log.debug("endpoint delete view, databaseId={}, viewId={}", databaseId, viewId); - final PrivilegedViewDto view = credentialService.getView(databaseId, viewId); + final ViewDto view = credentialService.getView(databaseId, viewId); try { - viewService.delete(view.getDatabase(), view.getInternalName()); + viewService.delete(view); return ResponseEntity.status(HttpStatus.ACCEPTED) .build(); } catch (SQLException e) { @@ -251,7 +252,7 @@ public class ViewEndpoint extends AbstractEndpoint { @NotNull HttpServletRequest request, Principal principal) throws DatabaseUnavailableException, RemoteUnavailableException, ViewNotFoundException, PaginationException, - QueryMalformedException, NotAllowedException, MetadataServiceException, TableNotFoundException { + QueryMalformedException, NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { log.debug("endpoint get view data, databaseId={}, viewId={}, page={}, size={}, timestamp={}", databaseId, viewId, page, size, timestamp); endpointValidator.validateDataParams(page, size); @@ -268,7 +269,7 @@ public class ViewEndpoint extends AbstractEndpoint { timestamp = Instant.now(); log.debug("timestamp not set: default to {}", timestamp); } - final PrivilegedViewDto view = credentialService.getView(databaseId, viewId); + final ViewDto view = credentialService.getView(databaseId, viewId); if (!view.getIsPublic()) { if (principal == null) { log.error("Failed to get data from view: unauthorized"); @@ -287,8 +288,8 @@ public class ViewEndpoint extends AbstractEndpoint { } headers.set("Access-Control-Expose-Headers", "X-Headers"); headers.set("X-Headers", String.join(",", view.getColumns().stream().map(ViewColumnDto::getInternalName).toList())); - final Dataset<Row> dataset = tableService.getData(view.getDatabase(), view.getInternalName(), timestamp, - page, size, null, null); + final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(databaseId), + view.getInternalName(), timestamp, page, size, null, null); metricsService.countViewGetData(databaseId, viewId); return ResponseEntity.ok() .headers(headers) @@ -336,7 +337,7 @@ public class ViewEndpoint extends AbstractEndpoint { @RequestParam(required = false) Instant timestamp, Principal principal) throws RemoteUnavailableException, ViewNotFoundException, NotAllowedException, MetadataServiceException, - StorageUnavailableException, QueryMalformedException, TableNotFoundException { + StorageUnavailableException, QueryMalformedException, TableNotFoundException, DatabaseNotFoundException { log.debug("endpoint export view data, databaseId={}, viewId={}", databaseId, viewId); /* parameters */ if (timestamp == null) { @@ -344,7 +345,7 @@ public class ViewEndpoint extends AbstractEndpoint { log.debug("timestamp not set: default to {}", timestamp); } /* parameters */ - final PrivilegedViewDto view = credentialService.getView(databaseId, viewId); + final ViewDto view = credentialService.getView(databaseId, viewId); if (!view.getIsPublic()) { if (principal == null) { log.error("Failed to export private view: principal is null"); @@ -352,8 +353,8 @@ public class ViewEndpoint extends AbstractEndpoint { } credentialService.getAccess(databaseId, getId(principal)); } - final Dataset<Row> dataset = tableService.getData(view.getDatabase(), view.getInternalName(), timestamp, null, - null, null, null); + final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(databaseId), + view.getInternalName(), timestamp, null, null, null, null); metricsService.countViewGetData(databaseId, viewId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java index 25b858f51b..18307b5ac2 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java @@ -2,9 +2,9 @@ package at.tuwien.validation; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.config.QueryConfig; -import at.tuwien.endpoints.AbstractEndpoint; +import at.tuwien.endpoints.RestEndpoint; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import lombok.extern.log4j.Log4j2; @@ -21,7 +21,7 @@ import java.util.regex.Pattern; @Log4j2 @Component -public class EndpointValidator extends AbstractEndpoint { +public class EndpointValidator extends RestEndpoint { private final QueryConfig queryConfig; private final MetadataServiceGateway metadataServiceGateway; @@ -48,12 +48,12 @@ public class EndpointValidator extends AbstractEndpoint { } } - public void validateOnlyPrivateSchemaAccess(PrivilegedDatabaseDto database, Principal principal) + public void validateOnlyPrivateSchemaAccess(DatabaseDto database, Principal principal) throws NotAllowedException, RemoteUnavailableException, MetadataServiceException { validateOnlyPrivateSchemaAccess(database, principal, false); } - public void validateOnlyPrivateSchemaAccess(PrivilegedDatabaseDto database, Principal principal, + public void validateOnlyPrivateSchemaAccess(DatabaseDto database, Principal principal, boolean writeAccessOnly) throws NotAllowedException, RemoteUnavailableException, MetadataServiceException { if (database.getIsSchemaPublic()) { @@ -63,7 +63,7 @@ public class EndpointValidator extends AbstractEndpoint { validateOnlyAccess(database, principal, writeAccessOnly); } - public void validateOnlyPrivateSchemaHasRole(PrivilegedDatabaseDto database, Principal principal, String role) + public void validateOnlyPrivateSchemaHasRole(DatabaseDto database, Principal principal, String role) throws NotAllowedException { if (database.getIsSchemaPublic()) { log.trace("database with id {} has public schema: no access needed", database.getId()); @@ -82,7 +82,7 @@ public class EndpointValidator extends AbstractEndpoint { log.trace("principal has role '{}': access granted", role); } - public void validateOnlyAccess(PrivilegedDatabaseDto database, Principal principal, boolean writeAccessOnly) + public void validateOnlyAccess(DatabaseDto database, Principal principal, boolean writeAccessOnly) throws NotAllowedException, RemoteUnavailableException, MetadataServiceException { if (principal == null) { throw new NotAllowedException("No principal provided"); 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 a30ffb7b81..d4daa90741 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 @@ -1,18 +1,14 @@ package at.tuwien.config; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import lombok.extern.log4j.Log4j2; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; import java.sql.*; -import java.time.Instant; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -21,38 +17,7 @@ import java.util.regex.Pattern; @Configuration public class MariaDbConfig { - /** - * Inserts a query into a created database with given hostname and database name. The method uses the JDBC in-out - * notation <a href="#{@link}">{@link https://learn.microsoft.com/en-us/sql/connect/jdbc/using-sql-escape-sequences?view=sql-server-ver16#stored-procedure-calls}</a> - * - * @param database The database. - * @param query The query. - * @param username The connection username. - * @param password The connection password. - * @return The generated or retrieved query id. - * @throws SQLException The procedure did not succeed. - */ - public static Long mockSystemQueryInsert(PrivilegedDatabaseDto database, String query, String username, String password) - 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, username, password)) { - final String call = "{call _store_query(?,?,?,?)}"; - log.trace("prepare procedure '{}'", call); - final CallableStatement statement = connection.prepareCall(call); - statement.setString(1, username); - statement.setString(2, query); - statement.setTimestamp(3, Timestamp.from(Instant.now())); - statement.registerOutParameter(4, Types.BIGINT); - statement.executeUpdate(); - final Long queryId = statement.getLong(4); - statement.close(); - log.debug("received queryId={}", queryId); - return queryId; - } - } - - public static void createDatabase(PrivilegedContainerDto container, String database) throws SQLException { + public static void createDatabase(ContainerDto container, String database) throws SQLException { final String jdbc = "jdbc:mariadb://" + container.getHost() + ":" + container.getPort(); log.trace("connect to database {}", jdbc); try (Connection connection = DriverManager.getConnection(jdbc, container.getUsername(), container.getPassword())) { @@ -65,7 +30,7 @@ public class MariaDbConfig { log.debug("created database {}", database); } - public static void createInitDatabase(PrivilegedContainerDto container, DatabaseDto database) throws SQLException { + public static void createInitDatabase(ContainerDto container, DatabaseDto database) throws SQLException { final String jdbc = "jdbc:mariadb://" + container.getHost() + ":" + container.getPort(); log.trace("connect to database {}", jdbc); try (Connection connection = DriverManager.getConnection(jdbc, container.getUsername(), container.getPassword())) { @@ -76,21 +41,7 @@ public class MariaDbConfig { log.debug("created init database {}", database.getInternalName()); } - public static void grantReadAccess(PrivilegedDatabaseDto database, String username) { - 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())) { - connection.prepareStatement("GRANT SELECT ON *.* TO `" + username + "`@`%`;") - .executeUpdate(); - connection.prepareStatement("FLUSH PRIVILEGES;") - .executeUpdate(); - } catch (SQLException e) { - log.error("could not grant read access", e); - } - log.debug("granted read access to user {} in database {}", username, database.getInternalName()); - } - - public static void grantWriteAccess(PrivilegedDatabaseDto database, String username) { + public static void grantWriteAccess(DatabaseDto database, String username) { 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())) { @@ -104,7 +55,7 @@ public class MariaDbConfig { log.debug("granted read access to user {} in database {}", username, database.getInternalName()); } - public static void dropAllDatabases(PrivilegedContainerDto container) { + public static void dropAllDatabases(ContainerDto container) { final String jdbc = "jdbc:mariadb://" + container.getHost() + ":" + container.getPort(); log.trace("connect to database {}", jdbc); try (Connection connection = DriverManager.getConnection(jdbc, container.getUsername(), container.getPassword())) { @@ -130,7 +81,7 @@ public class MariaDbConfig { log.debug("dropped all databases"); } - public static void dropDatabase(PrivilegedContainerDto container, String database) + public static void dropDatabase(ContainerDto container, String database) throws SQLException { final String jdbc = "jdbc:mariadb://" + container.getHost() + ":" + container.getPort(); log.trace("connect to database {}", jdbc); @@ -144,26 +95,7 @@ public class MariaDbConfig { log.debug("dropped database {}", database); } - public static List<String> getUsernames(String hostname, String database, String username, String password) - throws SQLException { - final String jdbc = "jdbc:mariadb://" + hostname + "/" + database; - log.trace("connect to database {}", jdbc); - final List<String> usernames = new LinkedList<>(); - try (Connection connection = DriverManager.getConnection(jdbc, username, password)) { - final String query = "SELECT User FROM mysql.user;"; - log.trace("prepare statement '{}'", query); - final PreparedStatement statement = connection.prepareStatement(query); - final ResultSet set = statement.executeQuery(); - statement.close(); - while (set.next()) { - usernames.add(set.getString("User")); - } - log.debug("received usernames={}", usernames); - return usernames; - } - } - - public static List<String> getPrivileges(PrivilegedDatabaseDto database, String username) throws SQLException { + public static List<String> getPrivileges(DatabaseDto database, String username) 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())) { @@ -185,7 +117,7 @@ public class MariaDbConfig { throw new SQLException("Failed to get privileges"); } - public static void dropTable(PrivilegedDatabaseDto database, String table) throws SQLException { + public static void dropTable(DatabaseDto database, String table) 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())) { @@ -209,50 +141,7 @@ public class MariaDbConfig { } } - /** - * Inserts a query into a created database with given hostname and database name. The method uses the JDBC in-out - * notation <a href="#{@link}">{@link https://learn.microsoft.com/en-us/sql/connect/jdbc/using-sql-escape-sequences?view=sql-server-ver16#stored-procedure-calls}</a> - * - * @param database The database. - * @param query The query. - * @param username The connection username. - * @param password The connection password. - * @return The generated or retrieved query id. - * @throws SQLException The procedure did not succeed. - */ - public static Long mockUserQueryInsert(PrivilegedDatabaseDto database, String query, String username, String password) - 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, username, password)) { - final String call = "{call store_query(?,?,?)}"; - log.trace("prepare procedure '{}'", call); - final CallableStatement statement = connection.prepareCall(call); - statement.setString(1, query); - statement.setTimestamp(2, Timestamp.from(Instant.now())); - statement.registerOutParameter(3, Types.BIGINT); - statement.executeUpdate(); - final Long queryId = statement.getLong(3); - statement.close(); - log.debug("received queryId={}", queryId); - return queryId; - } - } - - /** - * Inserts a query into a created database with given hostname and database name. The method uses the JDBC in-out - * notation <a href="#{@link}">{@link https://learn.microsoft.com/en-us/sql/connect/jdbc/using-sql-escape-sequences?view=sql-server-ver16#stored-procedure-calls}</a> - * - * @param database The database. - * @param query The query. - * @return The generated or retrieved query id. - * @throws SQLException The procedure did not succeed. - */ - public static Long mockSystemQueryInsert(PrivilegedDatabaseDto database, String query) throws SQLException { - return mockSystemQueryInsert(database, query, database.getContainer().getUsername(), database.getContainer().getPassword()); - } - - public static void insertQueryStore(PrivilegedDatabaseDto database, QueryDto query, UUID userId) throws SQLException { + public static void 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())) { @@ -272,7 +161,7 @@ public class MariaDbConfig { } } - public static List<Map<String, Object>> listQueryStore(PrivilegedDatabaseDto database) throws SQLException { + public static List<Map<String, Object>> listQueryStore(DatabaseDto database) 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())) { @@ -297,7 +186,7 @@ public class MariaDbConfig { } } - public static List<Map<String, String>> selectQuery(PrivilegedDatabaseDto database, String query, Set<String> columns) + public static List<Map<String, String>> selectQuery(DatabaseDto database, String query, Set<String> columns) throws SQLException { final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName(); log.trace("connect to database {}", jdbc); @@ -318,7 +207,7 @@ public class MariaDbConfig { return rows; } - public static List<Map<String, byte[]>> selectQueryByteArr(PrivilegedDatabaseDto database, String query, Set<String> columns) + public static List<Map<String, byte[]>> selectQueryByteArr(DatabaseDto database, String query, Set<String> columns) throws SQLException { final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName(); log.trace("connect to database {}", jdbc); @@ -339,7 +228,7 @@ public class MariaDbConfig { return rows; } - public static void execute(PrivilegedDatabaseDto database, String query) + public static void execute(DatabaseDto database, String query) throws SQLException { final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName(); log.trace("connect to database {}", jdbc); @@ -349,17 +238,7 @@ public class MariaDbConfig { } } - public static void execute(PrivilegedContainerDto container, String query) - throws SQLException { - final String jdbc = "jdbc:mariadb://" + container.getHost() + ":" + container.getPort(); - log.trace("connect to database: {}", jdbc); - try (Connection connection = DriverManager.getConnection(jdbc, container.getUsername(), container.getPassword())) { - final Statement statement = connection.createStatement(); - statement.executeUpdate(query); - } - } - - public static void dropQueryStore(PrivilegedDatabaseDto database) + public static void dropQueryStore(DatabaseDto database) throws SQLException { final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName(); log.trace("connect to database: {}", jdbc); @@ -373,78 +252,4 @@ public class MariaDbConfig { } } - public static Map<String, List<Object>> describeTableSchema(PrivilegedTableDto table, String username, String password) - throws SQLException { - final String jdbc = "jdbc:mariadb://" + table.getDatabase().getContainer().getHost() + ":" + table.getDatabase().getContainer().getPort() + "/" + table.getDatabase().getInternalName(); - log.trace("connect to database {}", jdbc); - final Map<String, List<Object>> out = new HashMap<>(); - try (Connection connection = DriverManager.getConnection(jdbc, username, password)) { - final String query = "SHOW COLUMNS FROM `" + table.getInternalName() + "`;"; - log.trace("prepare statement '{}'", query); - final PreparedStatement statement = connection.prepareStatement(query); - final ResultSet resultSet = statement.executeQuery(); - statement.close(); - while (resultSet.next()) { - if (resultSet.getString("Field").equals("id")) { - continue; - } - out.put(resultSet.getString("Field"), List.of(resultSet.getString("Type"), resultSet.getString("Null"), resultSet.getString("Key"))); - } - return out; - } - } - - public static ColumnTypeDto typetoColumnTypeDto(String data) throws Exception { - if (data.toUpperCase().startsWith("TINYINT(1)")) { - /* boolean in MySQL */ - return ColumnTypeDto.BOOL; - } - final Matcher matcher = Pattern.compile("([A-Z]+)") - .matcher(data.toUpperCase()); - if (!matcher.find()) { - log.error("Failed to map type: does not match expected format"); - throw new Exception("Failed to map type: does not match expected format"); - } - final String type = matcher.group(1); - try { - return ColumnTypeDto.valueOf(type); - } catch (IllegalArgumentException e) { - if (type.startsWith("TINYINT")) { - /* boolean in MySQL */ - return ColumnTypeDto.BOOL; - } else if (type.startsWith("BOOL")) { - /* boolean */ - return ColumnTypeDto.BOOL; - } else if (type.startsWith("DOUBLE")) { - /* double precision */ - return ColumnTypeDto.DOUBLE; - } else if (type.startsWith("INT")) { - /* integer synonym */ - return ColumnTypeDto.INT; - } else if (type.startsWith("DEC")) { - /* decimal synonym */ - return ColumnTypeDto.DECIMAL; - } else if (type.startsWith("ENUM")) { - return ColumnTypeDto.ENUM; - } else if (type.startsWith("SET")) { - return ColumnTypeDto.SET; - } - } - log.error("Failed to map data {} and type {}", data, type); - throw new Exception("Failed to map data " + data + " and type " + type); - } - - public static boolean tableExists(PrivilegedDatabaseDto database, String tableName) - 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 Statement statement = connection.createStatement(); - final String query = "SHOW TABLES LIKE '" + tableName + "';"; - log.trace("execute query {}", query); - final ResultSet result = statement.executeQuery(query); - return result.next(); - } - } - } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java index 9fb4003dba..00553dce06 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java @@ -1,8 +1,8 @@ package at.tuwien.endpoint; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.user.UserDto; import at.tuwien.endpoints.AccessEndpoint; import at.tuwien.exception.*; import at.tuwien.service.AccessService; @@ -51,7 +51,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_PRIVILEGED_DTO); @@ -68,7 +68,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_PRIVILEGED_DTO); @@ -85,12 +85,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_PRIVILEGED_DTO); doThrow(SQLException.class) .when(accessService) - .create(DATABASE_1_PRIVILEGED_DTO, USER_4_PRIVILEGED_DTO, AccessTypeDto.READ); + .create(DATABASE_1_DTO, USER_4_PRIVILEGED_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -121,7 +121,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_4_ID); @@ -149,7 +149,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_PRIVILEGED_DTO); @@ -166,12 +166,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(accessService) - .update(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.READ); + .update(DATABASE_1_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -186,7 +186,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_PRIVILEGED_DTO); @@ -229,7 +229,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_1_ID); @@ -248,12 +248,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_PRIVILEGED_DTO); doNothing() .when(accessService) - .delete(any(PrivilegedDatabaseDto.class), any(PrivilegedUserDto.class)); + .delete(any(DatabaseDto.class), any(UserDto.class)); /* test */ final ResponseEntity<Void> response = accessEndpoint.revoke(DATABASE_1_ID, USER_1_ID); @@ -268,7 +268,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_PRIVILEGED_DTO); @@ -311,7 +311,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_1_ID); @@ -329,12 +329,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(accessService) - .delete(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO); + .delete(DATABASE_1_DTO, USER_1_PRIVILEGED_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java index c55442290e..592063e034 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java @@ -2,13 +2,10 @@ package at.tuwien.endpoint; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.user.UserDto; import at.tuwien.endpoints.DatabaseEndpoint; import at.tuwien.exception.*; -import at.tuwien.service.AccessService; -import at.tuwien.service.CredentialService; -import at.tuwien.service.DatabaseService; -import at.tuwien.service.SubsetService; +import at.tuwien.service.*; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -41,6 +38,9 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @MockBean private SubsetService queryService; + @MockBean + private ContainerService containerService; + @MockBean private AccessService accessService; @@ -63,15 +63,15 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getContainer(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); - when(databaseService.create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); + when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) + .thenReturn(DATABASE_1_DTO); doNothing() - .when(queryService) - .createQueryStore(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + .when(containerService) + .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); doNothing() .when(accessService) - .create(eq(DATABASE_1_PRIVILEGED_DTO), any(PrivilegedUserDto.class), any(AccessTypeDto.class)); + .create(eq(DATABASE_1_DTO), any(UserDto.class), any(AccessTypeDto.class)); /* test */ final ResponseEntity<DatabaseDto> response = databaseEndpoint.create(DATABASE_1_CREATE_INTERNAL); @@ -85,15 +85,15 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getContainer(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); - when(databaseService.create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); + when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) + .thenReturn(DATABASE_1_DTO); doNothing() - .when(queryService) - .createQueryStore(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + .when(containerService) + .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); doNothing() .when(accessService) - .create(eq(DATABASE_1_PRIVILEGED_DTO), any(PrivilegedUserDto.class), any(AccessTypeDto.class)); + .create(eq(DATABASE_1_DTO), any(UserDto.class), any(AccessTypeDto.class)); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -108,10 +108,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getContainer(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); doThrow(SQLException.class) - .when(databaseService) - .create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL); + .when(containerService) + .createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -144,11 +144,11 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { doThrow(ContainerNotFoundException.class) .when(credentialService) .getContainer(CONTAINER_1_ID); - when(databaseService.create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) + .thenReturn(DATABASE_1_DTO); doThrow(QueryStoreCreateException.class) - .when(queryService) - .createQueryStore(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + .when(containerService) + .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); /* test */ assertThrows(ContainerNotFoundException.class, () -> { @@ -163,7 +163,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); /* test */ databaseEndpoint.update(DATABASE_1_ID, USER_1_UPDATE_PASSWORD_DTO); @@ -176,10 +176,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(SQLException.class) .when(databaseService) - .update(DATABASE_1_PRIVILEGED_DTO, USER_1_UPDATE_PASSWORD_DTO); + .update(DATABASE_1_DTO, USER_1_UPDATE_PASSWORD_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -193,7 +193,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -224,10 +224,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(DatabaseMalformedException.class) .when(databaseService) - .update(DATABASE_1_PRIVILEGED_DTO, USER_1_UPDATE_PASSWORD_DTO); + .update(DATABASE_1_DTO, USER_1_UPDATE_PASSWORD_DTO); /* test */ assertThrows(DatabaseMalformedException.class, () -> { 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 8a08f8231f..c76aa91ebf 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 @@ -1,6 +1,6 @@ package at.tuwien.endpoint; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ExecuteStatementDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.query.QueryPersistDto; @@ -8,7 +8,6 @@ import at.tuwien.endpoints.SubsetEndpoint; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.CredentialService; -import at.tuwien.service.SchemaService; import at.tuwien.service.StorageService; import at.tuwien.service.SubsetService; import at.tuwien.test.AbstractUnitTest; @@ -25,7 +24,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -53,9 +51,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @MockBean private SubsetService subsetService; - @MockBean - private SchemaService schemaService; - @MockBean private MetadataServiceGateway metadataServiceGateway; @@ -68,9 +63,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @MockBean private CredentialService credentialService; - @MockBean - private MockHttpServletRequest mockHttpServletRequest; - @BeforeEach public void beforeEach() { genesis(); @@ -82,12 +74,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { RemoteUnavailableException, SQLException, MetadataServiceException { /* mock */ - when(subsetService.findAll(DATABASE_3_PRIVILEGED_DTO, null)) + when(subsetService.findAll(DATABASE_3_DTO, null)) .thenReturn(List.of(QUERY_1_DTO, QUERY_2_DTO, QUERY_3_DTO, QUERY_4_DTO, QUERY_5_DTO, QUERY_6_DTO)); /* test */ assertThrows(NotAllowedException.class, () -> { - generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, null); + generic_list(DATABASE_3_ID, DATABASE_3_DTO, null); }); } @@ -98,11 +90,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { MetadataServiceException { /* mock */ - when(subsetService.findAll(DATABASE_3_PRIVILEGED_DTO, null)) + when(subsetService.findAll(DATABASE_3_DTO, null)) .thenReturn(List.of(QUERY_1_DTO, QUERY_2_DTO, QUERY_3_DTO, QUERY_4_DTO, QUERY_5_DTO, QUERY_6_DTO)); /* test */ - final List<QueryDto> response = generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, USER_3_PRINCIPAL); + final List<QueryDto> response = generic_list(DATABASE_3_ID, DATABASE_3_DTO, USER_3_PRINCIPAL); assertEquals(6, response.size()); } @@ -123,14 +115,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) .when(subsetService) - .findAll(DATABASE_3_PRIVILEGED_DTO, null); + .findAll(DATABASE_3_DTO, null); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { - generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, USER_3_PRINCIPAL); + generic_list(DATABASE_3_ID, DATABASE_3_DTO, USER_3_PRINCIPAL); }); } @@ -141,8 +133,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); /* test */ @@ -158,8 +150,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); /* test */ @@ -176,8 +168,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -191,8 +183,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_4_ID)) - .thenReturn(DATABASE_4_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_7_ID)) + .thenReturn(DATABASE_4_DTO); + when(subsetService.findById(DATABASE_4_DTO, QUERY_7_ID)) .thenReturn(QUERY_7_DTO); /* test */ @@ -211,12 +203,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_5_DTO); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -233,10 +225,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -256,10 +248,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_4_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -293,10 +285,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) .when(subsetService) - .findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID); + .findById(DATABASE_3_DTO, QUERY_5_ID); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -312,14 +304,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_DTO), eq(null), eq(null)); + .getData(eq(DATABASE_3_DTO), eq(QUERY_5_DTO), eq(null), eq(null)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -341,13 +333,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + .thenReturn(DATABASE_3_DTO); + when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -387,12 +377,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_5_DTO); - when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -413,17 +401,17 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(null), eq(null)); - when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(null), eq(null)); + when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); when(metadataServiceGateway.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_READ_ACCESS_DTO); doThrow(SQLException.class) .when(subsetService) - .create(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(USER_1_ID)); + .create(eq(DATABASE_3_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(USER_1_ID)); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -468,13 +456,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + .thenReturn(DATABASE_3_DTO); + when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -496,13 +482,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())) + .thenReturn(DATABASE_4_DTO); + when(subsetService.findById(eq(DATABASE_4_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(eq(DATABASE_4_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(eq(DATABASE_4_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(schemaService.inspectView(eq(DATABASE_4_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -524,13 +508,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())) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(eq(DATABASE_1_DTO), anyLong())) .thenReturn(QUERY_1_DTO); - when(subsetService.getData(eq(DATABASE_1_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(eq(DATABASE_1_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(schemaService.inspectView(eq(DATABASE_1_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_1_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -550,13 +532,11 @@ 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())) + .thenReturn(DATABASE_2_DTO); + when(subsetService.findById(eq(DATABASE_2_DTO), anyLong())) .thenReturn(QUERY_2_DTO); - when(subsetService.getData(eq(DATABASE_2_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(eq(DATABASE_2_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(schemaService.inspectView(eq(DATABASE_2_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_4_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -575,15 +555,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO)) + when(subsetService.reExecuteCount(DATABASE_3_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); - when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); - when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -601,10 +579,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO)) + when(subsetService.reExecuteCount(DATABASE_3_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -627,15 +605,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); - when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) + when(subsetService.reExecuteCount(DATABASE_1_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); - when(subsetService.getData(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, 0L, 10L)) + when(subsetService.getData(DATABASE_1_DTO, QUERY_1_DTO, 0L, 10L)) .thenReturn(mock); - when(schemaService.inspectView(eq(DATABASE_1_PRIVILEGED_DTO), anyString())) - .thenReturn(VIEW_1_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -652,7 +628,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -667,7 +643,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_1_ID); @@ -687,10 +663,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); - when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) + when(subsetService.reExecuteCount(DATABASE_1_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -711,14 +687,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_DTO); + when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); doThrow(SQLException.class) .when(subsetService) - .getData(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, 0L, 10L); + .getData(DATABASE_1_DTO, QUERY_1_DTO, 0L, 10L); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -739,11 +715,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); doNothing() .when(subsetService) - .persist(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID, true); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .persist(DATABASE_3_DTO, QUERY_5_ID, true); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -812,12 +788,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); doThrow(SQLException.class) .when(subsetService) - .persist(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID, true); + .persist(DATABASE_3_DTO, QUERY_5_ID, true); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -825,7 +801,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { }); } - protected List<QueryDto> generic_list(Long databaseId, PrivilegedDatabaseDto database, Principal principal) + protected List<QueryDto> generic_list(Long databaseId, DatabaseDto database, Principal principal) throws NotAllowedException, DatabaseUnavailableException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { 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 e3171892a0..82be231e56 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 @@ -1,14 +1,14 @@ package at.tuwien.endpoint; import at.tuwien.api.database.DatabaseAccessDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.endpoints.TableEndpoint; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.CredentialService; -import at.tuwien.service.SchemaService; +import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; import at.tuwien.test.AbstractUnitTest; import jakarta.servlet.http.HttpServletRequest; @@ -61,7 +61,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { private TableService tableService; @MockBean - private SchemaService schemaService; + private DatabaseService databaseService; @MockBean private CredentialService credentialService; @@ -92,16 +92,16 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME, authorities = {"system"}) - public void create_succeeds() throws DatabaseUnavailableException, TableMalformedException, + public void create_succeeds() throws DatabaseUnavailableException, TableMalformedException, ViewNotFoundException, DatabaseNotFoundException, TableExistsException, RemoteUnavailableException, SQLException, TableNotFoundException, QueryMalformedException, MetadataServiceException, ContainerNotFoundException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(tableService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO)) + .thenReturn(DATABASE_1_DTO); + when(databaseService.createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO)) .thenReturn(TABLE_4_DTO); - when(schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_INTERNALNAME)) + when(databaseService.inspectTable(DATABASE_1_DTO, TABLE_4_INTERNALNAME)) .thenReturn(TABLE_4_DTO); /* test */ @@ -142,10 +142,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(SQLException.class) - .when(tableService) - .createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO); + .when(databaseService) + .createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -166,12 +166,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void statistic_succeeds() throws DatabaseUnavailableException, TableNotFoundException, SQLException, - TableMalformedException, RemoteUnavailableException, MetadataServiceException { + TableMalformedException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getStatistics(any(PrivilegedTableDto.class))) + .thenReturn(TABLE_8_DTO); + when(tableService.getStatistics(any(DatabaseDto.class), any(TableDto.class))) .thenReturn(TABLE_8_STATISTIC_DTO); /* test */ @@ -186,10 +186,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); doThrow(SQLException.class) .when(tableService) - .getStatistics(any(PrivilegedTableDto.class)); + .getStatistics(any(DatabaseDto.class), any(TableDto.class)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -220,10 +220,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doNothing() .when(tableService) - .delete(TABLE_1_PRIVILEGED_DTO); + .delete(TABLE_1_DTO); /* test */ final ResponseEntity<Void> response = tableEndpoint.delete(DATABASE_1_ID, TABLE_1_ID); @@ -263,10 +263,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doThrow(SQLException.class) .when(tableService) - .delete(TABLE_1_PRIVILEGED_DTO); + .delete(TABLE_1_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -277,13 +277,14 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void getData_succeeds() throws DatabaseUnavailableException, TableNotFoundException, QueryMalformedException, - RemoteUnavailableException, PaginationException, MetadataServiceException, NotAllowedException { + RemoteUnavailableException, PaginationException, MetadataServiceException, NotAllowedException, + DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + .thenReturn(TABLE_8_DTO); + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -298,15 +299,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void getData_head_succeeds() throws DatabaseUnavailableException, TableNotFoundException, SQLException, QueryMalformedException, RemoteUnavailableException, PaginationException, - MetadataServiceException, NotAllowedException { + MetadataServiceException, NotAllowedException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getCount(eq(TABLE_8_PRIVILEGED_DTO), any(Instant.class))) + .thenReturn(TABLE_8_DTO); + when(tableService.getCount(eq(TABLE_8_DTO), any(Instant.class))) .thenReturn(3L); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -328,7 +329,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -343,7 +344,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_2_ID); @@ -361,10 +362,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); doThrow(QueryMalformedException.class) .when(tableService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null)); + .getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null)); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -381,7 +382,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doThrow(RemoteUnavailableException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_2_ID); @@ -397,15 +398,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MethodSource("anyAccess_parameters") public void getData_private_succeeds(String name, DatabaseAccessDto access) throws DatabaseUnavailableException, TableNotFoundException, QueryMalformedException, RemoteUnavailableException, PaginationException, - MetadataServiceException, NotAllowedException { + MetadataServiceException, NotAllowedException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -445,12 +446,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .createTuple(TABLE_8_PRIVILEGED_DTO, request); + .createTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -511,7 +512,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -535,12 +536,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .createTuple(TABLE_8_PRIVILEGED_DTO, request); + .createTuple(TABLE_8_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -562,7 +563,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); @@ -583,7 +584,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -607,7 +608,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); @@ -632,12 +633,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_PRIVILEGED_DTO, request); + .updateTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -707,7 +708,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -733,12 +734,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .updateTuple(TABLE_8_PRIVILEGED_DTO, request); + .updateTuple(TABLE_8_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -763,12 +764,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_PRIVILEGED_DTO, request); + .updateTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -794,7 +795,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -821,12 +822,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_PRIVILEGED_DTO, request); + .updateTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -849,12 +850,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); + .deleteTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -912,7 +913,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -934,12 +935,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); + .deleteTuple(TABLE_8_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -960,12 +961,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); + .deleteTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -987,7 +988,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -1010,12 +1011,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); + .deleteTuple(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -1032,8 +1033,8 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.history(TABLE_8_PRIVILEGED_DTO, null)) + .thenReturn(TABLE_8_DTO); + when(tableService.history(TABLE_8_DTO, null)) .thenReturn(List.of()); /* test */ @@ -1048,7 +1049,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -1074,7 +1075,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_4_ID); @@ -1092,10 +1093,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_READ_ACCESS_DTO); - when(tableService.history(TABLE_1_PRIVILEGED_DTO, 10L)) + when(tableService.history(TABLE_1_DTO, 10L)) .thenReturn(List.of()); /* test */ @@ -1110,10 +1111,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); doThrow(SQLException.class) .when(tableService) - .history(TABLE_8_PRIVILEGED_DTO, 100L); + .history(TABLE_8_DTO, 100L); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -1139,14 +1140,14 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void exportData_succeeds() throws TableNotFoundException, NotAllowedException, - StorageUnavailableException, QueryMalformedException, RemoteUnavailableException, MetadataServiceException { + public void exportData_succeeds() throws TableNotFoundException, NotAllowedException, StorageUnavailableException, + QueryMalformedException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + .thenReturn(TABLE_8_DTO); + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -1159,15 +1160,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MethodSource("anyAccess_parameters") public void exportData_private_succeeds(String name, DatabaseAccessDto access) throws TableNotFoundException, NotAllowedException, StorageUnavailableException, QueryMalformedException, RemoteUnavailableException, - MetadataServiceException { + MetadataServiceException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -1182,7 +1183,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_4_ID); @@ -1201,8 +1202,8 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(tableService.getSchemas(DATABASE_3_PRIVILEGED_DTO)) + .thenReturn(DATABASE_3_DTO); + when(databaseService.exploreTables(DATABASE_3_DTO)) .thenReturn(List.of(TABLE_8_DTO)); /* test */ @@ -1237,10 +1238,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); + .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) - .when(tableService) - .getSchemas(DATABASE_3_PRIVILEGED_DTO); + .when(databaseService) + .exploreTables(DATABASE_3_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -1260,12 +1261,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .importDataset(TABLE_8_PRIVILEGED_DTO, request); + .importDataset(TABLE_8_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -1324,12 +1325,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .importDataset(any(PrivilegedTableDto.class), eq(request)); + .importDataset(any(TableDto.class), eq(request)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -1350,12 +1351,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .importDataset(any(PrivilegedTableDto.class), eq(request)); + .importDataset(any(TableDto.class), eq(request)); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -1375,7 +1376,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -1398,7 +1399,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); @@ -1418,7 +1419,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -1441,7 +1442,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); @@ -1462,7 +1463,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_ALL_ACCESS_DTO); @@ -1483,7 +1484,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_2_ID)) - .thenReturn(TABLE_2_PRIVILEGED_DTO); + .thenReturn(TABLE_2_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO); @@ -1503,7 +1504,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO); @@ -1525,7 +1526,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_2_ID)) - .thenReturn(TABLE_2_PRIVILEGED_DTO); + .thenReturn(TABLE_2_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_READ_ACCESS_DTO); 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 5f580a2fc1..8586f8f92d 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 @@ -4,6 +4,7 @@ import at.tuwien.api.database.ViewDto; import at.tuwien.endpoints.ViewEndpoint; import at.tuwien.exception.*; import at.tuwien.service.CredentialService; +import at.tuwien.service.DatabaseService; import at.tuwien.service.TableService; import at.tuwien.service.ViewService; import at.tuwien.test.AbstractUnitTest; @@ -40,6 +41,9 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @MockBean private ViewService viewService; + @MockBean + private DatabaseService databaseService; + @MockBean private CredentialService credentialService; @@ -67,8 +71,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(viewService.create(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO)) + .thenReturn(DATABASE_1_DTO); + when(databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO)) .thenReturn(VIEW_1_DTO); /* test */ @@ -83,10 +87,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(SQLException.class) - .when(viewService) - .create(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO); + .when(databaseService) + .createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -101,8 +105,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(viewService.create(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO)) + .thenReturn(DATABASE_1_DTO); + when(databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO)) .thenReturn(VIEW_1_DTO); /* test */ @@ -134,8 +138,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(viewService.getSchemas(DATABASE_1_PRIVILEGED_DTO)) + .thenReturn(DATABASE_1_DTO); + when(databaseService.exploreViews(DATABASE_1_DTO)) .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)); /* test */ @@ -176,10 +180,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doThrow(SQLException.class) - .when(viewService) - .getSchemas(DATABASE_1_PRIVILEGED_DTO); + .when(databaseService) + .exploreViews(DATABASE_1_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -204,10 +208,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_PRIVILEGED_DTO); + .thenReturn(VIEW_1_DTO); doNothing() .when(viewService) - .delete(DATABASE_1_PRIVILEGED_DTO, VIEW_1_INTERNAL_NAME); + .delete(VIEW_1_DTO); /* test */ final ResponseEntity<Void> response = viewEndpoint.delete(DATABASE_1_ID, VIEW_1_ID); @@ -221,10 +225,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_PRIVILEGED_DTO); + .thenReturn(VIEW_1_DTO); doThrow(SQLException.class) .when(viewService) - .delete(DATABASE_1_PRIVILEGED_DTO, VIEW_1_INTERNAL_NAME); + .delete(VIEW_1_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -239,10 +243,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); doNothing() .when(viewService) - .delete(DATABASE_1_PRIVILEGED_DTO, VIEW_1_INTERNAL_NAME); + .delete(VIEW_1_DTO); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -268,17 +272,17 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"view-database-view-data"}) - public void getData_private_succeeds() throws RemoteUnavailableException, ViewNotFoundException, ViewMalformedException, + public void getData_private_succeeds() throws RemoteUnavailableException, ViewNotFoundException, SQLException, DatabaseUnavailableException, QueryMalformedException, PaginationException, - NotAllowedException, MetadataServiceException, TableNotFoundException { + NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_PRIVILEGED_DTO); + .thenReturn(VIEW_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID)) .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO); - when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(VIEW_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_DTO), eq(VIEW_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -293,16 +297,16 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"view-database-view-data"}) public void getData_privateHead_succeeds() throws RemoteUnavailableException, ViewNotFoundException, SQLException, DatabaseUnavailableException, QueryMalformedException, PaginationException, - NotAllowedException, MetadataServiceException, TableNotFoundException { + NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + .thenReturn(VIEW_3_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID)) .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); - when(viewService.count(eq(VIEW_3_PRIVILEGED_DTO), any(Instant.class))) + when(viewService.count(eq(VIEW_3_DTO), any(Instant.class))) .thenReturn(VIEW_3_DATA_COUNT); /* test */ @@ -324,7 +328,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + .thenReturn(VIEW_3_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); doThrow(NotAllowedException.class) @@ -360,7 +364,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + .thenReturn(VIEW_3_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_3_ID); @@ -378,7 +382,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + .thenReturn(VIEW_3_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_3_ID); @@ -412,7 +416,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + .thenReturn(VIEW_3_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_1_ID); 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 f65de0707e..a8633836b8 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 @@ -1,16 +1,12 @@ package at.tuwien.gateway; import at.tuwien.api.container.ContainerDto; -import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.DatabaseAccessDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.user.UserDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; import at.tuwien.exception.*; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -75,13 +71,13 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { .body(TABLE_1_DTO)); /* test */ - final PrivilegedTableDto response = metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID); - assertEquals(IMAGE_1_JDBC, response.getDatabase().getContainer().getImage().getJdbcMethod()); - assertEquals(CONTAINER_1_HOST, response.getDatabase().getContainer().getHost()); - assertEquals(CONTAINER_1_PORT, response.getDatabase().getContainer().getPort()); - assertEquals(CONTAINER_1_PRIVILEGED_USERNAME, response.getDatabase().getContainer().getUsername()); - assertEquals(CONTAINER_1_PRIVILEGED_PASSWORD, response.getDatabase().getContainer().getPassword()); - assertEquals(DATABASE_1_INTERNALNAME, response.getDatabase().getInternalName()); + final TableDto response = metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID); + assertEquals(IMAGE_1_JDBC, response.getJdbcMethod()); + assertEquals(CONTAINER_1_HOST, response.getHost()); + assertEquals(CONTAINER_1_PORT, response.getPort()); + assertEquals(CONTAINER_1_PRIVILEGED_USERNAME, response.getUsername()); + assertEquals(CONTAINER_1_PRIVILEGED_PASSWORD, response.getPassword()); + assertEquals(DATABASE_1_INTERNALNAME, response.getDatabase()); assertEquals(TABLE_1_INTERNAL_NAME, response.getInternalName()); } @@ -181,13 +177,13 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { headers.set("X-Port", "" + CONTAINER_1_PORT); /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class))) + when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.ok() .headers(headers) - .body(DATABASE_1_PRIVILEGED_DTO)); + .body(DATABASE_1_DTO)); /* test */ - final PrivilegedDatabaseDto response = metadataServiceGateway.getDatabaseById(DATABASE_1_ID); + final DatabaseDto response = metadataServiceGateway.getDatabaseById(DATABASE_1_ID); assertEquals(DATABASE_1_ID, response.getId()); } @@ -197,7 +193,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpServerErrorException.class) .when(internalRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class)); /* test */ assertThrows(RemoteUnavailableException.class, () -> { @@ -211,7 +207,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.NotFound.class) .when(internalRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class)); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { @@ -223,7 +219,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { public void getDatabaseById_statusCode_fails() { /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class))) + when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) .build()); @@ -240,7 +236,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class))) + when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.OK) .headers(headers) .build()); @@ -261,7 +257,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { headers.add(customHeaders.get(j), ""); } /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class))) + when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.OK) .headers(headers) .build()); @@ -285,7 +281,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { .body(CONTAINER_1_DTO)); /* test */ - final PrivilegedContainerDto response = metadataServiceGateway.getContainerById(CONTAINER_1_ID); + final ContainerDto response = metadataServiceGateway.getContainerById(CONTAINER_1_ID); assertEquals(CONTAINER_1_ID, response.getId()); } @@ -388,7 +384,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { .body(VIEW_1_DTO)); /* test */ - final PrivilegedViewDto response = metadataServiceGateway.getViewById(CONTAINER_1_ID, VIEW_1_ID); + final ViewDto response = metadataServiceGateway.getViewById(CONTAINER_1_ID, VIEW_1_ID); assertEquals(VIEW_1_ID, response.getId()); } @@ -477,19 +473,6 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { }); } - @Test - public void getUserById_succeeds() throws RemoteUnavailableException, UserNotFoundException, MetadataServiceException { - - /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class))) - .thenReturn(ResponseEntity.ok() - .body(USER_1_DTO)); - - /* test */ - final UserDto response = metadataServiceGateway.getUserById(USER_1_ID); - assertEquals(USER_1_ID, response.getId()); - } - @Test public void getUserById_unavailable_fails() { @@ -505,49 +488,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { } @Test - public void getUserById_notFound_fails() { - - /* mock */ - doThrow(HttpClientErrorException.NotFound.class) - .when(internalRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class)); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - metadataServiceGateway.getUserById(USER_1_ID); - }); - } - - @Test - public void getUserById_statusCode_fails() { - - /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) - .build()); - - /* test */ - assertThrows(MetadataServiceException.class, () -> { - metadataServiceGateway.getUserById(USER_1_ID); - }); - } - - @Test - public void getUserById_emptyBody_fails() { - - /* mock */ - when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class))) - .thenReturn(ResponseEntity.ok() - .build()); - - /* test */ - assertThrows(MetadataServiceException.class, () -> { - metadataServiceGateway.getUserById(USER_1_ID); - }); - } - - @Test - public void getPrivilegedUserById_succeeds() throws RemoteUnavailableException, UserNotFoundException, + public void getUserById_succeeds() throws RemoteUnavailableException, UserNotFoundException, MetadataServiceException { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); @@ -560,28 +501,14 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { .body(USER_1_DTO)); /* test */ - final PrivilegedUserDto response = metadataServiceGateway.getPrivilegedUserById(USER_1_ID); + final UserDto response = metadataServiceGateway.getUserById(USER_1_ID); assertEquals(USER_1_ID, response.getId()); assertEquals(CONTAINER_1_PRIVILEGED_USERNAME, response.getUsername()); assertEquals(CONTAINER_1_PRIVILEGED_PASSWORD, response.getPassword()); } @Test - public void getPrivilegedUserById_unavailable_fails() { - - /* mock */ - doThrow(HttpServerErrorException.class) - .when(internalRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class)); - - /* test */ - assertThrows(RemoteUnavailableException.class, () -> { - metadataServiceGateway.getPrivilegedUserById(USER_1_ID); - }); - } - - @Test - public void getPrivilegedUserById_notFound_fails() { + public void getUserById_notFound_fails() { /* mock */ doThrow(HttpClientErrorException.NotFound.class) @@ -590,12 +517,12 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* test */ assertThrows(UserNotFoundException.class, () -> { - metadataServiceGateway.getPrivilegedUserById(USER_1_ID); + metadataServiceGateway.getUserById(USER_1_ID); }); } @Test - public void getPrivilegedUserById_statusCode_fails() { + public void getUserById_statusCode_fails() { /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(UserDto.class))) @@ -604,12 +531,12 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* test */ assertThrows(MetadataServiceException.class, () -> { - metadataServiceGateway.getPrivilegedUserById(USER_1_ID); + metadataServiceGateway.getUserById(USER_1_ID); }); } @Test - public void getPrivilegedUserById_headerMissing_fails() { + public void getUserById_headerMissing_fails() { final List<String> customHeaders = List.of("X-Username", "X-Password"); for (int i = 0; i < customHeaders.size(); i++) { @@ -624,13 +551,13 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* test */ assertThrows(MetadataServiceException.class, () -> { - metadataServiceGateway.getPrivilegedUserById(USER_1_ID); + metadataServiceGateway.getUserById(USER_1_ID); }); } } @Test - public void getPrivilegedUserById_emptyBody_fails() { + public void getUserById_emptyBody_fails() { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); @@ -643,7 +570,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* test */ assertThrows(MetadataServiceException.class, () -> { - metadataServiceGateway.getPrivilegedUserById(USER_1_ID); + metadataServiceGateway.getUserById(USER_1_ID); }); } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java index 88bad7b061..44e5f88912 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java @@ -57,8 +57,8 @@ public class DefaultListenerIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* database */ - MariaDbConfig.dropAllDatabases(CONTAINER_1_PRIVILEGED_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropAllDatabases(CONTAINER_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test @@ -68,7 +68,7 @@ public class DefaultListenerIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ defaultListener.onMessage(request); 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 648e36caa9..b3a3bf6397 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 @@ -52,8 +52,8 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { @BeforeEach public void beforeEach() throws SQLException { /* metadata database */ - MariaDbConfig.dropAllDatabases(CONTAINER_1_PRIVILEGED_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropAllDatabases(CONTAINER_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test @@ -81,7 +81,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ defaultListener.onMessage(request); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java index 158c6743a4..abbe28d55a 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java @@ -41,8 +41,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -56,8 +56,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) - .thenReturn(DATABASE_3_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_DTO); + when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -72,8 +72,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_4_ID)) - .thenReturn(DATABASE_4_PRIVILEGED_DTO); - when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_7_ID)) + .thenReturn(DATABASE_4_DTO); + when(subsetService.findById(DATABASE_4_DTO, QUERY_7_ID)) .thenReturn(QUERY_5_DTO); /* test */ diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java index 5eccf50ed2..bc121c3b26 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java @@ -44,16 +44,16 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test public void create_read_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.READ); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultRead.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -63,8 +63,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void create_writeOwn_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.WRITE_OWN); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -74,8 +74,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void create_writeAll_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.WRITE_ALL); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -85,8 +85,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_read_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.READ); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultRead.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -96,8 +96,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_writeOwn_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.WRITE_OWN); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -107,8 +107,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_writeAll_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.WRITE_ALL); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -119,7 +119,7 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(DatabaseMalformedException.class, () -> { - accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_5_PRIVILEGED_DTO, AccessTypeDto.WRITE_ALL); + accessService.update(DATABASE_1_DTO, USER_5_DTO, AccessTypeDto.WRITE_ALL); }); } @@ -127,8 +127,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void delete_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.delete(DATABASE_1_PRIVILEGED_DTO, USER_1_PRIVILEGED_DTO); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + accessService.delete(DATABASE_1_DTO, USER_1_DTO); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); assertEquals(1, privileges.size()); assertEquals("USAGE", privileges.get(0)); } @@ -138,7 +138,7 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(DatabaseMalformedException.class, () -> { - accessService.delete(DATABASE_1_PRIVILEGED_DTO, USER_5_PRIVILEGED_DTO); + accessService.delete(DATABASE_1_DTO, USER_5_DTO); }); } 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 new file mode 100644 index 0000000000..e793a8362c --- /dev/null +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -0,0 +1,109 @@ +package at.tuwien.service; + +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.config.MariaDbConfig; +import at.tuwien.config.MariaDbContainerConfig; +import at.tuwien.exception.DatabaseMalformedException; +import at.tuwien.exception.QueryStoreCreateException; +import at.tuwien.test.AbstractUnitTest; +import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.testcontainers.containers.MariaDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +@Log4j2 +@SpringBootTest +@ExtendWith(SpringExtension.class) +@Testcontainers +public class ContainerServiceIntegrationTest extends AbstractUnitTest { + + @Autowired + private ContainerService containerService; + + @Container + private static MariaDBContainer<?> mariaDBContainer = MariaDbContainerConfig.getContainer(); + + @BeforeAll + public static void beforeAll() throws InterruptedException { + Thread.sleep(1000) /* wait for test container some more */; + } + + @BeforeEach + public void beforeEach() throws SQLException { + genesis(); + /* metadata database */ + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + } + + @Test + public void create_succeeds() throws SQLException, DatabaseMalformedException { + + /* test */ + final DatabaseDto response = containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL); + assertNull(response.getName()); + assertEquals(DATABASE_1_INTERNALNAME, response.getInternalName()); + assertEquals(EXCHANGE_DBREPO_NAME, response.getExchangeName()); + assertNotNull(response.getOwner()); + assertEquals(USER_1_ID, response.getOwner().getId()); + assertNotNull(response.getContact()); + assertEquals(USER_1_ID, response.getContact().getId()); + assertNotNull(response.getContainer()); + assertEquals(CONTAINER_1_ID, response.getContainer().getId()); + } + + @Test + public void create_exists_fails() throws SQLException { + + /* mock */ + MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + + /* test */ + assertThrows(DatabaseMalformedException.class, () -> { + containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL); + }); + } + + @Test + public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException, InterruptedException { + + /* mock */ + MariaDbConfig.dropQueryStore(DATABASE_1_DTO); + + /* test */ + createQueryStore_generic(DATABASE_1_INTERNALNAME); + } + + @Test + public void createQueryStore_fails() { + + /* test */ + assertThrows(QueryStoreCreateException.class, () -> { + createQueryStore_generic(DATABASE_1_INTERNALNAME); + }); + } + + protected void createQueryStore_generic(String databaseName) throws SQLException, QueryStoreCreateException, + InterruptedException { + + /* pre-condition */ + Thread.sleep(1000) /* wait for test container some more */; + + /* test */ + containerService.createQueryStore(CONTAINER_1_DTO, databaseName); + final List<Map<String, Object>> response = MariaDbConfig.listQueryStore(DATABASE_1_DTO); + assertEquals(0, response.size()); + } +} 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 160918bfaa..8b5e2cc7c5 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 @@ -1,11 +1,11 @@ package at.tuwien.service; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.impl.CredentialServiceImpl; @@ -48,10 +48,10 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_1_DTO); /* test */ - final PrivilegedDatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); + final DatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); assertNotNull(response); assertEquals(DATABASE_1_ID, response.getId()); } @@ -62,12 +62,12 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO) + .thenReturn(DATABASE_1_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getDatabase(DATABASE_1_ID); /* test */ - final PrivilegedDatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); + final DatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); assertNotNull(response); assertEquals(DATABASE_1_ID, response.getId()); } @@ -78,16 +78,16 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_2_PRIVILEGED_DTO) /* needs to be different id for test case */ - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + .thenReturn(DATABASE_2_DTO) /* needs to be different id for test case */ + .thenReturn(DATABASE_1_DTO); /* pre-condition */ - final PrivilegedDatabaseDto tmp = credentialService.getDatabase(DATABASE_1_ID); + final DatabaseDto tmp = credentialService.getDatabase(DATABASE_1_ID); assertNotEquals(DATABASE_1_ID, tmp.getId()); Thread.sleep(5000); /* test */ - final PrivilegedDatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); + final DatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); assertNotNull(response); assertEquals(DATABASE_1_ID, response.getId()); } @@ -98,10 +98,10 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); /* test */ - final PrivilegedContainerDto response = credentialService.getContainer(CONTAINER_1_ID); + final ContainerDto response = credentialService.getContainer(CONTAINER_1_ID); assertNotNull(response); assertEquals(CONTAINER_1_ID, response.getId()); } @@ -112,12 +112,12 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO) + .thenReturn(CONTAINER_1_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getContainer(CONTAINER_1_ID); /* test */ - final PrivilegedContainerDto response = credentialService.getContainer(CONTAINER_1_ID); + final ContainerDto response = credentialService.getContainer(CONTAINER_1_ID); assertNotNull(response); assertEquals(CONTAINER_1_ID, response.getId()); } @@ -128,16 +128,16 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(DATABASE_1_ID)) - .thenReturn(CONTAINER_2_PRIVILEGED_DTO) /* needs to be different id for test case */ - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_2_DTO) /* needs to be different id for test case */ + .thenReturn(CONTAINER_1_DTO); /* pre-condition */ - final PrivilegedContainerDto tmp = credentialService.getContainer(CONTAINER_1_ID); + final ContainerDto tmp = credentialService.getContainer(CONTAINER_1_ID); assertNotEquals(CONTAINER_1_ID, tmp.getId()); Thread.sleep(5000); /* test */ - final PrivilegedContainerDto response = credentialService.getContainer(CONTAINER_1_ID); + final ContainerDto response = credentialService.getContainer(CONTAINER_1_ID); assertNotNull(response); assertEquals(CONTAINER_1_ID, response.getId()); } @@ -147,11 +147,11 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { UserNotFoundException { /* mock */ - when(metadataServiceGateway.getPrivilegedUserById(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ - final PrivilegedUserDto response = credentialService.getUser(USER_1_ID); + final UserDto response = credentialService.getUser(USER_1_ID); assertNotNull(response); assertEquals(USER_1_ID, response.getId()); } @@ -161,13 +161,13 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { UserNotFoundException { /* mock */ - when(metadataServiceGateway.getPrivilegedUserById(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO) + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getUser(USER_1_ID); /* test */ - final PrivilegedUserDto response = credentialService.getUser(USER_1_ID); + final UserDto response = credentialService.getUser(USER_1_ID); assertNotNull(response); assertEquals(USER_1_ID, response.getId()); } @@ -177,17 +177,17 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { InterruptedException, UserNotFoundException { /* mock */ - when(metadataServiceGateway.getPrivilegedUserById(USER_1_ID)) - .thenReturn(USER_2_PRIVILEGED_DTO) /* needs to be different id for test case */ - .thenReturn(USER_1_PRIVILEGED_DTO); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_2_DTO) /* needs to be different id for test case */ + .thenReturn(USER_1_DTO); /* pre-condition */ - final PrivilegedUserDto tmp = credentialService.getUser(USER_1_ID); + final UserDto tmp = credentialService.getUser(USER_1_ID); assertNotEquals(USER_1_ID, tmp.getId()); Thread.sleep(5000); /* test */ - final PrivilegedUserDto response = credentialService.getUser(USER_1_ID); + final UserDto response = credentialService.getUser(USER_1_ID); assertNotNull(response); assertEquals(USER_1_ID, response.getId()); } @@ -251,10 +251,10 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - final PrivilegedTableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); + final TableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); assertNotNull(response); assertEquals(TABLE_1_ID, response.getId()); } @@ -265,12 +265,12 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO) + .thenReturn(TABLE_1_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); /* test */ - final PrivilegedTableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); + final TableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); assertNotNull(response); assertEquals(TABLE_1_ID, response.getId()); } @@ -281,16 +281,16 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_2_PRIVILEGED_DTO) /* needs to be different id for test case */ - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_2_DTO) /* needs to be different id for test case */ + .thenReturn(TABLE_1_DTO); /* pre-condition */ - final PrivilegedTableDto tmp = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); + final TableDto tmp = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); assertNotEquals(TABLE_1_ID, tmp.getId()); Thread.sleep(5000); /* test */ - final PrivilegedTableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); + final TableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); assertNotNull(response); assertEquals(TABLE_1_ID, response.getId()); } @@ -301,10 +301,10 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_PRIVILEGED_DTO); + .thenReturn(VIEW_1_DTO); /* test */ - final PrivilegedViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); + final ViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); assertNotNull(response); assertEquals(VIEW_1_ID, response.getId()); } @@ -314,12 +314,12 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_PRIVILEGED_DTO) + .thenReturn(VIEW_1_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getView(DATABASE_1_ID, VIEW_1_ID); /* test */ - final PrivilegedViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); + final ViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); assertNotNull(response); assertEquals(VIEW_1_ID, response.getId()); } @@ -330,16 +330,16 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_2_PRIVILEGED_DTO) /* needs to be different id for test case */ - .thenReturn(VIEW_1_PRIVILEGED_DTO); + .thenReturn(VIEW_2_DTO) /* needs to be different id for test case */ + .thenReturn(VIEW_1_DTO); /* pre-condition */ - final PrivilegedViewDto tmp = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); + final ViewDto tmp = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); assertNotEquals(VIEW_1_ID, tmp.getId()); Thread.sleep(5000); /* test */ - final PrivilegedViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); + final ViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); assertNotNull(response); assertEquals(VIEW_1_ID, response.getId()); } 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 83d81715bd..26ff951dda 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 @@ -1,12 +1,29 @@ package at.tuwien.service; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.ViewColumnDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableBriefDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.database.table.columns.ColumnCreateDto; +import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.database.table.columns.ColumnTypeDto; +import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.constraints.ConstraintsDto; +import at.tuwien.api.database.table.constraints.foreign.ForeignKeyCreateDto; +import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; +import at.tuwien.api.database.table.constraints.foreign.ForeignKeyReferenceDto; +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.database.table.internal.TableCreateDto; +import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; -import at.tuwien.exception.DatabaseMalformedException; +import at.tuwien.exception.*; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,6 +36,9 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.sql.SQLException; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; import static org.junit.jupiter.api.Assertions.*; @@ -43,35 +63,39 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); } @Test - public void create_succeeds() throws SQLException, DatabaseMalformedException { + public void createView_succeeds() throws SQLException, ViewMalformedException { /* test */ - final PrivilegedDatabaseDto response = databaseService.create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL); - assertNull(response.getName()); - assertEquals(DATABASE_1_INTERNALNAME, response.getInternalName()); - assertEquals(EXCHANGE_DBREPO_NAME, response.getExchangeName()); - assertNotNull(response.getOwner()); - assertEquals(USER_1_ID, response.getOwner().getId()); - assertNotNull(response.getContact()); - assertEquals(USER_1_ID, response.getContact().getId()); - assertNotNull(response.getContainer()); - assertEquals(CONTAINER_1_ID, response.getContainer().getId()); + databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO); } @Test - public void create_exists_fails() throws SQLException { - - /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + public void exploreViews_succeeds() throws SQLException, ViewNotFoundException, DatabaseMalformedException { /* test */ - assertThrows(DatabaseMalformedException.class, () -> { - databaseService.create(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL); - }); + final List<ViewDto> response = databaseService.exploreViews(DATABASE_1_DTO); + final ViewDto view0 = response.get(0); + assertEquals("not_in_metadata_db2", view0.getName()); + assertEquals("not_in_metadata_db2", view0.getInternalName()); + assertEquals(DATABASE_1_ID, view0.getVdbid()); + assertEquals(DATABASE_1_OWNER, view0.getOwner().getId()); + assertFalse(view0.getIsInitialView()); + assertEquals(DATABASE_1_PUBLIC, view0.getIsPublic()); + assertTrue(view0.getQuery().length() >= 69); + assertNotNull(view0.getQueryHash()); + assertEquals(4, view0.getColumns().size()); + final ViewColumnDto column0a = view0.getColumns().get(0); + assertEquals("date", column0a.getInternalName()); + final ViewColumnDto column1a = view0.getColumns().get(1); + assertEquals("location", column1a.getInternalName()); + final ViewColumnDto column2a = view0.getColumns().get(2); + assertEquals("MinTemp", column2a.getInternalName()); + final ViewColumnDto column3a = view0.getColumns().get(3); + assertEquals("Rainfall", column3a.getInternalName()); } @Test @@ -82,8 +106,8 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - MariaDbConfig.grantWriteAccess(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.grantWriteAccess(DATABASE_1_DTO, USER_1_USERNAME); /* pre-condition */ MariaDbConfig.mockQuery(CONTAINER_1_HOST, CONTAINER_1_PORT, DATABASE_1_INTERNALNAME, "CREATE SEQUENCE debug NOCACHE", USER_1_USERNAME, USER_1_PASSWORD); @@ -95,7 +119,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { } /* test */ - databaseService.update(DATABASE_1_PRIVILEGED_DTO, request); + databaseService.update(DATABASE_1_DTO, request); MariaDbConfig.mockQuery(CONTAINER_1_HOST, CONTAINER_1_PORT, DATABASE_1_INTERNALNAME, "CREATE SEQUENCE debug2 NOCACHE", USER_1_USERNAME, USER_2_PASSWORD); } @@ -107,12 +131,612 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); /* test */ assertThrows(DatabaseMalformedException.class, () -> { - databaseService.update(DATABASE_1_PRIVILEGED_DTO, request); + databaseService.update(DATABASE_1_DTO, request); }); } + + @Test + public void inspectTable_sameNameDifferentDb_succeeds() throws TableNotFoundException, SQLException { + + /* mock */ + MariaDbConfig.execute(DATABASE_2_DTO, "CREATE TABLE not_in_metadata_db (wrong_id BIGINT NOT NULL PRIMARY KEY, given_name VARCHAR(255) NOT NULL, middle_name VARCHAR(255), family_name VARCHAR(255) NOT NULL, age INT NOT NULL) WITH SYSTEM VERSIONING;"); + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "not_in_metadata_db"); + assertEquals("not_in_metadata_db", response.getInternalName()); + assertEquals("not_in_metadata_db", response.getName()); + assertEquals(DATABASE_1_ID, response.getTdbid()); + assertTrue(response.getIsVersioned()); + assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); + final List<ColumnDto> columns = response.getColumns(); + assertNotNull(columns); + assertEquals(5, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns.get(1), null, null, DATABASE_1_ID, "given_name", "given_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); + assertColumn(columns.get(2), null, null, DATABASE_1_ID, "middle_name", "middle_name", ColumnTypeDto.VARCHAR, 255L, null, true, null); + assertColumn(columns.get(3), null, null, DATABASE_1_ID, "family_name", "family_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); + assertColumn(columns.get(4), null, null, DATABASE_1_ID, "age", "age", ColumnTypeDto.INT, 10L, 0L, false, null); + final ConstraintsDto constraints = response.getConstraints(); + assertNotNull(constraints); + final Set<PrimaryKeyDto> primaryKey = constraints.getPrimaryKey(); + assertEquals(1, primaryKey.size()); + final Set<String> checks = constraints.getChecks(); + assertEquals(1, checks.size()); + assertEquals(Set.of("`age` > 0 and `age` < 120"), checks); + final List<UniqueDto> uniques = constraints.getUniques(); + assertEquals(1, uniques.size()); + assertEquals(2, uniques.get(0).getColumns().size()); + assertEquals("not_in_metadata_db", uniques.get(0).getTable().getName()); + assertEquals("not_in_metadata_db", uniques.get(0).getTable().getInternalName()); + assertEquals("given_name", uniques.get(0).getColumns().get(0).getInternalName()); + assertEquals("family_name", uniques.get(0).getColumns().get(1).getInternalName()); + final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); + assertEquals(0, foreignKeys.size()); + } + + @Test + public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException { + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_2_DTO, "experiments"); + assertEquals("experiments", response.getInternalName()); + assertEquals("experiments", response.getName()); + assertEquals(DATABASE_2_ID, response.getTdbid()); + assertTrue(response.getIsVersioned()); + assertEquals(DATABASE_2_PUBLIC, response.getIsPublic()); + assertNotNull(response.getOwner()); + assertEquals(DATABASE_2_OWNER, response.getOwner().getId()); + assertEquals(USER_2_NAME, response.getOwner().getName()); + assertEquals(USER_2_USERNAME, response.getOwner().getUsername()); + assertEquals(USER_2_FIRSTNAME, response.getOwner().getFirstname()); + assertEquals(USER_2_LASTNAME, response.getOwner().getLastname()); + assertEquals(USER_2_QUALIFIED_NAME, response.getOwner().getQualifiedName()); + final List<IdentifierDto> identifiers = response.getIdentifiers(); + assertNotNull(identifiers); + assertEquals(0, identifiers.size()); + final List<ColumnDto> columns = response.getColumns(); + assertNotNull(columns); + assertEquals(3, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_2_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns.get(1), null, null, DATABASE_2_ID, "mode", "mode", ColumnTypeDto.ENUM, 3L, null, false, null); + assertEquals(2, columns.get(1).getEnums().size()); + assertEquals(List.of("ABC", "DEF"), columns.get(1).getEnums()); + assertColumn(columns.get(2), null, null, DATABASE_2_ID, "seq", "seq", ColumnTypeDto.SET, 5L, null, true, null); + assertEquals(3, columns.get(2).getSets().size()); + assertEquals(List.of("1", "2", "3"), columns.get(2).getSets()); + /* ignore rest (constraints) */ + } + + @Test + public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException { + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "weather_aus"); + assertEquals("weather_aus", response.getInternalName()); + assertEquals("weather_aus", response.getName()); + assertEquals(DATABASE_1_ID, response.getTdbid()); + assertTrue(response.getIsVersioned()); + assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); + assertNotNull(response.getOwner()); + assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); + assertEquals(USER_1_NAME, response.getOwner().getName()); + assertEquals(USER_1_USERNAME, response.getOwner().getUsername()); + assertEquals(USER_1_FIRSTNAME, response.getOwner().getFirstname()); + assertEquals(USER_1_LASTNAME, response.getOwner().getLastname()); + assertEquals(USER_1_QUALIFIED_NAME, response.getOwner().getQualifiedName()); + final List<IdentifierDto> identifiers = response.getIdentifiers(); + assertNotNull(identifiers); + assertEquals(0, identifiers.size()); + final List<ColumnDto> columns = response.getColumns(); + assertNotNull(columns); + assertEquals(5, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 20L, 0L, false, null); + assertColumn(columns.get(1), null, null, DATABASE_1_ID, "date", "date", ColumnTypeDto.DATE, null, null, false, null); + assertColumn(columns.get(2), null, null, DATABASE_1_ID, "location", "location", ColumnTypeDto.VARCHAR, 255L, null, true, "Closest city"); + assertColumn(columns.get(3), null, null, DATABASE_1_ID, "mintemp", "mintemp", ColumnTypeDto.DOUBLE, 22L, null, true, null); + assertColumn(columns.get(4), null, null, DATABASE_1_ID, "rainfall", "rainfall", ColumnTypeDto.DOUBLE, 22L, null, true, null); + final ConstraintsDto constraints = response.getConstraints(); + final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); + assertEquals(1, primaryKey.size()); + final PrimaryKeyDto pk0 = primaryKey.get(0); + assertNull(pk0.getId()); + assertNotNull(pk0.getTable()); + assertNull(pk0.getTable().getId()); + assertEquals("weather_aus", pk0.getTable().getName()); + assertEquals("weather_aus", pk0.getTable().getInternalName()); + assertEquals("Weather in Australia", pk0.getTable().getDescription()); + assertNotNull(pk0.getColumn()); + assertNull(pk0.getColumn().getId()); + assertNull(pk0.getColumn().getTableId()); + assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); + assertNull(pk0.getColumn().getAlias()); + assertEquals("id", pk0.getColumn().getName()); + assertEquals("id", pk0.getColumn().getInternalName()); + assertEquals(ColumnTypeDto.BIGINT, pk0.getColumn().getColumnType()); + final List<UniqueDto> uniques = constraints.getUniques(); + assertEquals(1, uniques.size()); + final UniqueDto unique0 = uniques.get(0); + assertNotNull(unique0.getTable()); + assertEquals("some_constraint", unique0.getName()); + assertNull(unique0.getTable().getId()); + assertEquals(TABLE_1_INTERNAL_NAME, unique0.getTable().getName()); + assertEquals(TABLE_1_INTERNAL_NAME, unique0.getTable().getInternalName()); + assertEquals(TABLE_1_DESCRIPTION, unique0.getTable().getDescription()); + assertTrue(unique0.getTable().getIsVersioned()); + assertNotNull(unique0.getColumns()); + assertEquals(1, unique0.getColumns().size()); + assertNull(unique0.getColumns().get(0).getId()); + assertNull(unique0.getColumns().get(0).getTableId()); + assertEquals("date", unique0.getColumns().get(0).getName()); + assertEquals("date", unique0.getColumns().get(0).getInternalName()); + final List<String> checks = new LinkedList<>(constraints.getChecks()); + assertEquals("`mintemp` > 0", checks.get(0)); + final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); + assertEquals(1, foreignKeys.size()); + final ForeignKeyDto fk0 = foreignKeys.get(0); + assertNotNull(fk0.getName()); + assertNotNull(fk0.getReferences()); + final ForeignKeyReferenceDto fk0ref0 = fk0.getReferences().get(0); + assertNull(fk0ref0.getId()); + assertNotNull(fk0ref0.getColumn()); + assertNotNull(fk0ref0.getReferencedColumn()); + assertNotNull(fk0ref0.getForeignKey()); + assertEquals(DATABASE_1_ID, fk0ref0.getColumn().getDatabaseId()); + assertNull(fk0ref0.getColumn().getId()); + assertNull(fk0ref0.getColumn().getTableId()); + assertEquals("location", fk0ref0.getColumn().getName()); + assertEquals("location", fk0ref0.getColumn().getInternalName()); + assertEquals(DATABASE_1_ID, fk0ref0.getReferencedColumn().getDatabaseId()); + assertNull(fk0ref0.getReferencedColumn().getId()); + assertNull(fk0ref0.getReferencedColumn().getTableId()); + assertEquals("location", fk0ref0.getReferencedColumn().getName()); + assertEquals("location", fk0ref0.getReferencedColumn().getInternalName()); + assertNotNull(fk0.getOnUpdate()); + assertEquals(ReferenceTypeDto.RESTRICT, fk0.getOnUpdate()); + assertNotNull(fk0.getOnDelete()); + assertEquals(ReferenceTypeDto.SET_NULL, fk0.getOnDelete()); + final TableBriefDto fk0table = fk0.getTable(); + assertNull(fk0table.getId()); + assertEquals(DATABASE_1_ID, fk0table.getDatabaseId()); + assertEquals(TABLE_1_INTERNAL_NAME, fk0table.getName()); + assertEquals(TABLE_1_INTERNAL_NAME, fk0table.getInternalName()); + assertNotNull(fk0.getOnDelete()); + assertNotNull(fk0.getOnUpdate()); + assertNotNull(fk0.getReferencedTable()); + assertEquals(TABLE_2_INTERNALNAME, fk0.getReferencedTable().getName()); + assertEquals(TABLE_2_INTERNALNAME, fk0.getReferencedTable().getInternalName()); + } + + @Test + public void inspectTable_multipleForeignKeyReferences_succeeds() throws TableNotFoundException, SQLException { + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "complex_foreign_keys"); + final ConstraintsDto constraints = response.getConstraints(); + final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); + assertEquals(1, foreignKeys.size()); + final ForeignKeyDto fk0 = foreignKeys.get(0); + assertNotNull(fk0.getName()); + assertNotNull(fk0.getReferences()); + final ForeignKeyReferenceDto fk0ref0 = fk0.getReferences().get(0); + assertNull(fk0ref0.getId()); + assertNotNull(fk0ref0.getColumn()); + assertNotNull(fk0ref0.getReferencedColumn()); + assertNotNull(fk0ref0.getForeignKey()); + assertEquals(DATABASE_1_ID, fk0ref0.getColumn().getDatabaseId()); + assertNull(fk0ref0.getColumn().getId()); + assertNull(fk0ref0.getColumn().getTableId()); + assertEquals("weather_id", fk0ref0.getColumn().getName()); + assertEquals("weather_id", fk0ref0.getColumn().getInternalName()); + assertEquals(DATABASE_1_ID, fk0ref0.getReferencedColumn().getDatabaseId()); + assertNull(fk0ref0.getReferencedColumn().getId()); + assertNull(fk0ref0.getReferencedColumn().getTableId()); + assertEquals("id", fk0ref0.getReferencedColumn().getName()); + assertEquals("id", fk0ref0.getReferencedColumn().getInternalName()); + final ForeignKeyReferenceDto fk0ref1 = fk0.getReferences().get(1); + assertNull(fk0ref1.getId()); + assertNotNull(fk0ref1.getColumn()); + assertNotNull(fk0ref1.getReferencedColumn()); + assertNotNull(fk0ref1.getForeignKey()); + assertEquals(DATABASE_1_ID, fk0ref1.getColumn().getDatabaseId()); + assertNull(fk0ref1.getColumn().getId()); + assertNull(fk0ref1.getColumn().getTableId()); + assertEquals("other_id", fk0ref1.getColumn().getName()); + assertEquals("other_id", fk0ref1.getColumn().getInternalName()); + assertEquals(DATABASE_1_ID, fk0ref1.getReferencedColumn().getDatabaseId()); + assertNull(fk0ref1.getReferencedColumn().getId()); + assertNull(fk0ref1.getReferencedColumn().getTableId()); + assertEquals("other_id", fk0ref1.getReferencedColumn().getName()); + assertEquals("other_id", fk0ref1.getReferencedColumn().getInternalName()); + final TableBriefDto fk0refT0 = fk0.getTable(); + assertNull(fk0refT0.getId()); + assertEquals(DATABASE_1_ID, fk0refT0.getDatabaseId()); + assertEquals("complex_foreign_keys", fk0refT0.getName()); + assertEquals("complex_foreign_keys", fk0refT0.getInternalName()); + assertNotNull(fk0.getReferencedTable()); + assertEquals("complex_primary_key", fk0.getReferencedTable().getName()); + assertEquals("complex_primary_key", fk0.getReferencedTable().getInternalName()); + assertNotNull(fk0.getOnDelete()); + assertNotNull(fk0.getOnUpdate()); + } + + @Test + public void inspectTable_multiplePrimaryKey_succeeds() throws TableNotFoundException, SQLException { + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "complex_primary_key"); + final ConstraintsDto constraints = response.getConstraints(); + final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); + assertEquals(2, primaryKey.size()); + final PrimaryKeyDto pk0 = primaryKey.get(0); + assertNull(pk0.getId()); + assertNotNull(pk0.getTable()); + assertNull(pk0.getTable().getId()); + assertEquals("complex_primary_key", pk0.getTable().getName()); + assertEquals("complex_primary_key", pk0.getTable().getInternalName()); + assertNotNull(pk0.getColumn()); + assertNull(pk0.getColumn().getId()); + assertNull(pk0.getColumn().getTableId()); + assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); + assertNull(pk0.getColumn().getAlias()); + assertEquals("id", pk0.getColumn().getName()); + assertEquals("id", pk0.getColumn().getInternalName()); + assertEquals(ColumnTypeDto.BIGINT, pk0.getColumn().getColumnType()); + final PrimaryKeyDto pk1 = primaryKey.get(1); + assertNull(pk1.getId()); + assertNotNull(pk1.getTable()); + assertNull(pk1.getTable().getId()); + assertEquals("complex_primary_key", pk1.getTable().getName()); + assertEquals("complex_primary_key", pk1.getTable().getInternalName()); + assertNotNull(pk1.getColumn()); + assertNull(pk1.getColumn().getId()); + assertNull(pk1.getColumn().getTableId()); + assertEquals(DATABASE_1_ID, pk1.getColumn().getDatabaseId()); + assertNull(pk1.getColumn().getAlias()); + assertEquals("other_id", pk1.getColumn().getName()); + assertEquals("other_id", pk1.getColumn().getInternalName()); + assertEquals(ColumnTypeDto.BIGINT, pk1.getColumn().getColumnType()); + } + + @Test + public void inspectTable_exoticBoolean_succeeds() throws TableNotFoundException, SQLException { + + /* test */ + final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "exotic_boolean"); + final ConstraintsDto constraints = response.getConstraints(); + final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); + assertEquals(1, primaryKey.size()); + final PrimaryKeyDto pk0 = primaryKey.get(0); + assertNull(pk0.getId()); + assertNotNull(pk0.getTable()); + assertNull(pk0.getTable().getId()); + assertEquals("exotic_boolean", pk0.getTable().getName()); + assertEquals("exotic_boolean", pk0.getTable().getInternalName()); + assertNotNull(pk0.getColumn()); + assertNull(pk0.getColumn().getId()); + assertNull(pk0.getColumn().getTableId()); + assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); + assertNull(pk0.getColumn().getAlias()); + assertEquals("bool_default", pk0.getColumn().getName()); + assertEquals("bool_default", pk0.getColumn().getInternalName()); + assertEquals(ColumnTypeDto.BOOL, pk0.getColumn().getColumnType()); + final List<ColumnDto> columns = response.getColumns(); + assertEquals(3, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_1_ID, "bool_default", "bool_default", ColumnTypeDto.BOOL, null, 0L, false, null); + assertColumn(columns.get(1), null, null, DATABASE_1_ID, "bool_tinyint", "bool_tinyint", ColumnTypeDto.BOOL, null, 0L, false, null); + assertColumn(columns.get(2), null, null, DATABASE_1_ID, "bool_tinyint_unsigned", "bool_tinyint_unsigned", ColumnTypeDto.BOOL, null, 0L, false, null); + } + + @Test + public void inspectView_succeeds() throws SQLException, ViewNotFoundException { + + /* test */ + final ViewDto response = databaseService.inspectView(DATABASE_1_DTO, "not_in_metadata_db2"); + assertEquals("not_in_metadata_db2", response.getInternalName()); + assertEquals("not_in_metadata_db2", response.getName()); + assertEquals(DATABASE_1_ID, response.getVdbid()); + assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); + assertFalse(response.getIsInitialView()); + assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); + assertTrue(response.getQuery().length() >= 69); + assertNotNull(response.getQueryHash()); + assertEquals(4, response.getColumns().size()); + final ViewColumnDto column0 = response.getColumns().get(0); + assertNotNull(column0.getName()); + assertEquals("date", column0.getInternalName()); + assertEquals(DATABASE_1_ID, column0.getDatabaseId()); + final ViewColumnDto column1 = response.getColumns().get(1); + assertNotNull(column1.getName()); + assertEquals("location", column1.getInternalName()); + assertEquals(DATABASE_1_ID, column1.getDatabaseId()); + final ViewColumnDto column2 = response.getColumns().get(2); + assertNotNull(column2.getName()); + assertEquals("MinTemp", column2.getInternalName()); + assertEquals(DATABASE_1_ID, column2.getDatabaseId()); + final ViewColumnDto column3 = response.getColumns().get(3); + assertNotNull(column3.getName()); + assertEquals("Rainfall", column3.getInternalName()); + assertEquals(DATABASE_1_ID, column3.getDatabaseId()); + } + + @Test + public void getSchemas_succeeds() throws TableNotFoundException, SQLException, DatabaseMalformedException { + + /* test */ + final List<TableDto> response = databaseService.exploreTables(DATABASE_1_DTO); + assertEquals(4, response.size()); + final TableDto table0 = response.get(0); + Assertions.assertEquals("complex_foreign_keys", table0.getInternalName()); + Assertions.assertEquals("complex_foreign_keys", table0.getName()); + Assertions.assertEquals(DATABASE_1_ID, table0.getTdbid()); + assertTrue(table0.getIsVersioned()); + Assertions.assertEquals(DATABASE_1_PUBLIC, table0.getIsPublic()); + final List<ColumnDto> columns0 = table0.getColumns(); + assertNotNull(columns0); + Assertions.assertEquals(3, columns0.size()); + assertColumn(columns0.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns0.get(1), null, null, DATABASE_1_ID, "weather_id", "weather_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns0.get(2), null, null, DATABASE_1_ID, "other_id", "other_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + final ConstraintsDto constraints0 = table0.getConstraints(); + assertNotNull(constraints0); + assertEquals(1, constraints0.getPrimaryKey().size()); + final PrimaryKeyDto pk0 = new LinkedList<>(constraints0.getPrimaryKey()).get(0); + assertNull(pk0.getId()); + assertNull(pk0.getColumn().getId()); + assertEquals("id", pk0.getColumn().getName()); + assertEquals("id", pk0.getColumn().getInternalName()); + assertEquals(1, constraints0.getForeignKeys().size()); + final ForeignKeyDto fk0 = constraints0.getForeignKeys().get(0); + assertNotNull(fk0.getName()); + assertNull(fk0.getTable().getId()); + assertEquals("complex_foreign_keys", fk0.getTable().getName()); + assertEquals("complex_foreign_keys", fk0.getTable().getInternalName()); + assertNull(fk0.getReferencedTable().getId()); + assertEquals("complex_primary_key", fk0.getReferencedTable().getName()); + assertEquals("complex_primary_key", fk0.getReferencedTable().getInternalName()); + assertEquals(2, fk0.getReferences().size()); + final ForeignKeyReferenceDto fk0r0 = fk0.getReferences().get(0); + assertEquals("weather_id", fk0r0.getColumn().getName()); + assertEquals("weather_id", fk0r0.getColumn().getInternalName()); + assertNotNull(fk0r0.getColumn().getName()); + assertNotNull(fk0r0.getForeignKey()); + assertEquals("id", fk0r0.getReferencedColumn().getName()); + assertEquals("id", fk0r0.getReferencedColumn().getInternalName()); + final ForeignKeyReferenceDto fk0r1 = fk0.getReferences().get(1); + assertEquals("other_id", fk0r1.getColumn().getName()); + assertEquals("other_id", fk0r1.getColumn().getInternalName()); + assertNotNull(fk0r1.getColumn().getName()); + assertNotNull(fk0r1.getForeignKey()); + assertEquals("other_id", fk0r1.getReferencedColumn().getName()); + assertEquals("other_id", fk0r1.getReferencedColumn().getInternalName()); + assertEquals(0, constraints0.getChecks().size()); + assertEquals(0, constraints0.getUniques().size()); + /* table 1 */ + final TableDto table1 = response.get(1); + Assertions.assertEquals("complex_primary_key", table1.getInternalName()); + Assertions.assertEquals("complex_primary_key", table1.getName()); + Assertions.assertEquals(DATABASE_1_ID, table1.getTdbid()); + assertTrue(table1.getIsVersioned()); + Assertions.assertEquals(DATABASE_1_PUBLIC, table1.getIsPublic()); + final List<ColumnDto> columns1 = table1.getColumns(); + assertNotNull(columns1); + Assertions.assertEquals(2, columns1.size()); + assertColumn(columns1.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns1.get(1), null, null, DATABASE_1_ID, "other_id", "other_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + final ConstraintsDto constraints1 = table1.getConstraints(); + assertNotNull(constraints1); + assertEquals(2, constraints1.getPrimaryKey().size()); + final PrimaryKeyDto pk10 = new LinkedList<>(constraints1.getPrimaryKey()).get(0); + assertNull(pk10.getId()); + assertNull(pk10.getColumn().getId()); + assertEquals("id", pk10.getColumn().getName()); + assertEquals("id", pk10.getColumn().getInternalName()); + final PrimaryKeyDto pk11 = new LinkedList<>(constraints1.getPrimaryKey()).get(1); + assertNull(pk11.getId()); + assertNull(pk11.getColumn().getId()); + assertEquals("other_id", pk11.getColumn().getName()); + assertEquals("other_id", pk11.getColumn().getInternalName()); + assertEquals(0, constraints1.getForeignKeys().size()); + assertEquals(0, constraints1.getChecks().size()); + assertEquals(0, constraints1.getUniques().size()); + /* table 2 */ + final TableDto table2 = response.get(2); + Assertions.assertEquals("exotic_boolean", table2.getInternalName()); + Assertions.assertEquals("exotic_boolean", table2.getName()); + Assertions.assertEquals(DATABASE_1_ID, table2.getTdbid()); + assertTrue(table2.getIsVersioned()); + Assertions.assertEquals(DATABASE_1_PUBLIC, table2.getIsPublic()); + final List<ColumnDto> columns2 = table2.getColumns(); + assertNotNull(columns2); + Assertions.assertEquals(3, columns2.size()); + assertColumn(columns2.get(0), null, null, DATABASE_1_ID, "bool_default", "bool_default", ColumnTypeDto.BOOL, null, 0L, false, null); + assertColumn(columns2.get(1), null, null, DATABASE_1_ID, "bool_tinyint", "bool_tinyint", ColumnTypeDto.BOOL, null, 0L, false, null); + assertColumn(columns2.get(2), null, null, DATABASE_1_ID, "bool_tinyint_unsigned", "bool_tinyint_unsigned", ColumnTypeDto.BOOL, null, 0L, false, null); + final ConstraintsDto constraints2 = table2.getConstraints(); + assertNotNull(constraints2); + final Set<PrimaryKeyDto> primaryKey2 = constraints2.getPrimaryKey(); + Assertions.assertEquals(1, primaryKey2.size()); + final Set<String> checks2 = constraints2.getChecks(); + Assertions.assertEquals(0, checks2.size()); + final List<UniqueDto> uniques2 = constraints2.getUniques(); + Assertions.assertEquals(0, uniques2.size()); + /* table 3 */ + final TableDto table3 = response.get(3); + Assertions.assertEquals("not_in_metadata_db", table3.getInternalName()); + Assertions.assertEquals("not_in_metadata_db", table3.getName()); + Assertions.assertEquals(DATABASE_1_ID, table3.getTdbid()); + assertTrue(table3.getIsVersioned()); + Assertions.assertEquals(DATABASE_1_PUBLIC, table3.getIsPublic()); + final List<ColumnDto> columns3 = table3.getColumns(); + assertNotNull(columns3); + Assertions.assertEquals(5, columns3.size()); + assertColumn(columns3.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); + assertColumn(columns3.get(1), null, null, DATABASE_1_ID, "given_name", "given_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); + assertColumn(columns3.get(2), null, null, DATABASE_1_ID, "middle_name", "middle_name", ColumnTypeDto.VARCHAR, 255L, null, true, null); + assertColumn(columns3.get(3), null, null, DATABASE_1_ID, "family_name", "family_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); + assertColumn(columns3.get(4), null, null, DATABASE_1_ID, "age", "age", ColumnTypeDto.INT, 10L, 0L, false, null); + final ConstraintsDto constraints3 = table3.getConstraints(); + assertNotNull(constraints3); + final Set<PrimaryKeyDto> primaryKey3 = constraints3.getPrimaryKey(); + Assertions.assertEquals(1, primaryKey3.size()); + final Set<String> checks3 = constraints3.getChecks(); + Assertions.assertEquals(1, checks3.size()); + Assertions.assertEquals(Set.of("`age` > 0 and `age` < 120"), checks3); + final List<UniqueDto> uniques3 = constraints3.getUniques(); + Assertions.assertEquals(1, uniques3.size()); + Assertions.assertEquals(2, uniques3.get(0).getColumns().size()); + Assertions.assertEquals("not_in_metadata_db", uniques3.get(0).getTable().getInternalName()); + Assertions.assertEquals("given_name", uniques3.get(0).getColumns().get(0).getInternalName()); + Assertions.assertEquals("family_name", uniques3.get(0).getColumns().get(1).getInternalName()); + } + + @Test + public void createTable_succeeds() throws TableNotFoundException, TableMalformedException, SQLException, + TableExistsException { + + /* test */ + final TableDto response = databaseService.createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO); + assertEquals(TABLE_4_NAME, response.getName()); + assertEquals(TABLE_4_INTERNALNAME, response.getInternalName()); + final List<ColumnDto> columns = response.getColumns(); + assertEquals(TABLE_4_COLUMNS.size(), columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_1_ID, "timestamp", "timestamp", ColumnTypeDto.TIMESTAMP, null, null, false, null); + assertColumn(columns.get(1), null, null, DATABASE_1_ID, "value", "value", ColumnTypeDto.DECIMAL, 10L, 10L, true, null); + final ConstraintsDto constraints = response.getConstraints(); + assertNotNull(constraints); + final Set<PrimaryKeyDto> primaryKey = constraints.getPrimaryKey(); + Assertions.assertEquals(1, primaryKey.size()); + final Set<String> checks = constraints.getChecks(); + Assertions.assertEquals(0, checks.size()); + } + + @Test + public void createTable_malformed_fails() { + final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() + .name("missing_foreign_key") + .columns(List.of()) + .constraints(ConstraintsCreateDto.builder() + .foreignKeys(List.of(ForeignKeyCreateDto.builder() + .columns(List.of("i_do_not_exist")) + .referencedTable("neither_do_i") + .referencedColumns(List.of("behold")) + .build())) + .build()) + .build(); + + /* test */ + assertThrows(TableMalformedException.class, () -> { + databaseService.createTable(DATABASE_1_DTO, request); + }); + } + + @Test + public void createTable_compositePrimaryKey_fails() throws TableNotFoundException, TableMalformedException, SQLException, + TableExistsException { + final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() + .name("composite_primary_key") + .columns(List.of(ColumnCreateDto.builder() + .name("name") + .type(ColumnTypeDto.VARCHAR) + .size(255L) + .nullAllowed(false) + .build(), + ColumnCreateDto.builder() + .name("lat") + .type(ColumnTypeDto.DECIMAL) + .size(10L) + .d(10L) + .nullAllowed(false) + .build(), + ColumnCreateDto.builder() + .name("lng") + .type(ColumnTypeDto.DECIMAL) + .size(10L) + .d(10L) + .nullAllowed(false) + .build())) + .constraints(ConstraintsCreateDto.builder() + .primaryKey(Set.of("lat", "lng")) + .foreignKeys(List.of()) + .checks(Set.of()) + .uniques(List.of()) + .build()) + .build(); + + /* test */ + final TableDto response = databaseService.createTable(DATABASE_1_DTO, request); + assertEquals("composite_primary_key", response.getName()); + assertEquals("composite_primary_key", response.getInternalName()); + final List<ColumnDto> columns = response.getColumns(); + assertEquals(3, columns.size()); + assertColumn(columns.get(0), null, null, DATABASE_1_ID, "name", "name", ColumnTypeDto.VARCHAR, 255L, null, false, null); + assertColumn(columns.get(1), null, null, DATABASE_1_ID, "lat", "lat", ColumnTypeDto.DECIMAL, 10L, 10L, false, null); + assertColumn(columns.get(2), null, null, DATABASE_1_ID, "lng", "lng", ColumnTypeDto.DECIMAL, 10L, 10L, false, null); + final ConstraintsDto constraints = response.getConstraints(); + assertNotNull(constraints); + final Set<String> checks = constraints.getChecks(); + assertNotNull(checks); + assertEquals(0, checks.size()); + final List<PrimaryKeyDto> primaryKeys = new LinkedList<>(constraints.getPrimaryKey()); + assertNotNull(primaryKeys); + assertEquals(2, primaryKeys.size()); + assertEquals("lat", primaryKeys.get(0).getColumn().getInternalName()); + assertEquals("lng", primaryKeys.get(1).getColumn().getInternalName()); + final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); + assertNotNull(foreignKeys); + assertEquals(0, foreignKeys.size()); + final List<UniqueDto> uniques = constraints.getUniques(); + assertNotNull(uniques); + assertEquals(0, uniques.size()); + } + + @Test + public void createTable_needSequence_succeeds() throws TableNotFoundException, TableMalformedException, SQLException, + TableExistsException { + + /* mock */ + MariaDbConfig.dropTable(DATABASE_1_DTO, TABLE_1_INTERNAL_NAME); + + /* test */ + final TableDto response = databaseService.createTable(DATABASE_1_DTO, TABLE_1_CREATE_INTERNAL_DTO); + assertEquals(TABLE_1_NAME, response.getName()); + assertEquals(TABLE_1_INTERNAL_NAME, response.getInternalName()); + 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, + String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed, + String description) { + log.trace("assert column: {}", internalName); + assertNotNull(column); + assertEquals(id, column.getId()); + assertEquals(tableId, column.getTableId()); + assertEquals(databaseId, column.getDatabaseId()); + assertEquals(name, column.getName()); + assertEquals(internalName, column.getInternalName()); + assertEquals(type, column.getColumnType()); + assertEquals(size, column.getSize()); + assertEquals(d, column.getD()); + assertEquals(nullAllowed, column.getIsNullAllowed()); + assertEquals(description, column.getDescription()); + } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java index bd57eafacc..a2ff1716e5 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java @@ -52,8 +52,8 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test @@ -69,12 +69,12 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - queueService.insert(TABLE_1_PRIVILEGED_DTO, request); + queueService.insert(TABLE_1_DTO, request); } @Test @@ -87,10 +87,10 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - queueService.insert(TABLE_1_PRIVILEGED_DTO, request); + queueService.insert(TABLE_1_DTO, request); } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java deleted file mode 100644 index 2a0ad624db..0000000000 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java +++ /dev/null @@ -1,416 +0,0 @@ -package at.tuwien.service; - -import at.tuwien.api.database.ViewColumnDto; -import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.constraints.ConstraintsDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyReferenceDto; -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.identifier.IdentifierDto; -import at.tuwien.config.MariaDbConfig; -import at.tuwien.config.MariaDbContainerConfig; -import at.tuwien.exception.TableNotFoundException; -import at.tuwien.exception.ViewNotFoundException; -import at.tuwien.test.AbstractUnitTest; -import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.testcontainers.containers.MariaDBContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -import java.sql.SQLException; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.junit.jupiter.api.Assertions.*; - -@Log4j2 -@SpringBootTest -@ExtendWith(SpringExtension.class) -@Testcontainers -public class SchemaServiceIntegrationTest extends AbstractUnitTest { - - @Autowired - private SchemaService schemaService; - - @Container - private static MariaDBContainer<?> mariaDBContainer = MariaDbContainerConfig.getContainer(); - - @BeforeEach - public void beforeEach() throws SQLException { - genesis(); - /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_DTO); - } - - @Test - public void inspectTable_sameNameDifferentDb_succeeds() throws TableNotFoundException, SQLException { - - /* mock */ - MariaDbConfig.execute(DATABASE_2_PRIVILEGED_DTO, "CREATE TABLE not_in_metadata_db (wrong_id BIGINT NOT NULL PRIMARY KEY, given_name VARCHAR(255) NOT NULL, middle_name VARCHAR(255), family_name VARCHAR(255) NOT NULL, age INT NOT NULL) WITH SYSTEM VERSIONING;"); - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "not_in_metadata_db"); - assertEquals("not_in_metadata_db", response.getInternalName()); - assertEquals("not_in_metadata_db", response.getName()); - assertEquals(DATABASE_1_ID, response.getTdbid()); - assertTrue(response.getIsVersioned()); - assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); - final List<ColumnDto> columns = response.getColumns(); - assertNotNull(columns); - assertEquals(5, columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns.get(1), null, null, DATABASE_1_ID, "given_name", "given_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); - assertColumn(columns.get(2), null, null, DATABASE_1_ID, "middle_name", "middle_name", ColumnTypeDto.VARCHAR, 255L, null, true, null); - assertColumn(columns.get(3), null, null, DATABASE_1_ID, "family_name", "family_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); - assertColumn(columns.get(4), null, null, DATABASE_1_ID, "age", "age", ColumnTypeDto.INT, 10L, 0L, false, null); - final ConstraintsDto constraints = response.getConstraints(); - assertNotNull(constraints); - final Set<PrimaryKeyDto> primaryKey = constraints.getPrimaryKey(); - assertEquals(1, primaryKey.size()); - final Set<String> checks = constraints.getChecks(); - assertEquals(1, checks.size()); - assertEquals(Set.of("`age` > 0 and `age` < 120"), checks); - final List<UniqueDto> uniques = constraints.getUniques(); - assertEquals(1, uniques.size()); - assertEquals(2, uniques.get(0).getColumns().size()); - assertEquals("not_in_metadata_db", uniques.get(0).getTable().getName()); - assertEquals("not_in_metadata_db", uniques.get(0).getTable().getInternalName()); - assertEquals("given_name", uniques.get(0).getColumns().get(0).getInternalName()); - assertEquals("family_name", uniques.get(0).getColumns().get(1).getInternalName()); - final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); - assertEquals(0, foreignKeys.size()); - } - - @Test - public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException { - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_2_PRIVILEGED_DTO, "experiments"); - assertEquals("experiments", response.getInternalName()); - assertEquals("experiments", response.getName()); - assertEquals(DATABASE_2_ID, response.getTdbid()); - assertTrue(response.getIsVersioned()); - assertEquals(DATABASE_2_PUBLIC, response.getIsPublic()); - assertNotNull(response.getOwner()); - assertEquals(DATABASE_2_OWNER, response.getOwner().getId()); - assertEquals(USER_2_NAME, response.getOwner().getName()); - assertEquals(USER_2_USERNAME, response.getOwner().getUsername()); - assertEquals(USER_2_FIRSTNAME, response.getOwner().getFirstname()); - assertEquals(USER_2_LASTNAME, response.getOwner().getLastname()); - assertEquals(USER_2_QUALIFIED_NAME, response.getOwner().getQualifiedName()); - final List<IdentifierDto> identifiers = response.getIdentifiers(); - assertNotNull(identifiers); - assertEquals(0, identifiers.size()); - final List<ColumnDto> columns = response.getColumns(); - assertNotNull(columns); - assertEquals(3, columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_2_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns.get(1), null, null, DATABASE_2_ID, "mode", "mode", ColumnTypeDto.ENUM, 3L, null, false, null); - assertEquals(2, columns.get(1).getEnums().size()); - assertEquals(List.of("ABC", "DEF"), columns.get(1).getEnums()); - assertColumn(columns.get(2), null, null, DATABASE_2_ID, "seq", "seq", ColumnTypeDto.SET, 5L, null, true, null); - assertEquals(3, columns.get(2).getSets().size()); - assertEquals(List.of("1", "2", "3"), columns.get(2).getSets()); - /* ignore rest (constraints) */ - } - - @Test - public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException { - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "weather_aus"); - assertEquals("weather_aus", response.getInternalName()); - assertEquals("weather_aus", response.getName()); - assertEquals(DATABASE_1_ID, response.getTdbid()); - assertTrue(response.getIsVersioned()); - assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); - assertNotNull(response.getOwner()); - assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); - assertEquals(USER_1_NAME, response.getOwner().getName()); - assertEquals(USER_1_USERNAME, response.getOwner().getUsername()); - assertEquals(USER_1_FIRSTNAME, response.getOwner().getFirstname()); - assertEquals(USER_1_LASTNAME, response.getOwner().getLastname()); - assertEquals(USER_1_QUALIFIED_NAME, response.getOwner().getQualifiedName()); - final List<IdentifierDto> identifiers = response.getIdentifiers(); - assertNotNull(identifiers); - assertEquals(0, identifiers.size()); - final List<ColumnDto> columns = response.getColumns(); - assertNotNull(columns); - assertEquals(5, columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 20L, 0L, false, null); - assertColumn(columns.get(1), null, null, DATABASE_1_ID, "date", "date", ColumnTypeDto.DATE, null, null, false, null); - assertColumn(columns.get(2), null, null, DATABASE_1_ID, "location", "location", ColumnTypeDto.VARCHAR, 255L, null, true, "Closest city"); - assertColumn(columns.get(3), null, null, DATABASE_1_ID, "mintemp", "mintemp", ColumnTypeDto.DOUBLE, 22L, null, true, null); - assertColumn(columns.get(4), null, null, DATABASE_1_ID, "rainfall", "rainfall", ColumnTypeDto.DOUBLE, 22L, null, true, null); - final ConstraintsDto constraints = response.getConstraints(); - final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); - assertEquals(1, primaryKey.size()); - final PrimaryKeyDto pk0 = primaryKey.get(0); - assertNull(pk0.getId()); - assertNotNull(pk0.getTable()); - assertNull(pk0.getTable().getId()); - assertEquals("weather_aus", pk0.getTable().getName()); - assertEquals("weather_aus", pk0.getTable().getInternalName()); - assertEquals("Weather in Australia", pk0.getTable().getDescription()); - assertNotNull(pk0.getColumn()); - assertNull(pk0.getColumn().getId()); - assertNull(pk0.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); - assertNull(pk0.getColumn().getAlias()); - assertEquals("id", pk0.getColumn().getName()); - assertEquals("id", pk0.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.BIGINT, pk0.getColumn().getColumnType()); - final List<UniqueDto> uniques = constraints.getUniques(); - assertEquals(1, uniques.size()); - final UniqueDto unique0 = uniques.get(0); - assertNotNull(unique0.getTable()); - assertEquals("some_constraint", unique0.getName()); - assertNull(unique0.getTable().getId()); - assertEquals(TABLE_1_INTERNAL_NAME, unique0.getTable().getName()); - assertEquals(TABLE_1_INTERNAL_NAME, unique0.getTable().getInternalName()); - assertEquals(TABLE_1_DESCRIPTION, unique0.getTable().getDescription()); - assertTrue(unique0.getTable().getIsVersioned()); - assertNotNull(unique0.getColumns()); - assertEquals(1, unique0.getColumns().size()); - assertNull(unique0.getColumns().get(0).getId()); - assertNull(unique0.getColumns().get(0).getTableId()); - assertEquals("date", unique0.getColumns().get(0).getName()); - assertEquals("date", unique0.getColumns().get(0).getInternalName()); - final List<String> checks = new LinkedList<>(constraints.getChecks()); - assertEquals("`mintemp` > 0", checks.get(0)); - final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); - assertEquals(1, foreignKeys.size()); - final ForeignKeyDto fk0 = foreignKeys.get(0); - assertNotNull(fk0.getName()); - assertNotNull(fk0.getReferences()); - final ForeignKeyReferenceDto fk0ref0 = fk0.getReferences().get(0); - assertNull(fk0ref0.getId()); - assertNotNull(fk0ref0.getColumn()); - assertNotNull(fk0ref0.getReferencedColumn()); - assertNotNull(fk0ref0.getForeignKey()); - assertEquals(DATABASE_1_ID, fk0ref0.getColumn().getDatabaseId()); - assertNull(fk0ref0.getColumn().getId()); - assertNull(fk0ref0.getColumn().getTableId()); - assertEquals("location", fk0ref0.getColumn().getName()); - assertEquals("location", fk0ref0.getColumn().getInternalName()); - assertEquals(DATABASE_1_ID, fk0ref0.getReferencedColumn().getDatabaseId()); - assertNull(fk0ref0.getReferencedColumn().getId()); - assertNull(fk0ref0.getReferencedColumn().getTableId()); - assertEquals("location", fk0ref0.getReferencedColumn().getName()); - assertEquals("location", fk0ref0.getReferencedColumn().getInternalName()); - assertNotNull(fk0.getOnUpdate()); - assertEquals(ReferenceTypeDto.RESTRICT, fk0.getOnUpdate()); - assertNotNull(fk0.getOnDelete()); - assertEquals(ReferenceTypeDto.SET_NULL, fk0.getOnDelete()); - final TableBriefDto fk0table = fk0.getTable(); - assertNull(fk0table.getId()); - assertEquals(DATABASE_1_ID, fk0table.getDatabaseId()); - assertEquals(TABLE_1_INTERNAL_NAME, fk0table.getName()); - assertEquals(TABLE_1_INTERNAL_NAME, fk0table.getInternalName()); - assertNotNull(fk0.getOnDelete()); - assertNotNull(fk0.getOnUpdate()); - assertNotNull(fk0.getReferencedTable()); - assertEquals(TABLE_2_INTERNALNAME, fk0.getReferencedTable().getName()); - assertEquals(TABLE_2_INTERNALNAME, fk0.getReferencedTable().getInternalName()); - } - - @Test - public void inspectTable_multipleForeignKeyReferences_succeeds() throws TableNotFoundException, SQLException { - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "complex_foreign_keys"); - final ConstraintsDto constraints = response.getConstraints(); - final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); - assertEquals(1, foreignKeys.size()); - final ForeignKeyDto fk0 = foreignKeys.get(0); - assertNotNull(fk0.getName()); - assertNotNull(fk0.getReferences()); - final ForeignKeyReferenceDto fk0ref0 = fk0.getReferences().get(0); - assertNull(fk0ref0.getId()); - assertNotNull(fk0ref0.getColumn()); - assertNotNull(fk0ref0.getReferencedColumn()); - assertNotNull(fk0ref0.getForeignKey()); - assertEquals(DATABASE_1_ID, fk0ref0.getColumn().getDatabaseId()); - assertNull(fk0ref0.getColumn().getId()); - assertNull(fk0ref0.getColumn().getTableId()); - assertEquals("weather_id", fk0ref0.getColumn().getName()); - assertEquals("weather_id", fk0ref0.getColumn().getInternalName()); - assertEquals(DATABASE_1_ID, fk0ref0.getReferencedColumn().getDatabaseId()); - assertNull(fk0ref0.getReferencedColumn().getId()); - assertNull(fk0ref0.getReferencedColumn().getTableId()); - assertEquals("id", fk0ref0.getReferencedColumn().getName()); - assertEquals("id", fk0ref0.getReferencedColumn().getInternalName()); - final ForeignKeyReferenceDto fk0ref1 = fk0.getReferences().get(1); - assertNull(fk0ref1.getId()); - assertNotNull(fk0ref1.getColumn()); - assertNotNull(fk0ref1.getReferencedColumn()); - assertNotNull(fk0ref1.getForeignKey()); - assertEquals(DATABASE_1_ID, fk0ref1.getColumn().getDatabaseId()); - assertNull(fk0ref1.getColumn().getId()); - assertNull(fk0ref1.getColumn().getTableId()); - assertEquals("other_id", fk0ref1.getColumn().getName()); - assertEquals("other_id", fk0ref1.getColumn().getInternalName()); - assertEquals(DATABASE_1_ID, fk0ref1.getReferencedColumn().getDatabaseId()); - assertNull(fk0ref1.getReferencedColumn().getId()); - assertNull(fk0ref1.getReferencedColumn().getTableId()); - assertEquals("other_id", fk0ref1.getReferencedColumn().getName()); - assertEquals("other_id", fk0ref1.getReferencedColumn().getInternalName()); - final TableBriefDto fk0refT0 = fk0.getTable(); - assertNull(fk0refT0.getId()); - assertEquals(DATABASE_1_ID, fk0refT0.getDatabaseId()); - assertEquals("complex_foreign_keys", fk0refT0.getName()); - assertEquals("complex_foreign_keys", fk0refT0.getInternalName()); - assertNotNull(fk0.getReferencedTable()); - assertEquals("complex_primary_key", fk0.getReferencedTable().getName()); - assertEquals("complex_primary_key", fk0.getReferencedTable().getInternalName()); - assertNotNull(fk0.getOnDelete()); - assertNotNull(fk0.getOnUpdate()); - } - - @Test - public void inspectTable_multiplePrimaryKey_succeeds() throws TableNotFoundException, SQLException { - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "complex_primary_key"); - final ConstraintsDto constraints = response.getConstraints(); - final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); - assertEquals(2, primaryKey.size()); - final PrimaryKeyDto pk0 = primaryKey.get(0); - assertNull(pk0.getId()); - assertNotNull(pk0.getTable()); - assertNull(pk0.getTable().getId()); - assertEquals("complex_primary_key", pk0.getTable().getName()); - assertEquals("complex_primary_key", pk0.getTable().getInternalName()); - assertNotNull(pk0.getColumn()); - assertNull(pk0.getColumn().getId()); - assertNull(pk0.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); - assertNull(pk0.getColumn().getAlias()); - assertEquals("id", pk0.getColumn().getName()); - assertEquals("id", pk0.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.BIGINT, pk0.getColumn().getColumnType()); - final PrimaryKeyDto pk1 = primaryKey.get(1); - assertNull(pk1.getId()); - assertNotNull(pk1.getTable()); - assertNull(pk1.getTable().getId()); - assertEquals("complex_primary_key", pk1.getTable().getName()); - assertEquals("complex_primary_key", pk1.getTable().getInternalName()); - assertNotNull(pk1.getColumn()); - assertNull(pk1.getColumn().getId()); - assertNull(pk1.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, pk1.getColumn().getDatabaseId()); - assertNull(pk1.getColumn().getAlias()); - assertEquals("other_id", pk1.getColumn().getName()); - assertEquals("other_id", pk1.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.BIGINT, pk1.getColumn().getColumnType()); - } - - @Test - public void inspectTable_exoticBoolean_succeeds() throws TableNotFoundException, SQLException { - - /* test */ - final TableDto response = schemaService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "exotic_boolean"); - final ConstraintsDto constraints = response.getConstraints(); - final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); - assertEquals(1, primaryKey.size()); - final PrimaryKeyDto pk0 = primaryKey.get(0); - assertNull(pk0.getId()); - assertNotNull(pk0.getTable()); - assertNull(pk0.getTable().getId()); - assertEquals("exotic_boolean", pk0.getTable().getName()); - assertEquals("exotic_boolean", pk0.getTable().getInternalName()); - assertNotNull(pk0.getColumn()); - assertNull(pk0.getColumn().getId()); - assertNull(pk0.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, pk0.getColumn().getDatabaseId()); - assertNull(pk0.getColumn().getAlias()); - assertEquals("bool_default", pk0.getColumn().getName()); - assertEquals("bool_default", pk0.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.BOOL, pk0.getColumn().getColumnType()); - final List<ColumnDto> columns = response.getColumns(); - assertEquals(3, columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_1_ID, "bool_default", "bool_default", ColumnTypeDto.BOOL, null, 0L, false, null); - assertColumn(columns.get(1), null, null, DATABASE_1_ID, "bool_tinyint", "bool_tinyint", ColumnTypeDto.BOOL, null, 0L, false, null); - assertColumn(columns.get(2), null, null, DATABASE_1_ID, "bool_tinyint_unsigned", "bool_tinyint_unsigned", ColumnTypeDto.BOOL, null, 0L, false, null); - } - - @Test - public void inspectView_succeeds() throws SQLException, ViewNotFoundException { - - /* test */ - final ViewDto response = schemaService.inspectView(DATABASE_1_PRIVILEGED_DTO, "not_in_metadata_db2"); - assertEquals("not_in_metadata_db2", response.getInternalName()); - assertEquals("not_in_metadata_db2", response.getName()); - assertEquals(DATABASE_1_ID, response.getVdbid()); - assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); - assertFalse(response.getIsInitialView()); - assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); - assertTrue(response.getQuery().length() >= 69); - assertNotNull(response.getQueryHash()); - assertEquals(4, response.getColumns().size()); - final ViewColumnDto column0 = response.getColumns().get(0); - assertNotNull(column0.getName()); - assertEquals("date", column0.getInternalName()); - assertEquals(DATABASE_1_ID, column0.getDatabaseId()); - final ViewColumnDto column1 = response.getColumns().get(1); - assertNotNull(column1.getName()); - assertEquals("location", column1.getInternalName()); - assertEquals(DATABASE_1_ID, column1.getDatabaseId()); - final ViewColumnDto column2 = response.getColumns().get(2); - assertNotNull(column2.getName()); - assertEquals("MinTemp", column2.getInternalName()); - assertEquals(DATABASE_1_ID, column2.getDatabaseId()); - final ViewColumnDto column3 = response.getColumns().get(3); - assertNotNull(column3.getName()); - assertEquals("Rainfall", column3.getInternalName()); - assertEquals(DATABASE_1_ID, column3.getDatabaseId()); - } - - 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, - String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed, - String description) { - log.trace("assert column: {}", internalName); - assertNotNull(column); - assertEquals(id, column.getId()); - assertEquals(tableId, column.getTableId()); - assertEquals(databaseId, column.getDatabaseId()); - assertEquals(name, column.getName()); - assertEquals(internalName, column.getInternalName()); - assertEquals(type, column.getColumnType()); - assertEquals(size, column.getSize()); - assertEquals(d, column.getD()); - assertEquals(nullAllowed, column.getIsNullAllowed()); - assertEquals(description, column.getDescription()); - } - -} 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 0eab9c6ff3..886d492cd7 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,7 +21,6 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.sql.SQLException; import java.util.List; -import java.util.Map; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; @@ -45,8 +44,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test @@ -108,7 +107,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* 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); + final QueryDto response = queryService.findById(DATABASE_1_DTO, QUERY_2_ID); assertEquals(2L, response.getId()); assertTrue(response.getIsPersisted()); } @@ -124,30 +123,11 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* 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); + final QueryDto response = queryService.findById(DATABASE_1_DTO, QUERY_1_ID); assertEquals(1L, response.getId()); assertFalse(response.getIsPersisted()); } - @Test - public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException, InterruptedException { - - /* mock */ - MariaDbConfig.dropQueryStore(DATABASE_1_PRIVILEGED_DTO); - - /* test */ - createQueryStore_generic(DATABASE_1_INTERNALNAME); - } - - @Test - public void createQueryStore_fails() { - - /* test */ - assertThrows(QueryStoreCreateException.class, () -> { - createQueryStore_generic(DATABASE_1_INTERNALNAME); - }); - } - protected void findById_generic(Long queryId) throws RemoteUnavailableException, SQLException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { @@ -160,10 +140,10 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { .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); + MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); /* test */ - final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId); + final QueryDto response = queryService.findById(DATABASE_1_DTO, queryId); assertEquals(QUERY_1_ID, response.getId()); } @@ -175,13 +155,13 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); - MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_2_DTO, USER_1_ID); when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, null)) .thenReturn(List.of(IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_5_BRIEF_DTO)); /* test */ - return queryService.findAll(DATABASE_1_PRIVILEGED_DTO, filterPersisted); + return queryService.findAll(DATABASE_1_DTO, filterPersisted); } protected void persist_generic(Long queryId, List<IdentifierBriefDto> identifiers, Boolean persist) @@ -194,23 +174,11 @@ 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); - } - - protected void createQueryStore_generic(String databaseName) throws SQLException, QueryStoreCreateException, - InterruptedException { - - /* pre-condition */ - Thread.sleep(1000) /* wait for test container some more */; + MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_2_DTO, USER_1_ID); /* test */ - queryService.createQueryStore(CONTAINER_1_PRIVILEGED_DTO, databaseName); - final List<Map<String, Object>> response = MariaDbConfig.listQueryStore(DATABASE_1_PRIVILEGED_DTO); - assertEquals(0, response.size()); + queryService.persist(DATABASE_1_DTO, queryId, persist); } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index 383c44770f..f8687d8e0d 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -2,18 +2,7 @@ package at.tuwien.service; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; -import at.tuwien.api.database.table.columns.ColumnCreateDto; -import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnStatisticDto; -import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; -import at.tuwien.api.database.table.constraints.ConstraintsDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyCreateDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyReferenceDto; -import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; -import at.tuwien.api.database.table.constraints.unique.UniqueDto; -import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.config.S3Config; @@ -22,7 +11,10 @@ import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.test.AbstractUnitTest; import com.google.common.io.Files; import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.*; +import org.junit.jupiter.api.BeforeAll; +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; import org.springframework.boot.test.context.SpringBootTest; @@ -44,9 +36,11 @@ import java.io.IOException; import java.math.BigDecimal; import java.sql.SQLException; import java.time.Instant; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; -import static at.tuwien.service.SchemaServiceIntegrationTest.assertColumn; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; @@ -88,11 +82,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_3_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_3_DTO); /* s3 */ if (s3Client.listBuckets().buckets().stream().noneMatch(b -> b.name().equals(s3Config.getS3Bucket()))) { s3Client.createBucket(CreateBucketRequest.builder() @@ -124,13 +118,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -158,13 +152,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -191,13 +185,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -224,13 +218,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -255,13 +249,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.createTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.createTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); assertEquals("Vienna", result.get(0).get("location")); @@ -283,17 +277,17 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_PRIVILEGED_DTO); + .thenReturn(TABLE_8_DTO); s3Client.putObject(PutObjectRequest.builder() .key("s3key") .bucket(s3Config.getS3Bucket()) .build(), RequestBody.fromFile(new File("src/test/resources/csv/keyboard.csv"))); /* test */ - tableService.createTuple(TABLE_8_PRIVILEGED_DTO, request); - final List<Map<String, byte[]>> result = MariaDbConfig.selectQueryByteArr(DATABASE_3_PRIVILEGED_DTO, "SELECT raw FROM mfcc WHERE raw IS NOT NULL", Set.of("raw")); + tableService.createTuple(TABLE_8_DTO, request); + final List<Map<String, byte[]>> result = MariaDbConfig.selectQueryByteArr(DATABASE_3_DTO, "SELECT raw FROM mfcc WHERE raw IS NOT NULL", Set.of("raw")); assertNotNull(result.get(0).get("raw")); assertArrayEquals(Files.toByteArray(new File("src/test/resources/csv/keyboard.csv")), result.get(0).get("raw")); } @@ -315,13 +309,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.createTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.createTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); assertEquals("Vienna", result.get(0).get("location")); @@ -341,13 +335,13 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.deleteTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); + tableService.deleteTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); assertEquals(0, result.size()); } @@ -365,173 +359,22 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_PRIVILEGED_DTO); + .thenReturn(CONTAINER_1_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_PRIVILEGED_DTO); + .thenReturn(TABLE_1_DTO); /* test */ - tableService.deleteTuple(TABLE_1_PRIVILEGED_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); + tableService.deleteTuple(TABLE_1_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); assertEquals(0, result.size()); } - @Test - public void getSchemas_succeeds() throws TableNotFoundException, SQLException, DatabaseMalformedException { - - /* test */ - final List<TableDto> response = tableService.getSchemas(DATABASE_1_PRIVILEGED_DTO); - assertEquals(4, response.size()); - final TableDto table0 = response.get(0); - Assertions.assertEquals("complex_foreign_keys", table0.getInternalName()); - Assertions.assertEquals("complex_foreign_keys", table0.getName()); - Assertions.assertEquals(DATABASE_1_ID, table0.getTdbid()); - assertTrue(table0.getIsVersioned()); - Assertions.assertEquals(DATABASE_1_PUBLIC, table0.getIsPublic()); - final List<ColumnDto> columns0 = table0.getColumns(); - assertNotNull(columns0); - Assertions.assertEquals(3, columns0.size()); - assertColumn(columns0.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns0.get(1), null, null, DATABASE_1_ID, "weather_id", "weather_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns0.get(2), null, null, DATABASE_1_ID, "other_id", "other_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - final ConstraintsDto constraints0 = table0.getConstraints(); - assertNotNull(constraints0); - assertEquals(1, constraints0.getPrimaryKey().size()); - final PrimaryKeyDto pk0 = new LinkedList<>(constraints0.getPrimaryKey()).get(0); - assertNull(pk0.getId()); - assertNull(pk0.getColumn().getId()); - assertEquals("id", pk0.getColumn().getName()); - assertEquals("id", pk0.getColumn().getInternalName()); - assertEquals(1, constraints0.getForeignKeys().size()); - final ForeignKeyDto fk0 = constraints0.getForeignKeys().get(0); - assertNotNull(fk0.getName()); - assertNull(fk0.getTable().getId()); - assertEquals("complex_foreign_keys", fk0.getTable().getName()); - assertEquals("complex_foreign_keys", fk0.getTable().getInternalName()); - assertNull(fk0.getReferencedTable().getId()); - assertEquals("complex_primary_key", fk0.getReferencedTable().getName()); - assertEquals("complex_primary_key", fk0.getReferencedTable().getInternalName()); - assertEquals(2, fk0.getReferences().size()); - final ForeignKeyReferenceDto fk0r0 = fk0.getReferences().get(0); - assertEquals("weather_id", fk0r0.getColumn().getName()); - assertEquals("weather_id", fk0r0.getColumn().getInternalName()); - assertNotNull(fk0r0.getColumn().getName()); - assertNotNull(fk0r0.getForeignKey()); - assertEquals("id", fk0r0.getReferencedColumn().getName()); - assertEquals("id", fk0r0.getReferencedColumn().getInternalName()); - final ForeignKeyReferenceDto fk0r1 = fk0.getReferences().get(1); - assertEquals("other_id", fk0r1.getColumn().getName()); - assertEquals("other_id", fk0r1.getColumn().getInternalName()); - assertNotNull(fk0r1.getColumn().getName()); - assertNotNull(fk0r1.getForeignKey()); - assertEquals("other_id", fk0r1.getReferencedColumn().getName()); - assertEquals("other_id", fk0r1.getReferencedColumn().getInternalName()); - assertEquals(0, constraints0.getChecks().size()); - assertEquals(0, constraints0.getUniques().size()); - /* table 1 */ - final TableDto table1 = response.get(1); - Assertions.assertEquals("complex_primary_key", table1.getInternalName()); - Assertions.assertEquals("complex_primary_key", table1.getName()); - Assertions.assertEquals(DATABASE_1_ID, table1.getTdbid()); - assertTrue(table1.getIsVersioned()); - Assertions.assertEquals(DATABASE_1_PUBLIC, table1.getIsPublic()); - final List<ColumnDto> columns1 = table1.getColumns(); - assertNotNull(columns1); - Assertions.assertEquals(2, columns1.size()); - assertColumn(columns1.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns1.get(1), null, null, DATABASE_1_ID, "other_id", "other_id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - final ConstraintsDto constraints1 = table1.getConstraints(); - assertNotNull(constraints1); - assertEquals(2, constraints1.getPrimaryKey().size()); - final PrimaryKeyDto pk10 = new LinkedList<>(constraints1.getPrimaryKey()).get(0); - assertNull(pk10.getId()); - assertNull(pk10.getColumn().getId()); - assertEquals("id", pk10.getColumn().getName()); - assertEquals("id", pk10.getColumn().getInternalName()); - final PrimaryKeyDto pk11 = new LinkedList<>(constraints1.getPrimaryKey()).get(1); - assertNull(pk11.getId()); - assertNull(pk11.getColumn().getId()); - assertEquals("other_id", pk11.getColumn().getName()); - assertEquals("other_id", pk11.getColumn().getInternalName()); - assertEquals(0, constraints1.getForeignKeys().size()); - assertEquals(0, constraints1.getChecks().size()); - assertEquals(0, constraints1.getUniques().size()); - /* table 2 */ - final TableDto table2 = response.get(2); - Assertions.assertEquals("exotic_boolean", table2.getInternalName()); - Assertions.assertEquals("exotic_boolean", table2.getName()); - Assertions.assertEquals(DATABASE_1_ID, table2.getTdbid()); - assertTrue(table2.getIsVersioned()); - Assertions.assertEquals(DATABASE_1_PUBLIC, table2.getIsPublic()); - final List<ColumnDto> columns2 = table2.getColumns(); - assertNotNull(columns2); - Assertions.assertEquals(3, columns2.size()); - assertColumn(columns2.get(0), null, null, DATABASE_1_ID, "bool_default", "bool_default", ColumnTypeDto.BOOL, null, 0L, false, null); - assertColumn(columns2.get(1), null, null, DATABASE_1_ID, "bool_tinyint", "bool_tinyint", ColumnTypeDto.BOOL, null, 0L, false, null); - assertColumn(columns2.get(2), null, null, DATABASE_1_ID, "bool_tinyint_unsigned", "bool_tinyint_unsigned", ColumnTypeDto.BOOL, null, 0L, false, null); - final ConstraintsDto constraints2 = table2.getConstraints(); - assertNotNull(constraints2); - final Set<PrimaryKeyDto> primaryKey2 = constraints2.getPrimaryKey(); - Assertions.assertEquals(1, primaryKey2.size()); - final Set<String> checks2 = constraints2.getChecks(); - Assertions.assertEquals(0, checks2.size()); - final List<UniqueDto> uniques2 = constraints2.getUniques(); - Assertions.assertEquals(0, uniques2.size()); - /* table 3 */ - final TableDto table3 = response.get(3); - Assertions.assertEquals("not_in_metadata_db", table3.getInternalName()); - Assertions.assertEquals("not_in_metadata_db", table3.getName()); - Assertions.assertEquals(DATABASE_1_ID, table3.getTdbid()); - assertTrue(table3.getIsVersioned()); - Assertions.assertEquals(DATABASE_1_PUBLIC, table3.getIsPublic()); - final List<ColumnDto> columns3 = table3.getColumns(); - assertNotNull(columns3); - Assertions.assertEquals(5, columns3.size()); - assertColumn(columns3.get(0), null, null, DATABASE_1_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null); - assertColumn(columns3.get(1), null, null, DATABASE_1_ID, "given_name", "given_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); - assertColumn(columns3.get(2), null, null, DATABASE_1_ID, "middle_name", "middle_name", ColumnTypeDto.VARCHAR, 255L, null, true, null); - assertColumn(columns3.get(3), null, null, DATABASE_1_ID, "family_name", "family_name", ColumnTypeDto.VARCHAR, 255L, null, false, null); - assertColumn(columns3.get(4), null, null, DATABASE_1_ID, "age", "age", ColumnTypeDto.INT, 10L, 0L, false, null); - final ConstraintsDto constraints3 = table3.getConstraints(); - assertNotNull(constraints3); - final Set<PrimaryKeyDto> primaryKey3 = constraints3.getPrimaryKey(); - Assertions.assertEquals(1, primaryKey3.size()); - final Set<String> checks3 = constraints3.getChecks(); - Assertions.assertEquals(1, checks3.size()); - Assertions.assertEquals(Set.of("`age` > 0 and `age` < 120"), checks3); - final List<UniqueDto> uniques3 = constraints3.getUniques(); - Assertions.assertEquals(1, uniques3.size()); - Assertions.assertEquals(2, uniques3.get(0).getColumns().size()); - Assertions.assertEquals("not_in_metadata_db", uniques3.get(0).getTable().getInternalName()); - Assertions.assertEquals("given_name", uniques3.get(0).getColumns().get(0).getInternalName()); - Assertions.assertEquals("family_name", uniques3.get(0).getColumns().get(1).getInternalName()); - } - - @Test - public void create_succeeds() throws TableNotFoundException, TableMalformedException, SQLException, - TableExistsException { - - /* test */ - final TableDto response = tableService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO); - assertEquals(TABLE_4_NAME, response.getName()); - assertEquals(TABLE_4_INTERNALNAME, response.getInternalName()); - final List<ColumnDto> columns = response.getColumns(); - assertEquals(TABLE_4_COLUMNS.size(), columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_1_ID, "timestamp", "timestamp", ColumnTypeDto.TIMESTAMP, null, null, false, null); - assertColumn(columns.get(1), null, null, DATABASE_1_ID, "value", "value", ColumnTypeDto.DECIMAL, 10L, 10L, true, null); - final ConstraintsDto constraints = response.getConstraints(); - assertNotNull(constraints); - final Set<PrimaryKeyDto> primaryKey = constraints.getPrimaryKey(); - Assertions.assertEquals(1, primaryKey.size()); - final Set<String> checks = constraints.getChecks(); - Assertions.assertEquals(0, checks.size()); - } - @Test @Disabled("Not stable CI/CD") public void getStatistics_succeeds() throws TableMalformedException, SQLException, TableNotFoundException { /* test */ - final TableStatisticDto response = tableService.getStatistics(TABLE_2_PRIVILEGED_DTO); + final TableStatisticDto response = tableService.getStatistics(DATABASE_1_DTO, TABLE_2_DTO); assertEquals(TABLE_2_COLUMNS.size(), response.getColumns().size()); log.trace("response rows: {}", response.getRows()); assertEquals(3L, response.getRows()); @@ -556,116 +399,22 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { assertNotNull(column4.getStdDev()); } - @Test - public void create_malformed_fails() { - final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() - .name("missing_foreign_key") - .columns(List.of()) - .constraints(ConstraintsCreateDto.builder() - .foreignKeys(List.of(ForeignKeyCreateDto.builder() - .columns(List.of("i_do_not_exist")) - .referencedTable("neither_do_i") - .referencedColumns(List.of("behold")) - .build())) - .build()) - .build(); - - /* test */ - assertThrows(TableMalformedException.class, () -> { - tableService.createTable(DATABASE_1_PRIVILEGED_DTO, request); - }); - } - - @Test - public void create_compositePrimaryKey_fails() throws TableNotFoundException, TableMalformedException, SQLException, - TableExistsException { - final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() - .name("composite_primary_key") - .columns(List.of(ColumnCreateDto.builder() - .name("name") - .type(ColumnTypeDto.VARCHAR) - .size(255L) - .nullAllowed(false) - .build(), - ColumnCreateDto.builder() - .name("lat") - .type(ColumnTypeDto.DECIMAL) - .size(10L) - .d(10L) - .nullAllowed(false) - .build(), - ColumnCreateDto.builder() - .name("lng") - .type(ColumnTypeDto.DECIMAL) - .size(10L) - .d(10L) - .nullAllowed(false) - .build())) - .constraints(ConstraintsCreateDto.builder() - .primaryKey(Set.of("lat", "lng")) - .foreignKeys(List.of()) - .checks(Set.of()) - .uniques(List.of()) - .build()) - .build(); - - /* test */ - final TableDto response = tableService.createTable(DATABASE_1_PRIVILEGED_DTO, request); - assertEquals("composite_primary_key", response.getName()); - assertEquals("composite_primary_key", response.getInternalName()); - final List<ColumnDto> columns = response.getColumns(); - assertEquals(3, columns.size()); - assertColumn(columns.get(0), null, null, DATABASE_1_ID, "name", "name", ColumnTypeDto.VARCHAR, 255L, null, false, null); - assertColumn(columns.get(1), null, null, DATABASE_1_ID, "lat", "lat", ColumnTypeDto.DECIMAL, 10L, 10L, false, null); - assertColumn(columns.get(2), null, null, DATABASE_1_ID, "lng", "lng", ColumnTypeDto.DECIMAL, 10L, 10L, false, null); - final ConstraintsDto constraints = response.getConstraints(); - assertNotNull(constraints); - final Set<String> checks = constraints.getChecks(); - assertNotNull(checks); - assertEquals(0, checks.size()); - final List<PrimaryKeyDto> primaryKeys = new LinkedList<>(constraints.getPrimaryKey()); - assertNotNull(primaryKeys); - assertEquals(2, primaryKeys.size()); - assertEquals("lat", primaryKeys.get(0).getColumn().getInternalName()); - assertEquals("lng", primaryKeys.get(1).getColumn().getInternalName()); - final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); - assertNotNull(foreignKeys); - assertEquals(0, foreignKeys.size()); - final List<UniqueDto> uniques = constraints.getUniques(); - assertNotNull(uniques); - assertEquals(0, uniques.size()); - } - - @Test - public void create_needSequence_succeeds() throws TableNotFoundException, TableMalformedException, SQLException, - TableExistsException { - - /* mock */ - MariaDbConfig.dropTable(DATABASE_1_PRIVILEGED_DTO, TABLE_1_INTERNAL_NAME); - - /* test */ - final TableDto response = tableService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_1_CREATE_INTERNAL_DTO); - assertEquals(TABLE_1_NAME, response.getName()); - assertEquals(TABLE_1_INTERNAL_NAME, response.getInternalName()); - assertEquals(TABLE_1_COLUMNS.size(), response.getColumns().size()); - } - @Test public void delete_succeeds() throws SQLException, QueryMalformedException { /* test */ - tableService.delete(TABLE_1_PRIVILEGED_DTO); + tableService.delete(TABLE_1_DTO); } @Test public void delete_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(QueryMalformedException.class, () -> { - tableService.delete(TABLE_5_PRIVILEGED_DTO); + tableService.delete(TABLE_5_DTO); }); } @@ -673,7 +422,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_succeeds() throws SQLException, QueryMalformedException { /* test */ - final Long response = tableService.getCount(TABLE_1_PRIVILEGED_DTO, null); + final Long response = tableService.getCount(TABLE_1_DTO, null); assertEquals(3, response); } @@ -681,7 +430,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_timestamp_succeeds() throws SQLException, QueryMalformedException { /* test */ - final Long response = tableService.getCount(TABLE_1_PRIVILEGED_DTO, Instant.ofEpochSecond(0)); + final Long response = tableService.getCount(TABLE_1_DTO, Instant.ofEpochSecond(0)); assertEquals(0, response); } @@ -689,11 +438,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(QueryMalformedException.class, () -> { - tableService.getCount(TABLE_5_PRIVILEGED_DTO, null); + tableService.getCount(TABLE_5_DTO, null); }); } @@ -701,7 +450,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void history_succeeds() throws SQLException, TableNotFoundException { /* test */ - final List<TableHistoryDto> response = tableService.history(TABLE_1_PRIVILEGED_DTO, 1000L); + final List<TableHistoryDto> response = tableService.history(TABLE_1_DTO, 1000L); assertEquals(1, response.size()); final TableHistoryDto history0 = response.get(0); assertNotNull(history0.getTimestamp()); @@ -713,11 +462,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void history_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(TableNotFoundException.class, () -> { - tableService.history(TABLE_5_PRIVILEGED_DTO, null); + tableService.history(TABLE_5_DTO, null); }); } @@ -739,7 +488,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { .build(), RequestBody.fromFile(new File("src/test/resources/csv/weather_aus.csv"))); /* test */ - tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); + tableService.importDataset(TABLE_1_DTO, request); } @Test @@ -760,7 +509,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(TableMalformedException.class, () -> { - tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); + tableService.importDataset(TABLE_1_DTO, request); }); } @@ -782,7 +531,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(MalformedException.class, () -> { - tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); + tableService.importDataset(TABLE_1_DTO, request); }); } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java index b5555611c6..658c099724 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java @@ -1,12 +1,8 @@ package at.tuwien.service; -import at.tuwien.api.database.ViewColumnDto; -import at.tuwien.api.database.ViewDto; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; -import at.tuwien.exception.DatabaseMalformedException; import at.tuwien.exception.ViewMalformedException; -import at.tuwien.exception.ViewNotFoundException; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -20,9 +16,6 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.sql.SQLException; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; @Log4j2 @SpringBootTest @@ -40,47 +33,15 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); } @Test public void delete_succeeds() throws SQLException, ViewMalformedException { /* test */ - viewService.delete(DATABASE_1_PRIVILEGED_DTO, VIEW_1_INTERNAL_NAME); - } - - @Test - public void create_succeeds() throws SQLException, ViewMalformedException { - - /* test */ - viewService.create(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO); - } - - @Test - public void getSchemas_succeeds() throws SQLException, ViewNotFoundException, DatabaseMalformedException { - - /* test */ - final List<ViewDto> response = viewService.getSchemas(DATABASE_1_PRIVILEGED_DTO); - final ViewDto view0 = response.get(0); - assertEquals("not_in_metadata_db2", view0.getName()); - assertEquals("not_in_metadata_db2", view0.getInternalName()); - assertEquals(DATABASE_1_ID, view0.getVdbid()); - assertEquals(DATABASE_1_OWNER, view0.getOwner().getId()); - assertFalse(view0.getIsInitialView()); - assertEquals(DATABASE_1_PUBLIC, view0.getIsPublic()); - assertTrue(view0.getQuery().length() >= 69); - assertNotNull(view0.getQueryHash()); - assertEquals(4, view0.getColumns().size()); - final ViewColumnDto column0a = view0.getColumns().get(0); - assertEquals("date", column0a.getInternalName()); - final ViewColumnDto column1a = view0.getColumns().get(1); - assertEquals("location", column1a.getInternalName()); - final ViewColumnDto column2a = view0.getColumns().get(2); - assertEquals("MinTemp", column2a.getInternalName()); - final ViewColumnDto column3a = view0.getColumns().get(3); - assertEquals("Rainfall", column3a.getInternalName()); + viewService.delete(VIEW_1_DTO); } } 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 45654157d1..c798537b5b 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 @@ -1,11 +1,11 @@ package at.tuwien.config; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.user.UserDto; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import org.springframework.beans.factory.annotation.Value; @@ -22,13 +22,13 @@ public class CacheConfig { private Long credentialCacheTimeout; @Bean - public Cache<UUID, PrivilegedUserDto> userCache() { - return new ExpiryCache<UUID, PrivilegedUserDto>().build(); + public Cache<UUID, UserDto> userCache() { + return new ExpiryCache<UUID, UserDto>().build(); } @Bean - public Cache<Long, PrivilegedViewDto> viewCache() { - return new ExpiryCache<Long, PrivilegedViewDto>().build(); + public Cache<Long, ViewDto> viewCache() { + return new ExpiryCache<Long, ViewDto>().build(); } @Bean @@ -37,18 +37,18 @@ public class CacheConfig { } @Bean - public Cache<Long, PrivilegedTableDto> tableCache() { - return new ExpiryCache<Long, PrivilegedTableDto>().build(); + public Cache<Long, TableDto> tableCache() { + return new ExpiryCache<Long, TableDto>().build(); } @Bean - public Cache<Long, PrivilegedDatabaseDto> databaseCache() { - return new ExpiryCache<Long, PrivilegedDatabaseDto>().build(); + public Cache<Long, DatabaseDto> databaseCache() { + return new ExpiryCache<Long, DatabaseDto>().build(); } @Bean - public Cache<Long, PrivilegedContainerDto> containerCache() { - return new ExpiryCache<Long, PrivilegedContainerDto>().build(); + public Cache<Long, ContainerDto> containerCache() { + return new ExpiryCache<Long, 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 e2851071da..f7fe2f2075 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 @@ -1,13 +1,12 @@ package at.tuwien.gateway; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.user.UserDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; import at.tuwien.exception.*; import jakarta.validation.constraints.NotNull; @@ -20,12 +19,12 @@ public interface MetadataServiceGateway { * Get a container with given id from the metadata service. * * @param containerId The container id - * @return The container with privileged connection information, if successful. + * @return The container with connection information, if successful. * @throws ContainerNotFoundException The table was not found in the metadata service. * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, + ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, ContainerNotFoundException, MetadataServiceException; /** @@ -37,7 +36,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedDatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -50,7 +49,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedTableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, RemoteUnavailableException, + TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException; /** @@ -63,7 +62,7 @@ public interface MetadataServiceGateway { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, ViewNotFoundException, + ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, ViewNotFoundException, MetadataServiceException; /** @@ -77,18 +76,6 @@ public interface MetadataServiceGateway { */ UserDto getUserById(UUID userId) throws RemoteUnavailableException, UserNotFoundException, MetadataServiceException; - /** - * Get a user with given user id from the metadata service. - * - * @param userId The user id. - * @return The user, if successful. - * @throws RemoteUnavailableException The remote service is not available and invalid data was returned. - * @throws UserNotFoundException The user was not found in the metadata service. - * @throws MetadataServiceException The remote service returned invalid data. - */ - PrivilegedUserDto getPrivilegedUserById(UUID userId) throws RemoteUnavailableException, UserNotFoundException, - MetadataServiceException; - /** * Get database access for a given user and database id from the metadata service. * 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 7d834992cc..57d6ffab7c 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 @@ -1,17 +1,12 @@ package at.tuwien.gateway.impl; import at.tuwien.api.container.ContainerDto; -import at.tuwien.api.container.image.ImageDto; -import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.DatabaseAccessDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.user.UserDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; import at.tuwien.config.GatewayConfig; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; @@ -36,27 +31,24 @@ import java.util.UUID; @Service public class MetadataServiceGatewayImpl implements MetadataServiceGateway { - private final RestTemplate restTemplate; private final RestTemplate internalRestTemplate; private final GatewayConfig gatewayConfig; private final MetadataMapper metadataMapper; @Autowired public MetadataServiceGatewayImpl(@Qualifier("internalRestTemplate") RestTemplate internalRestTemplate, - RestTemplate restTemplate, GatewayConfig gatewayConfig, - MetadataMapper metadataMapper) { - this.restTemplate = restTemplate; + GatewayConfig gatewayConfig, MetadataMapper metadataMapper) { this.internalRestTemplate = internalRestTemplate; this.gatewayConfig = gatewayConfig; this.metadataMapper = metadataMapper; } @Override - public PrivilegedContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, + public ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException, ContainerNotFoundException, MetadataServiceException { final ResponseEntity<ContainerDto> response; final String url = "/api/container/" + containerId; - log.debug("get privileged 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); @@ -73,16 +65,16 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } final List<String> expectedHeaders = List.of("X-Username", "X-Password"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { - log.error("Failed to find all privileged container headers"); + log.error("Failed to find all container headers"); log.debug("expected headers: {}", expectedHeaders); log.debug("found headers: {}", response.getHeaders().keySet()); - throw new MetadataServiceException("Failed to find all privileged container headers"); + throw new MetadataServiceException("Failed to find all container headers"); } if (response.getBody() == null) { log.error("Failed to find container with id {}: body is empty", containerId); throw new MetadataServiceException("Failed to find container with id " + containerId + ": body is empty"); } - final PrivilegedContainerDto container = metadataMapper.containerDtoToPrivilegedContainerDto(response.getBody()); + 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.setLastRetrieved(Instant.now()); @@ -90,13 +82,13 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public PrivilegedDatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + public DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { - final ResponseEntity<PrivilegedDatabaseDto> response; + final ResponseEntity<DatabaseDto> response; final String url = "/api/database/" + id; - log.debug("get privileged database info from metadata service: {}", url); + log.debug("get database info from metadata service: {}", url); try { - response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, PrivilegedDatabaseDto.class); + response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, DatabaseDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { log.error("Failed to find database with id {}: {}", id, e.getMessage()); throw new RemoteUnavailableException("Failed to find database: " + e.getMessage(), e); @@ -110,16 +102,16 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Host", "X-Port"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { - log.error("Failed to find all privileged database headers"); + log.error("Failed to find all database headers"); log.debug("expected headers: {}", expectedHeaders); log.debug("found headers: {}", response.getHeaders().keySet()); - throw new MetadataServiceException("Failed to find all privileged database headers"); + throw new MetadataServiceException("Failed to find all database headers"); } if (response.getBody() == null) { log.error("Failed to find database with id {}: body is empty", id); throw new MetadataServiceException("Failed to find database with id " + id + ": body is empty"); } - final PrivilegedDatabaseDto database = response.getBody(); + 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().setHost(response.getHeaders().get("X-Host").get(0)); @@ -129,11 +121,11 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } @Override - public PrivilegedTableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, + public TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException { final ResponseEntity<TableDto> response; final String url = "/api/database/" + databaseId + "/table/" + id; - log.debug("get privileged 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) { @@ -149,33 +141,33 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } final List<String> expectedHeaders = List.of("X-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-Table"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { - log.error("Failed to find all privileged table headers"); + log.error("Failed to find all table headers"); log.debug("expected headers: {}", expectedHeaders); log.debug("found headers: {}", response.getHeaders().keySet()); - throw new MetadataServiceException("Failed to find all privileged table headers"); + throw new MetadataServiceException("Failed to find all table headers"); } if (response.getBody() == null) { log.error("Failed to find table with id {}: body is empty", id); throw new MetadataServiceException("Failed to find table with id " + id + ": body is empty"); } - final PrivilegedTableDto table = metadataMapper.tableDtoToPrivilegedTableDto(response.getBody()); - table.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Type").get(0)); - table.getDatabase().getContainer().setHost(response.getHeaders().get("X-Host").get(0)); - table.getDatabase().getContainer().setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); - table.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); - table.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); - table.getDatabase().setInternalName(response.getHeaders().get("X-Database").get(0)); + final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody()); + table.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); + table.setHost(response.getHeaders().get("X-Host").get(0)); + table.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); + table.setUsername(response.getHeaders().get("X-Username").get(0)); + table.setPassword(response.getHeaders().get("X-Password").get(0)); + table.setDatabase(response.getHeaders().get("X-Database").get(0)); table.setInternalName(response.getHeaders().get("X-Table").get(0)); table.setLastRetrieved(Instant.now()); return table; } @Override - public PrivilegedViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, + public ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, ViewNotFoundException, MetadataServiceException { final ResponseEntity<ViewDto> response; final String url = "/api/database/" + databaseId + "/view/" + id; - log.debug("get privileged view info from metadata service: {}", url); + log.debug("get view info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, ViewDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { @@ -191,28 +183,22 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } final List<String> expectedHeaders = List.of("X-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-View"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { - log.error("Failed to find all privileged view headers"); + log.error("Failed to find all view headers"); log.debug("expected headers: {}", expectedHeaders); log.debug("found headers: {}", response.getHeaders().keySet()); - throw new MetadataServiceException("Failed to find all privileged view headers"); + throw new MetadataServiceException("Failed to find all view headers"); } if (response.getBody() == null) { log.error("Failed to find view with id {}: body is empty", id); throw new MetadataServiceException("Failed to find view with id " + id + ": body is empty"); } - final PrivilegedViewDto view = metadataMapper.viewDtoToPrivilegedViewDto(response.getBody()); - view.setDatabase(PrivilegedDatabaseDto.builder() - .internalName(response.getHeaders().get("X-Database").get(0)) - .container(PrivilegedContainerDto.builder() - .host(response.getHeaders().get("X-Host").get(0)) - .port(Integer.parseInt(response.getHeaders().get("X-Port").get(0))) - .username(response.getHeaders().get("X-Username").get(0)) - .password(response.getHeaders().get("X-Password").get(0)) - .image(ImageDto.builder() - .jdbcMethod(response.getHeaders().get("X-Type").get(0)) - .build()) - .build()) - .build()); + final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody()); + view.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); + view.setHost(response.getHeaders().get("X-Host").get(0)); + view.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); + view.setUsername(response.getHeaders().get("X-Username").get(0)); + view.setPassword(response.getHeaders().get("X-Password").get(0)); + view.setDatabase(response.getHeaders().get("X-Database").get(0)); view.setInternalName(response.getHeaders().get("X-View").get(0)); view.setLastRetrieved(Instant.now()); return view; @@ -223,33 +209,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { MetadataServiceException { final ResponseEntity<UserDto> response; final String url = "/api/user/" + userId; - log.debug("get user info from metadata service: {}", url); - try { - response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, UserDto.class); - } catch (ResourceAccessException | HttpServerErrorException e) { - log.error("Failed to find user with id {}: {}", userId, e.getMessage()); - throw new RemoteUnavailableException("Failed to find user: " + e.getMessage(), e); - } catch (HttpClientErrorException.NotFound e) { - log.error("Failed to find user with id {}: not found: {}", userId, e.getMessage()); - throw new UserNotFoundException("Failed to find user: " + e.getMessage(), e); - } - if (!response.getStatusCode().equals(HttpStatus.OK)) { - log.error("Failed to find user with id {}: service responded unsuccessful: {}", userId, response.getStatusCode()); - throw new MetadataServiceException("Failed to find user: service responded unsuccessful: " + response.getStatusCode()); - } - if (response.getBody() == null) { - log.error("Failed to find user with id {}: body is empty", userId); - throw new MetadataServiceException("Failed to find user with id " + userId + ": body is empty"); - } - return response.getBody(); - } - - @Override - public PrivilegedUserDto getPrivilegedUserById(UUID userId) throws RemoteUnavailableException, UserNotFoundException, - MetadataServiceException { - final ResponseEntity<UserDto> response; - final String url = "/api/user/" + userId; - log.debug("get privileged user info from metadata service: {}", url); + log.debug("get user info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, UserDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { @@ -265,16 +225,16 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { } final List<String> expectedHeaders = List.of("X-Username", "X-Password"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { - log.error("Failed to find all privileged user headers"); + log.error("Failed to find all user headers"); log.debug("expected headers: {}", expectedHeaders); log.debug("found headers: {}", response.getHeaders().keySet()); - throw new MetadataServiceException("Failed to find all privileged user headers"); + throw new MetadataServiceException("Failed to find all user headers"); } if (response.getBody() == null) { log.error("Failed to find user with id {}: body is empty", userId); throw new MetadataServiceException("Failed to find user with id " + userId + ": body is empty"); } - final PrivilegedUserDto user = metadataMapper.userDtoToPrivilegedUserDto(response.getBody()); + final UserDto user = metadataMapper.userDtoToUserDto(response.getBody()); user.setUsername(response.getHeaders().get("X-Username").get(0)); user.setPassword(response.getHeaders().get("X-Password").get(0)); user.setLastRetrieved(Instant.now()); 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 fac47a3d80..e31455a75e 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 @@ -1,7 +1,9 @@ package at.tuwien.listener; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.exception.*; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.exception.MetadataServiceException; +import at.tuwien.exception.RemoteUnavailableException; +import at.tuwien.exception.TableNotFoundException; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.QueueService; import com.fasterxml.jackson.core.type.TypeReference; @@ -57,7 +59,7 @@ public class DefaultListener implements MessageListener { log.trace("received message for table with id {} of database id {}: {} bytes", tableId, databaseId, message.getMessageProperties().getContentLength()); final Map<String, Object> body; try { - final PrivilegedTableDto table = metadataServiceGateway.getTableById(databaseId, tableId); + final TableDto table = metadataServiceGateway.getTableById(databaseId, tableId); body = objectMapper.readValue(message.getBody(), typeRef); queueService.insert(table, body); } catch (IOException e) { 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 db848cab7e..7f5b63b21c 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 @@ -1,12 +1,12 @@ package at.tuwien.mapper; +import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TupleDeleteDto; import at.tuwien.api.database.table.TupleDto; import at.tuwien.api.database.table.TupleUpdateDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableMalformedException; import at.tuwien.utils.MariaDbUtil; @@ -519,7 +519,7 @@ public interface MariaDbMapper { return statement.toString(); } - default String tupleToRawDeleteQuery(PrivilegedTableDto table, TupleDeleteDto data) throws TableMalformedException { + default String tupleToRawDeleteQuery(TableDto table, TupleDeleteDto data) throws TableMalformedException { log.trace("table csv to delete query, table.id={}, data.keys={}", table.getId(), data.getKeys()); if (table.getColumns().isEmpty()) { throw new TableMalformedException("Columns are not known"); @@ -540,14 +540,14 @@ public interface MariaDbMapper { return statement.toString(); } - default String tupleToRawUpdateQuery(PrivilegedTableDto table, TupleUpdateDto data) + default String tupleToRawUpdateQuery(TableDto table, TupleUpdateDto data) throws TableMalformedException { if (table.getColumns().isEmpty()) { throw new TableMalformedException("Columns are not known"); } /* parameterized query for prepared statement */ final StringBuilder statement = new StringBuilder("UPDATE `") - .append(table.getDatabase().getInternalName()) + .append(table.getDatabase()) .append("`.`") .append(table.getInternalName()) .append("` SET "); @@ -579,13 +579,13 @@ public interface MariaDbMapper { return statement.toString(); } - default String tupleToRawCreateQuery(PrivilegedTableDto table, TupleDto data) throws TableMalformedException { + default String tupleToRawCreateQuery(TableDto table, TupleDto data) throws TableMalformedException { if (table.getColumns().isEmpty()) { throw new TableMalformedException("Columns are not known"); } /* parameterized query for prepared statement */ final StringBuilder statement = new StringBuilder("INSERT INTO `") - .append(table.getDatabase().getInternalName()) + .append(table.getDatabase()) .append("`.`") .append(table.getInternalName()) .append("` ("); 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 0adfafa8f9..359e251ea2 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 @@ -2,28 +2,23 @@ package at.tuwien.mapper; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.ImageDto; -import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; -@Mapper(componentModel = "spring", imports = {PrivilegedDatabaseDto.class, PrivilegedContainerDto.class, ImageDto.class}) +@Mapper(componentModel = "spring", imports = {DatabaseDto.class, ContainerDto.class, ImageDto.class}) public interface MetadataMapper { org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MetadataMapper.class); @@ -32,28 +27,21 @@ public interface MetadataMapper { return subset.getQueryHash(); } - PrivilegedContainerDto containerDtoToPrivilegedContainerDto(ContainerDto data); + ContainerDto containerDtoToContainerDto(ContainerDto data); - DatabaseDto privilegedDatabaseDtoToDatabaseDto(PrivilegedDatabaseDto data); - - DatabaseBriefDto privilegedDatabaseDtoToDatabaseBriefDto(PrivilegedDatabaseDto data); - - TableDto privilegedTableDtoToTableDto(PrivilegedTableDto data); + DatabaseBriefDto databaseDtoToDatabaseBriefDto(DatabaseDto data); ColumnDto viewColumnDtoToColumnDto(ViewColumnDto data); ViewColumnDto columnDtoToViewColumnDto(ColumnDto data); - @Mappings({ - @Mapping(target = "database", expression = "java(PrivilegedDatabaseDto.builder().container(PrivilegedContainerDto.builder().image(new ImageDto()).build()).build())") - }) - PrivilegedTableDto tableDtoToPrivilegedTableDto(TableDto data); + TableDto tableDtoToTableDto(TableDto data); - PrivilegedViewDto viewDtoToPrivilegedViewDto(ViewDto data); + ViewDto viewDtoToViewDto(ViewDto data); - ContainerDto privilegedContainerDtoToContainerDto(PrivilegedContainerDto data); + ContainerDto ContainerDtoToContainerDto(ContainerDto data); - PrivilegedUserDto userDtoToPrivilegedUserDto(UserDto data); + UserDto userDtoToUserDto(UserDto data); UserBriefDto userDtoToUserBriefDto(UserDto data); @@ -64,6 +52,8 @@ public interface MetadataMapper { IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data); + TableDto databaseDtoToTableDto(DatabaseDto data); + default String metricToUri(String baseUrl, Long databaseId, Long tableId, Long subsetId, Long viewId) { final StringBuilder uri = new StringBuilder(baseUrl) .append("/database/") diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/AccessService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/AccessService.java index 89707ce8f2..c42fc28101 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/AccessService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/AccessService.java @@ -1,8 +1,8 @@ package at.tuwien.service; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.DatabaseMalformedException; import java.sql.SQLException; @@ -18,7 +18,7 @@ public interface AccessService { * @throws SQLException The connection to the database could not be established. * @throws DatabaseMalformedException The database schema is malformed. */ - void create(PrivilegedDatabaseDto database, PrivilegedUserDto user, AccessTypeDto access) throws SQLException, + void create(DatabaseDto database, UserDto user, AccessTypeDto access) throws SQLException, DatabaseMalformedException; /** @@ -30,7 +30,7 @@ public interface AccessService { * @throws SQLException The connection to the database could not be established. * @throws DatabaseMalformedException The database schema is malformed. */ - void update(PrivilegedDatabaseDto database, PrivilegedUserDto user, AccessTypeDto access) throws SQLException, + void update(DatabaseDto database, UserDto user, AccessTypeDto access) throws SQLException, DatabaseMalformedException; /** @@ -41,6 +41,5 @@ public interface AccessService { * @throws SQLException The connection to the database could not be established. * @throws DatabaseMalformedException The database schema is malformed. */ - void delete(PrivilegedDatabaseDto database, PrivilegedUserDto user) throws SQLException, - DatabaseMalformedException; + void delete(DatabaseDto database, UserDto user) throws SQLException, DatabaseMalformedException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/ContainerService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/ContainerService.java new file mode 100644 index 0000000000..4f9e92ed78 --- /dev/null +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/ContainerService.java @@ -0,0 +1,33 @@ +package at.tuwien.service; + +import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.internal.CreateDatabaseDto; +import at.tuwien.exception.DatabaseMalformedException; +import at.tuwien.exception.QueryStoreCreateException; + +import java.sql.SQLException; + +public interface ContainerService { + + /** + * Creates a database in the given container. + * @param container The container. + * @param data The database metadata. + * @return The created database, if successful. + * @throws SQLException The connection to the database could not be established. + * @throws DatabaseMalformedException The database schema is malformed. + */ + DatabaseDto createDatabase(ContainerDto container, CreateDatabaseDto data) throws SQLException, + DatabaseMalformedException; + + /** + * Creates the query store in the container and database. + * + * @param container The container. + * @param databaseName The database name. + * @throws SQLException The connection to the database could not be established. + * @throws QueryStoreCreateException The query store could not be created. + */ + void createQueryStore(ContainerDto container, String databaseName) throws SQLException, QueryStoreCreateException; +} 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 ff09d6672f..fe3df343db 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 @@ -1,11 +1,11 @@ package at.tuwien.service; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.*; import java.util.UUID; @@ -22,7 +22,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedDatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + DatabaseDto getDatabase(Long 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. */ - PrivilegedContainerDto getContainer(Long id) throws ContainerNotFoundException, RemoteUnavailableException, + ContainerDto getContainer(Long 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. */ - PrivilegedTableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException, + TableDto getTable(Long databaseId, Long 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. */ - PrivilegedViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, + ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, MetadataServiceException, ViewNotFoundException; /** @@ -76,7 +76,7 @@ public interface CredentialService { * @throws RemoteUnavailableException The remote service is not available. * @throws MetadataServiceException The remote service returned invalid data. */ - PrivilegedUserDto getUser(UUID id) throws RemoteUnavailableException, MetadataServiceException, + UserDto getUser(UUID id) throws RemoteUnavailableException, MetadataServiceException, UserNotFoundException; /** diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 271b2abb82..5a120f44d2 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -1,27 +1,92 @@ package at.tuwien.service; -import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.internal.CreateDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.exception.*; import java.sql.SQLException; +import java.util.List; public interface DatabaseService { /** - * Creates a database in the given container. - * @param container The container. - * @param data The database metadata. - * @return The created database, if successful. + * Inspects the schema (columns with names, data types) of a view with given name in the given database. + * @param database The database. + * @param viewName The view name. + * @return The inspected view if successful. * @throws SQLException The connection to the database could not be established. - * @throws DatabaseMalformedException The database schema is malformed. + * @throws ViewNotFoundException The view was not found in the given database. + */ + ViewDto inspectView(DatabaseDto database, String viewName) throws SQLException, ViewNotFoundException; + + /** + * Creates a table in given data database with table definition. + * + * @param database The data database object. + * @param data The table definition. + * @return The generated table. + * @throws SQLException Query statement is malformed. + * @throws TableMalformedException The table schema is malformed. + * @throws TableExistsException The table name already exists in the information_schema. + * @throws TableNotFoundException The table could not be inspected in the metadata database. */ - PrivilegedDatabaseDto create(PrivilegedContainerDto container, CreateDatabaseDto data) throws SQLException, + TableDto createTable(DatabaseDto database, TableCreateDto data) throws SQLException, + TableMalformedException, TableExistsException, TableNotFoundException; + + Boolean existsView(DatabaseDto database, String viewName) throws SQLException, + QueryMalformedException; + + /** + * Creates a view in given data database with view definition. + * @param database The data database object. + * @param data The view definition. + * @return The generated view. + * @throws SQLException + * @throws ViewMalformedException + */ + ViewDto createView(DatabaseDto database, ViewCreateDto data) throws SQLException, + ViewMalformedException; + + /** + * Gets the metadata schema for a given database. + * + * @param database The database. + * @return The list of view metadata. + * @throws SQLException The connection to the data database was unsuccessful. + * @throws DatabaseMalformedException The columns that are referenced in the views are unknown to the Metadata Database. Call {@link TableService#getSchemas(DatabaseDto)} beforehand. + * @throws ViewNotFoundException The view with given name was not found. + */ + List<ViewDto> exploreViews(DatabaseDto database) throws SQLException, DatabaseMalformedException, + ViewNotFoundException; + + /** + * Get table schemas from the information_schema in the data database. + * + * @param database The data database object. + * @return List of tables, if successful. + * @throws SQLException Failed to parse SQL query, contains invalid syntax. + * @throws TableNotFoundException The table could not be inspected in the data database. + * @throws DatabaseMalformedException The database inspection was unsuccessful, likely due to a bug in the mapping. + */ + List<TableDto> exploreTables(DatabaseDto database) throws SQLException, TableNotFoundException, DatabaseMalformedException; + /** + * Inspects the schema (columns with names, data types, unique-, check-, primary- and foreign key constraints) of + * a table with given name in the given database. + * + * @param database The database. + * @param tableName The table name. + * @return The inspected table if successful. + * @throws SQLException The connection to the database could not be established. + * @throws TableNotFoundException The table was not found in the given database. + */ + TableDto inspectTable(DatabaseDto database, String tableName) throws SQLException, TableNotFoundException; + /** * Updates a user's password in a given database. * @param database The database. @@ -29,6 +94,6 @@ public interface DatabaseService { * @throws SQLException The connection to the database could not be established. * @throws DatabaseMalformedException The database schema is malformed. */ - void update(PrivilegedDatabaseDto database, UpdateUserPasswordDto data) throws SQLException, + void update(DatabaseDto database, UpdateUserPasswordDto data) throws SQLException, DatabaseMalformedException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/QueueService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/QueueService.java index 79a23932b5..6a03f5d767 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/QueueService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/QueueService.java @@ -1,6 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; +import at.tuwien.api.database.table.TableDto; import java.sql.SQLException; import java.util.Map; @@ -14,5 +14,5 @@ public interface QueueService { * @param data The data. * @throws SQLException The connection to the database could not be established. */ - void insert(PrivilegedTableDto table, Map<String, Object> data) throws SQLException; + void insert(TableDto table, Map<String, Object> data) throws SQLException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SchemaService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/SchemaService.java deleted file mode 100644 index f5ef05b44a..0000000000 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SchemaService.java +++ /dev/null @@ -1,33 +0,0 @@ -package at.tuwien.service; - -import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.exception.*; - -import java.sql.SQLException; - -public interface SchemaService { - - /** - * Inspects the schema (columns with names, data types, unique-, check-, primary- and foreign key constraints) of - * a table with given name in the given database. - * @param database The database. - * @param tableName The table name. - * @return The inspected table if successful. - * @throws SQLException The connection to the database could not be established. - * @throws TableNotFoundException The table was not found in the given database. - */ - TableDto inspectTable(PrivilegedDatabaseDto database, String tableName) throws SQLException, - TableNotFoundException; - - /** - * Inspects the schema (columns with names, data types) of a view with given name in the given database. - * @param database The database. - * @param viewName The table name. - * @return The inspected view if successful. - * @throws SQLException The connection to the database could not be established. - * @throws ViewNotFoundException The view was not found in the given database. - */ - ViewDto inspectView(PrivilegedDatabaseDto database, String viewName) throws SQLException, ViewNotFoundException; -} 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 4a3455fbc4..b2de5cecca 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,7 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.container.internal.PrivilegedContainerDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.exception.*; import org.apache.spark.sql.Dataset; @@ -14,17 +13,6 @@ import java.util.UUID; public interface SubsetService { - /** - * Creates the query store in the container and database. - * - * @param container The container. - * @param databaseName The database name. - * @throws SQLException The connection to the database could not be established. - * @throws QueryStoreCreateException The query store could not be created. - */ - void createQueryStore(PrivilegedContainerDto container, String databaseName) throws SQLException, - QueryStoreCreateException; - /** * Retrieve data from a subset in a database and optionally paginate with number of page and size of results. * @@ -38,7 +26,7 @@ public interface SubsetService { * @throws QueryMalformedException The mapped query produced a database error. * @throws TableNotFoundException The database table is malformed. */ - Dataset<Row> getData(PrivilegedDatabaseDto database, QueryDto subset, Long page, Long size) + Dataset<Row> getData(DatabaseDto database, QueryDto subset, Long page, Long size) throws ViewMalformedException, SQLException, QueryMalformedException, TableNotFoundException; /** @@ -52,7 +40,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(PrivilegedDatabaseDto database, String statement, Instant timestamp, UUID userId) + Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId) throws QueryStoreInsertException, SQLException; /** @@ -64,7 +52,7 @@ public interface SubsetService { * @throws TableMalformedException The table is malformed. * @throws SQLException The connection to the database could not be established. */ - Long reExecuteCount(PrivilegedDatabaseDto database, QueryDto query) throws TableMalformedException, + Long reExecuteCount(DatabaseDto database, QueryDto query) throws TableMalformedException, SQLException, QueryMalformedException; /** @@ -75,11 +63,11 @@ public interface SubsetService { * @return The list of queries. * @throws SQLException The connection to the database could not be established. * @throws QueryNotFoundException The query was not found for re-execution. - * @throws RemoteUnavailableException The privileged database information could not be found in the Metadata Service. + * @throws RemoteUnavailableException The database information could not be found in the Metadata Service. * @throws DatabaseNotFoundException The database was not found in the Metadata Service. * @throws MetadataServiceException The Metadata Service responded unexpected. */ - List<QueryDto> findAll(PrivilegedDatabaseDto database, Boolean filterPersisted) throws SQLException, + List<QueryDto> findAll(DatabaseDto database, Boolean filterPersisted) throws SQLException, QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException; /** @@ -93,7 +81,7 @@ public interface SubsetService { * @throws QueryMalformedException The mapped query produced a database error. * @throws TableMalformedException The database table is malformed. */ - Long executeCountNonPersistent(PrivilegedDatabaseDto database, String statement, Instant timestamp) + Long executeCountNonPersistent(DatabaseDto database, String statement, Instant timestamp) throws SQLException, QueryMalformedException, TableMalformedException; /** @@ -104,12 +92,12 @@ public interface SubsetService { * @return The query. * @throws QueryNotFoundException The query store did not return a query. * @throws SQLException The connection to the database could not be established. - * @throws RemoteUnavailableException The privileged database information could not be found in the Metadata Service. + * @throws RemoteUnavailableException The database information could not be found in the Metadata Service. * @throws UserNotFoundException The user that created the query was not found in the Metadata Service. * @throws DatabaseNotFoundException The database metadata was not found in the Metadata Service. * @throws MetadataServiceException Communication with the Metadata Service failed. */ - QueryDto findById(PrivilegedDatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, + QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, RemoteUnavailableException, UserNotFoundException, DatabaseNotFoundException, MetadataServiceException; /** @@ -122,7 +110,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(PrivilegedDatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, + Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, QueryStoreInsertException; /** @@ -134,7 +122,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(PrivilegedDatabaseDto database, Long queryId, Boolean persist) throws SQLException, + void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException, QueryStorePersistException; /** @@ -144,5 +132,5 @@ public interface SubsetService { * @throws SQLException The connection to the database could not be established. * @throws QueryStoreGCException The query store failed to delete stale queries. */ - void deleteStaleQueries(PrivilegedDatabaseDto database) throws SQLException, QueryStoreGCException; + void deleteStaleQueries(DatabaseDto database) throws SQLException, QueryStoreGCException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java index 0564639874..b74c491abe 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java @@ -1,11 +1,9 @@ package at.tuwien.service; import at.tuwien.api.SortTypeDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.exception.*; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; @@ -16,57 +14,19 @@ import java.util.List; public interface TableService { - /** - * Get table schemas from the information_schema in the data database. - * - * @param database The data database privileged object. - * @return List of tables, if successful. - * @throws SQLException Failed to parse SQL query, contains invalid syntax. - * @throws TableNotFoundException The table could not be inspected in the data database. - * @throws DatabaseMalformedException The database inspection was unsuccessful, likely due to a bug in the mapping. - */ - List<TableDto> getSchemas(PrivilegedDatabaseDto database) throws SQLException, TableNotFoundException, - DatabaseMalformedException; - /** * Generate table statistic for a given table. Only numerical columns are calculated. * + * @param database The database. * @param table The table. * @return The table statistic, if successful. * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws TableMalformedException The table statistic generation was unsuccessful, likely due to a bug in the mapping. * @throws TableNotFoundException The table could not be inspected in the data database. */ - TableStatisticDto getStatistics(PrivilegedTableDto table) throws SQLException, TableMalformedException, + TableStatisticDto getStatistics(DatabaseDto database, TableDto table) throws SQLException, TableMalformedException, TableNotFoundException; - /** - * Finds a table with given data database and table name. - * - * @param database The data database. - * @param tableName The table name. - * @return The table, if successful. - * @throws TableNotFoundException The table could not be inspected in the data database. - * @throws SQLException Failed to parse SQL query, contains invalid syntax. - * @throws QueryMalformedException The inspection query is malformed. - */ - TableDto find(PrivilegedDatabaseDto database, String tableName) throws TableNotFoundException, SQLException, - QueryMalformedException; - - /** - * Creates a table in given data database with table definition. - * - * @param database The data database privileged object. - * @param data The table definition. - * @return The created table, if successful. - * @throws SQLException Query statement is malformed. - * @throws TableMalformedException The table schema is malformed. - * @throws TableExistsException The table name already exists in the information_schema. - * @throws TableNotFoundException The table could not be inspected in the metadata database. - */ - TableDto createTable(PrivilegedDatabaseDto database, TableCreateDto data) throws SQLException, - TableMalformedException, TableExistsException, TableNotFoundException; - /** * Updating table description. * @@ -76,7 +36,7 @@ public interface TableService { * @throws TableMalformedException The table schema is malformed. * @throws TableNotFoundException The table could not be inspected in the metadata database. */ - void updateTable(PrivilegedTableDto table, TableUpdateDto data) throws SQLException, + void updateTable(TableDto table, TableUpdateDto data) throws SQLException, TableMalformedException, TableNotFoundException; /** @@ -86,7 +46,7 @@ public interface TableService { * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws QueryMalformedException The drop table query is malformed. */ - void delete(PrivilegedTableDto table) throws SQLException, QueryMalformedException; + void delete(TableDto table) throws SQLException, QueryMalformedException; /** * Obtains the table history for a given table object. @@ -97,7 +57,7 @@ public interface TableService { * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws TableNotFoundException The table could not be found in the data database. */ - List<TableHistoryDto> history(PrivilegedTableDto table, Long size) throws SQLException, TableNotFoundException; + List<TableHistoryDto> history(TableDto table, Long size) throws SQLException, TableNotFoundException; /** * Obtains the table data tuples count at time. @@ -108,7 +68,7 @@ public interface TableService { * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws QueryMalformedException The count query is malformed, likely due to a bug in the application. */ - Long getCount(PrivilegedTableDto table, Instant timestamp) throws SQLException, + Long getCount(TableDto table, Instant timestamp) throws SQLException, QueryMalformedException; /** @@ -123,7 +83,7 @@ public interface TableService { * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws QueryMalformedException The import query is malformed, likely due to a bug in the application. */ - void importDataset(PrivilegedTableDto table, ImportDto data) throws MalformedException, StorageNotFoundException, + void importDataset(TableDto table, ImportDto data) throws MalformedException, StorageNotFoundException, StorageUnavailableException, SQLException, QueryMalformedException, TableMalformedException; /** @@ -135,7 +95,7 @@ public interface TableService { * @throws TableMalformedException The tuple is malformed and does not fit the table schema. * @throws QueryMalformedException The delete query is malformed, likely due to a bug in the application. */ - void deleteTuple(PrivilegedTableDto table, TupleDeleteDto data) throws SQLException, + void deleteTuple(TableDto table, TupleDeleteDto data) throws SQLException, TableMalformedException, QueryMalformedException; /** @@ -149,7 +109,7 @@ public interface TableService { * @throws StorageUnavailableException Failed to establish a connection with the Storage Service. * @throws StorageNotFoundException The storage service was not able to find the dataset for import. */ - void createTuple(PrivilegedTableDto table, TupleDto data) throws SQLException, + void createTuple(TableDto table, TupleDto data) throws SQLException, QueryMalformedException, TableMalformedException, StorageUnavailableException, StorageNotFoundException; /** @@ -161,10 +121,10 @@ public interface TableService { * @throws QueryMalformedException The update query is malformed, likely due to a bug in the application. * @throws TableMalformedException The tuple is malformed and does not fit the table schema. */ - void updateTuple(PrivilegedTableDto table, TupleUpdateDto data) throws SQLException, + void updateTuple(TableDto table, TupleUpdateDto data) throws SQLException, QueryMalformedException, TableMalformedException; - Dataset<Row> getData(PrivilegedDatabaseDto database, String tableOrView, Instant timestamp, + Dataset<Row> getData(DatabaseDto database, String tableOrView, Instant timestamp, Long page, Long size, SortTypeDto sortDirection, String sortColumn) throws QueryMalformedException, TableNotFoundException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/ViewService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/ViewService.java index ec7a723261..8f721f9974 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/ViewService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/ViewService.java @@ -1,66 +1,22 @@ package at.tuwien.service; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.query.QueryDto; -import at.tuwien.exception.DatabaseMalformedException; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.ViewMalformedException; -import at.tuwien.exception.ViewNotFoundException; import java.sql.SQLException; import java.time.Instant; -import java.util.List; public interface ViewService { - Boolean existsByName(PrivilegedDatabaseDto database, String name) throws SQLException, - QueryMalformedException; - - /** - * Gets the metadata schema for a given database. - * - * @param database The database. - * @return The list of view metadata. - * @throws SQLException The connection to the data database was unsuccessful. - * @throws DatabaseMalformedException The columns that are referenced in the views are unknown to the Metadata Database. Call {@link TableService#getSchemas(PrivilegedDatabaseDto)} beforehand. - * @throws ViewNotFoundException The view with given name was not found. - */ - List<ViewDto> getSchemas(PrivilegedDatabaseDto database) throws SQLException, DatabaseMalformedException, - ViewNotFoundException; - - /** - * Creates a view if not already exists. - * @param database - * @param subset - * @return - * @throws ViewMalformedException - * @throws SQLException - */ - ViewDto create(PrivilegedDatabaseDto database, QueryDto subset) throws ViewMalformedException, SQLException; - - /** - * Creates a view in the given data database. - * - * @param database The data database. - * @param data The view. - * @throws SQLException The connection to the data database was unsuccessful. - * @throws ViewMalformedException The query is malformed and was rejected by the data database. - */ - ViewDto create(PrivilegedDatabaseDto database, ViewCreateDto data) throws SQLException, - ViewMalformedException; - /** * Deletes a view. * - * @param database The database. - * @param viewName The view name. + * @param view The view. * @throws SQLException The connection to the data database was unsuccessful. * @throws ViewMalformedException The query is malformed and was rejected by the data database. */ - void delete(PrivilegedDatabaseDto database, String viewName) throws SQLException, ViewMalformedException; + void delete(ViewDto view) throws SQLException, ViewMalformedException; /** * Counts tuples in a view at system-versioned timestamp. @@ -71,5 +27,5 @@ public interface ViewService { * @throws SQLException The connection to the data database was unsuccessful. * @throws QueryMalformedException The query is malformed and was rejected by the data database. */ - Long count(PrivilegedViewDto view, Instant timestamp) throws SQLException, QueryMalformedException; + Long count(ViewDto view, Instant timestamp) throws SQLException, QueryMalformedException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java index c50ac2f0d6..16ace6dc9e 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java @@ -1,8 +1,8 @@ package at.tuwien.service.impl; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.DatabaseMalformedException; import at.tuwien.mapper.MariaDbMapper; import at.tuwien.service.AccessService; @@ -17,7 +17,7 @@ import java.sql.SQLException; @Log4j2 @Service -public class AccessServiceMariaDbImpl extends HibernateConnector implements AccessService { +public class AccessServiceMariaDbImpl extends DataConnector<DatabaseDto> implements AccessService { @Value("${dbrepo.grant.default.read}") private String grantDefaultRead; @@ -33,9 +33,9 @@ public class AccessServiceMariaDbImpl extends HibernateConnector implements Acce } @Override - public void create(PrivilegedDatabaseDto database, PrivilegedUserDto user, AccessTypeDto access) + public void create(DatabaseDto database, UserDto user, AccessTypeDto access) throws SQLException, DatabaseMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* create user if not exists */ @@ -71,9 +71,9 @@ public class AccessServiceMariaDbImpl extends HibernateConnector implements Acce } @Override - public void update(PrivilegedDatabaseDto database, PrivilegedUserDto user, AccessTypeDto access) + public void update(DatabaseDto database, UserDto user, AccessTypeDto access) throws DatabaseMalformedException, SQLException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* grant access */ @@ -96,9 +96,9 @@ public class AccessServiceMariaDbImpl extends HibernateConnector implements Acce } @Override - public void delete(PrivilegedDatabaseDto database, PrivilegedUserDto user) throws DatabaseMalformedException, + public void delete(DatabaseDto database, UserDto user) throws DatabaseMalformedException, SQLException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* revoke access */ @@ -109,7 +109,7 @@ public class AccessServiceMariaDbImpl extends HibernateConnector implements Acce /* apply access rights */ start = System.currentTimeMillis(); connection.prepareStatement(mariaDbMapper.databaseFlushPrivilegesQuery()) - .execute(); + .execute(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); connection.commit(); } catch (SQLException e) { 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 new file mode 100644 index 0000000000..fc9b2d97c3 --- /dev/null +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java @@ -0,0 +1,103 @@ +package at.tuwien.service.impl; + +import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.internal.CreateDatabaseDto; +import at.tuwien.api.user.UserBriefDto; +import at.tuwien.config.RabbitConfig; +import at.tuwien.exception.DatabaseMalformedException; +import at.tuwien.exception.QueryStoreCreateException; +import at.tuwien.mapper.MariaDbMapper; +import at.tuwien.service.ContainerService; +import com.mchange.v2.c3p0.ComboPooledDataSource; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.sql.SQLException; + +@Log4j2 +@Service +public class ContainerServiceMariaDbImpl extends DataConnector<ContainerDto> implements ContainerService { + + private final RabbitConfig rabbitConfig; + private final MariaDbMapper mariaDbMapper; + + @Autowired + public ContainerServiceMariaDbImpl(RabbitConfig rabbitConfig, MariaDbMapper mariaDbMapper) { + this.rabbitConfig = rabbitConfig; + this.mariaDbMapper = mariaDbMapper; + } + + @Override + public DatabaseDto createDatabase(ContainerDto container, CreateDatabaseDto data) throws SQLException, + DatabaseMalformedException { + final ComboPooledDataSource dataSource = getDataSource(container); + final Connection connection = dataSource.getConnection(); + try { + /* create database if not exists */ + final long start = System.currentTimeMillis(); + connection.prepareStatement(mariaDbMapper.databaseCreateDatabaseQuery(data.getInternalName())) + .execute(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + log.error("Failed to create database access: {}", e.getMessage()); + throw new DatabaseMalformedException("Failed to create database access: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Created database with name {}", data.getInternalName()); + return DatabaseDto.builder() + .internalName(data.getInternalName()) + .exchangeName(rabbitConfig.getExchangeName()) + .owner(UserBriefDto.builder() + .id(data.getUserId()) + .build()) + .contact(UserBriefDto.builder() + .id(data.getUserId()) + .build()) + .container(container) + .build(); + } + + @Override + public void createQueryStore(ContainerDto container, String databaseName) throws SQLException, + QueryStoreCreateException { + final ComboPooledDataSource dataSource = getDataSource(container, databaseName); + final Connection connection = dataSource.getConnection(); + 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); + start = System.currentTimeMillis(); + connection.prepareStatement(mariaDbMapper.queryStoreCreateHashTableProcedureRawQuery()) + .execute(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + start = System.currentTimeMillis(); + connection.prepareStatement(mariaDbMapper.queryStoreCreateStoreQueryProcedureRawQuery()) + .execute(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + start = System.currentTimeMillis(); + connection.prepareStatement(mariaDbMapper.queryStoreCreateInternalStoreQueryProcedureRawQuery()) + .execute(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + log.error("Failed to create query store: {}", e.getMessage()); + throw new QueryStoreCreateException("Failed to create query store: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Created query store in database with name {}", databaseName); + } +} 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 05b9e0a3fe..fbc800bf47 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 @@ -1,11 +1,11 @@ package at.tuwien.service.impl; -import at.tuwien.api.container.internal.PrivilegedContainerDto; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.user.internal.PrivilegedUserDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.user.UserDto; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.CredentialService; @@ -21,19 +21,19 @@ import java.util.UUID; public class CredentialServiceImpl implements CredentialService { private final MetadataServiceGateway gateway; - private final Cache<UUID, PrivilegedUserDto> userCache; - private final Cache<Long, PrivilegedViewDto> viewCache; + private final Cache<UUID, UserDto> userCache; + private final Cache<Long, ViewDto> viewCache; private final Cache<Long, DatabaseAccessDto> accessCache; - private final Cache<Long, PrivilegedTableDto> tableCache; - private final Cache<Long, PrivilegedDatabaseDto> databaseCache; - private final Cache<Long, PrivilegedContainerDto> containerCache; + private final Cache<Long, TableDto> tableCache; + private final Cache<Long, DatabaseDto> databaseCache; + private final Cache<Long, ContainerDto> containerCache; @Autowired - public CredentialServiceImpl(MetadataServiceGateway gateway, Cache<UUID, PrivilegedUserDto> userCache, - Cache<Long, PrivilegedViewDto> viewCache, Cache<Long, DatabaseAccessDto> accessCache, - Cache<Long, PrivilegedTableDto> tableCache, - Cache<Long, PrivilegedDatabaseDto> databaseCache, - Cache<Long, PrivilegedContainerDto> containerCache) { + 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) { this.gateway = gateway; this.userCache = userCache; this.viewCache = viewCache; @@ -44,29 +44,29 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public PrivilegedDatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, + public DatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { - final PrivilegedDatabaseDto cacheDatabase = databaseCache.getIfPresent(id); + final DatabaseDto cacheDatabase = databaseCache.getIfPresent(id); if (cacheDatabase != null) { log.trace("found database with id {} in cache", id); return cacheDatabase; } log.debug("database with id {} not it cache (anymore): reload from metadata service", id); - final PrivilegedDatabaseDto database = gateway.getDatabaseById(id); + final DatabaseDto database = gateway.getDatabaseById(id); databaseCache.put(id, database); return database; } @Override - public PrivilegedTableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException, + public TableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException, MetadataServiceException, TableNotFoundException { - final PrivilegedTableDto cacheTable = tableCache.getIfPresent(tableId); + final TableDto cacheTable = tableCache.getIfPresent(tableId); if (cacheTable != null) { log.trace("found table with id {} in cache", tableId); return cacheTable; } log.debug("table with id {} not it cache (anymore): reload from metadata service", tableId); - final PrivilegedTableDto table = gateway.getTableById(databaseId, tableId); + final TableDto table = gateway.getTableById(databaseId, tableId); tableCache.put(tableId, table); return table; } @@ -78,43 +78,43 @@ public class CredentialServiceImpl implements CredentialService { } @Override - public PrivilegedContainerDto getContainer(Long id) throws RemoteUnavailableException, MetadataServiceException, + public ContainerDto getContainer(Long id) throws RemoteUnavailableException, MetadataServiceException, ContainerNotFoundException { - final PrivilegedContainerDto cacheContainer = containerCache.getIfPresent(id); + final ContainerDto cacheContainer = containerCache.getIfPresent(id); if (cacheContainer != null) { log.trace("found container with id {} in cache", id); return cacheContainer; } log.debug("container with id {} not it cache (anymore): reload from metadata service", id); - final PrivilegedContainerDto container = gateway.getContainerById(id); + final ContainerDto container = gateway.getContainerById(id); containerCache.put(id, container); return container; } @Override - public PrivilegedViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, + public ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException, MetadataServiceException, ViewNotFoundException { - final PrivilegedViewDto cacheView = viewCache.getIfPresent(viewId); + final ViewDto cacheView = viewCache.getIfPresent(viewId); if (cacheView != null) { log.trace("found view with id {} in cache", viewId); return cacheView; } log.debug("view with id {} not it cache (anymore): reload from metadata service", viewId); - final PrivilegedViewDto view = gateway.getViewById(databaseId, viewId); + final ViewDto view = gateway.getViewById(databaseId, viewId); viewCache.put(viewId, view); return view; } @Override - public PrivilegedUserDto getUser(UUID id) throws RemoteUnavailableException, MetadataServiceException, + public UserDto getUser(UUID id) throws RemoteUnavailableException, MetadataServiceException, UserNotFoundException { - final PrivilegedUserDto cacheUser = userCache.getIfPresent(id); + final UserDto cacheUser = userCache.getIfPresent(id); if (cacheUser != null) { log.trace("found user with id {} in cache", id); return cacheUser; } log.debug("user with id {} not it cache (anymore): reload from metadata service", id); - final PrivilegedUserDto user = gateway.getPrivilegedUserById(id); + final UserDto user = gateway.getUserById(id); userCache.put(id, user); return user; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java new file mode 100644 index 0000000000..9fbee30fa6 --- /dev/null +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -0,0 +1,66 @@ +package at.tuwien.service.impl; + +import at.tuwien.api.CacheableDto; +import com.mchange.v2.c3p0.ComboPooledDataSource; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Service; + +@Log4j2 +@Service +public abstract class DataConnector<T extends CacheableDto> { + + public ComboPooledDataSource getDataSource(T entity) { + final long start = System.currentTimeMillis(); + final ComboPooledDataSource dataSource = new ComboPooledDataSource(); + dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), + entity.getDatabase())); + dataSource.setUser(entity.getUsername()); + dataSource.setPassword(entity.getPassword()); + dataSource.setInitialPoolSize(5); + dataSource.setMinPoolSize(5); + dataSource.setAcquireIncrement(5); + dataSource.setMaxPoolSize(20); + dataSource.setMaxStatements(100); + return dataSource; + } + + public ComboPooledDataSource getDataSource(T entity, String databaseName) { + final long start = System.currentTimeMillis(); + final ComboPooledDataSource dataSource = new ComboPooledDataSource(); + dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), databaseName)); + dataSource.setUser(entity.getUsername()); + dataSource.setPassword(entity.getPassword()); + dataSource.setInitialPoolSize(5); + dataSource.setMinPoolSize(5); + dataSource.setAcquireIncrement(5); + dataSource.setMaxPoolSize(20); + dataSource.setMaxStatements(100); + return dataSource; + } + + public String getSparkUrl(String jdbcMethod, String host, String password, String databaseName) { + final StringBuilder sb = new StringBuilder(getJdbcUrl(jdbcMethod, host, password, databaseName)) + .append("?sessionVariables=sql_mode='ANSI_QUOTES'"); + log.trace("mapped container to spark url: {}", sb.toString()); + return sb.toString(); + } + + public String getSparkUrl(T entity) { + return getSparkUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), entity.getDatabase()); + } + + public String getJdbcUrl(String jdbcMethod, String host, String password, String databaseName) { + final StringBuilder stringBuilder = new StringBuilder("jdbc:") + .append(jdbcMethod) + .append("://") + .append(host) + .append(":") + .append(password); + if (databaseName != null) { + stringBuilder.append("/") + .append(databaseName); + } + return stringBuilder.toString(); + } + +} 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 a15c22f55e..2b5af71d1c 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 @@ -1,72 +1,353 @@ package at.tuwien.service.impl; -import at.tuwien.api.container.internal.PrivilegedContainerDto; -import at.tuwien.api.database.internal.CreateDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.user.UserBriefDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.ViewDto; +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.RabbitConfig; -import at.tuwien.exception.DatabaseMalformedException; +import at.tuwien.config.QueryConfig; +import at.tuwien.exception.*; +import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; +import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.DatabaseService; +import at.tuwien.service.TableService; +import at.tuwien.service.ViewService; +import com.google.common.hash.Hashing; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import java.nio.charset.StandardCharsets; import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; +import java.util.LinkedList; +import java.util.List; @Log4j2 @Service -public class DatabaseServiceMariaDbImpl extends HibernateConnector implements DatabaseService { +public class DatabaseServiceMariaDbImpl extends DataConnector<DatabaseDto> implements DatabaseService { - private final RabbitConfig rabbitConfig; + private final DataMapper dataMapper; + private final QueryConfig queryConfig; + private final ViewService viewService; + private final TableService tableService; private final MariaDbMapper mariaDbMapper; + private final MetadataMapper metadataMapper; @Autowired - public DatabaseServiceMariaDbImpl(RabbitConfig rabbitConfig, MariaDbMapper mariaDbMapper) { - this.rabbitConfig = rabbitConfig; + public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, ViewService viewService, + TableService tableService, MariaDbMapper mariaDbMapper, + @Qualifier("metadataMapper") MetadataMapper metadataMapper) { + this.dataMapper = dataMapper; + this.queryConfig = queryConfig; + this.viewService = viewService; + this.tableService = tableService; this.mariaDbMapper = mariaDbMapper; + this.metadataMapper = metadataMapper; } @Override - public PrivilegedDatabaseDto create(PrivilegedContainerDto container, CreateDatabaseDto data) throws SQLException, - DatabaseMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(container, null); + public ViewDto inspectView(DatabaseDto database, String viewName) throws SQLException, ViewNotFoundException { + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + try { + /* obtain only view metadata */ + long start = System.currentTimeMillis(); + final PreparedStatement statement1 = connection.prepareStatement(mariaDbMapper.databaseViewSelectRawQuery()); + statement1.setString(1, database.getInternalName()); + statement1.setString(2, viewName); + log.trace("1={}, 2={}", database.getInternalName(), viewName); + final ResultSet resultSet1 = statement1.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + if (!resultSet1.next()) { + throw new ViewNotFoundException("Failed to find view in the information schema"); + } + final ViewDto view = dataMapper.schemaResultSetToView(database, resultSet1); + view.setVdbid(database.getId()); + view.setOwner(database.getOwner()); + /* obtain view columns */ + start = System.currentTimeMillis(); + final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); + statement2.setString(1, database.getInternalName()); + statement2.setString(2, view.getInternalName()); + log.trace("1={}, 2={}", database.getInternalName(), view.getInternalName()); + final ResultSet resultSet2 = statement2.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + TableDto tmp = TableDto.builder() + .columns(new LinkedList<>()) + .build(); + while (resultSet2.next()) { + tmp = dataMapper.resultSetToTable(resultSet2, tmp); + } + view.setColumns(tmp.getColumns() + .stream() + .map(metadataMapper::columnDtoToViewColumnDto) + .toList()); + view.getColumns() + .forEach(column -> column.setDatabaseId(database.getId())); + log.debug("obtained metadata for view {}.{}", database.getInternalName(), view.getInternalName()); + return view; + } finally { + dataSource.close(); + } + } + + @Override + public TableDto createTable(DatabaseDto database, TableCreateDto data) throws SQLException, + TableMalformedException, TableExistsException { + final String tableName = mariaDbMapper.nameToInternalName(data.getName()); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { - /* create database if not exists */ + /* create table if not exists */ final long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.databaseCreateDatabaseQuery(data.getInternalName())) + connection.prepareStatement(mariaDbMapper.tableCreateDtoToCreateTableRawQuery(data)) .execute(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); connection.commit(); } catch (SQLException e) { connection.rollback(); - log.error("Failed to create database access: {}", e.getMessage()); - throw new DatabaseMalformedException("Failed to create database access: " + e.getMessage(), e); + if (e.getMessage().contains("already exists")) { + log.error("Failed to create table: already exists"); + throw new TableExistsException("Failed to create table: already exists", e); + } + log.error("Failed to create table: {}", e.getMessage()); + throw new TableMalformedException("Failed to create table: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Created table with name {}", tableName); + final TableDto table = metadataMapper.databaseDtoToTableDto(database); + table.setInternalName(tableName); + return table; + } + + @Override + public Boolean existsView(DatabaseDto database, String viewName) throws SQLException, + QueryMalformedException { + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + final Boolean queryResult; + try { + /* find view data */ + final long start = System.currentTimeMillis(); + final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.selectExistsTableOrViewRawQuery()); + statement.setString(1, database.getInternalName()); + statement.setString(2, viewName); + final ResultSet resultSet = statement.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + queryResult = mariaDbMapper.resultSetToBoolean(resultSet); + } catch (SQLException e) { + log.error("Failed to prepare statement {}", e.getMessage()); + throw new QueryMalformedException("Failed to prepare statement: " + e.getMessage(), e); } finally { dataSource.close(); } - log.info("Created database with name {}", data.getInternalName()); - return PrivilegedDatabaseDto.builder() - .internalName(data.getInternalName()) - .exchangeName(rabbitConfig.getExchangeName()) - .owner(UserBriefDto.builder() - .id(data.getUserId()) - .build()) - .contact(UserBriefDto.builder() - .id(data.getUserId()) - .build()) - .container(container) + return queryResult; + } + + @Override + public ViewDto createView(DatabaseDto database, ViewCreateDto data) throws SQLException, + ViewMalformedException { + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + ViewDto view = ViewDto.builder() + .name(data.getName()) + .internalName(mariaDbMapper.nameToInternalName(data.getName())) + .query(data.getQuery()) + .queryHash(Hashing.sha256() + .hashString(data.getQuery(), StandardCharsets.UTF_8) + .toString()) + .isPublic(database.getIsPublic()) + .owner(database.getOwner()) + .identifiers(new LinkedList<>()) + .isInitialView(false) + .vdbid(database.getId()) + .columns(new LinkedList<>()) .build(); + try { + /* create view if not exists */ + final long start = System.currentTimeMillis(); + connection.prepareStatement(mariaDbMapper.viewCreateRawQuery(view.getInternalName(), data.getQuery())) + .execute(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + /* select view columns */ + final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); + statement2.setString(1, database.getInternalName()); + statement2.setString(2, view.getInternalName()); + final ResultSet resultSet2 = statement2.executeQuery(); + while (resultSet2.next()) { + view = dataMapper.resultSetToTable(resultSet2, view, queryConfig); + } + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + log.error("Failed to create view: {}", e.getMessage()); + throw new ViewMalformedException("Failed to create view: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Created view with name {}", view.getName()); + return view; + } + + @Override + public List<ViewDto> exploreViews(DatabaseDto database) throws SQLException, DatabaseMalformedException, + ViewNotFoundException { + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + final List<ViewDto> views = new LinkedList<>(); + try { + /* inspect tables before views */ + final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.databaseViewsSelectRawQuery()); + statement.setString(1, database.getInternalName()); + final long start = System.currentTimeMillis(); + final ResultSet resultSet1 = statement.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + while (resultSet1.next()) { + final String viewName = resultSet1.getString(1); + if (viewName.length() == 64) { + log.trace("view {}.{} seems to be a subset view (name length = 64), skip.", database.getInternalName(), viewName); + continue; + } + if (database.getViews().stream().anyMatch(v -> v.getInternalName().equals(viewName))) { + log.trace("view {}.{} already known to metadata database, skip.", database.getInternalName(), viewName); + continue; + } + if (database.getTables().stream().noneMatch(t -> t.getInternalName().equals(viewName))) { + views.add(inspectView(database, viewName)); + } + } + } catch (SQLException e) { + log.error("Failed to get view schemas: {}", e.getMessage()); + throw new DatabaseMalformedException("Failed to get view schemas: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Found {} view schema(s)", views.size()); + return views; + } + + @Override + public List<TableDto> exploreTables(DatabaseDto database) throws SQLException, TableNotFoundException, + DatabaseMalformedException { + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + final List<TableDto> tables = new LinkedList<>(); + try { + /* inspect tables before views */ + final long start = System.currentTimeMillis(); + final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.databaseTablesSelectRawQuery()); + statement.setString(1, database.getInternalName()); + final ResultSet resultSet1 = statement.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + while (resultSet1.next()) { + final String tableName = resultSet1.getString(1); + if (database.getTables().stream().anyMatch(t -> t.getInternalName().equals(tableName))) { + log.trace("view {}.{} already known to metadata database, skip.", database.getInternalName(), tableName); + continue; + } + final TableDto table = inspectTable(database, tableName); + if (database.getTables().stream().noneMatch(t -> t.getInternalName().equals(tableName))) { + tables.add(table); + } + } + } catch (SQLException e) { + log.error("Failed to get table schemas: {}", e.getMessage()); + throw new DatabaseMalformedException("Failed to get table schemas: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Found {} table schema(s)", tables.size()); + return tables; + } + + @Override + public TableDto inspectTable(DatabaseDto database, String tableName) throws SQLException, TableNotFoundException { + log.trace("inspecting table: {}.{}", database.getInternalName(), tableName); + final ComboPooledDataSource dataSource = getDataSource(database); + final Connection connection = dataSource.getConnection(); + try { + /* obtain only table metadata */ + long start = System.currentTimeMillis(); + final PreparedStatement statement1 = connection.prepareStatement(mariaDbMapper.databaseTableSelectRawQuery()); + statement1.setString(1, database.getInternalName()); + statement1.setString(2, tableName); + log.trace("1={}, 2={}", database.getInternalName(), tableName); + TableDto table = dataMapper.schemaResultSetToTable(database, statement1.executeQuery()); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + /* obtain columns metadata */ + start = System.currentTimeMillis(); + final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); + statement2.setString(1, database.getInternalName()); + statement2.setString(2, tableName); + log.trace("1={}, 2={}", database.getInternalName(), tableName); + final ResultSet resultSet2 = statement2.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + while (resultSet2.next()) { + table = dataMapper.resultSetToTable(resultSet2, table); + } + /* obtain check constraints metadata */ + start = System.currentTimeMillis(); + final PreparedStatement statement3 = connection.prepareStatement(mariaDbMapper.columnsCheckConstraintSelectRawQuery()); + statement3.setString(1, database.getInternalName()); + statement3.setString(2, tableName); + log.trace("1={}, 2={}", database.getInternalName(), tableName); + final ResultSet resultSet3 = statement3.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + while (resultSet3.next()) { + final String clause = resultSet3.getString(1); + table.getConstraints() + .getChecks() + .add(clause); + log.trace("found check clause: {}", clause); + } + /* obtain column constraints metadata */ + start = System.currentTimeMillis(); + final PreparedStatement statement4 = connection.prepareStatement(mariaDbMapper.databaseTableConstraintsSelectRawQuery()); + statement4.setString(1, database.getInternalName()); + statement4.setString(2, tableName); + log.trace("1={}, 2={}", database.getInternalName(), tableName); + final ResultSet resultSet4 = statement4.executeQuery(); + log.trace("executed statement in {} ms", System.currentTimeMillis() - start); + while (resultSet4.next()) { + table = dataMapper.resultSetToConstraint(resultSet4, table); + for (UniqueDto uk : table.getConstraints().getUniques()) { + uk.setTable(metadataMapper.tableDtoToTableBriefDto(table)); + final TableDto tmpTable = table; + uk.getColumns() + .forEach(column -> { + column.setTableId(tmpTable.getId()); + column.setDatabaseId(database.getId()); + }); + } + } + table.setTdbid(database.getId()); + table.setOwner(database.getOwner()); + final TableDto tmpTable = table; + tmpTable.getColumns() + .forEach(column -> { + column.setTableId(tmpTable.getId()); + column.setDatabaseId(database.getId()); + }); + log.debug("obtained metadata for table {}.{}", database.getInternalName(), tableName); + return tmpTable; + } finally { + dataSource.close(); + } } @Override - public void update(PrivilegedDatabaseDto database, UpdateUserPasswordDto data) throws SQLException, + public void update(DatabaseDto database, UpdateUserPasswordDto data) throws SQLException, DatabaseMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* update user password */ diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java deleted file mode 100644 index 242cefd557..0000000000 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java +++ /dev/null @@ -1,53 +0,0 @@ -package at.tuwien.service.impl; - -import at.tuwien.api.container.internal.PrivilegedContainerDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -@Log4j2 -@Service -public abstract class HibernateConnector { - - public ComboPooledDataSource getPrivilegedDataSource(PrivilegedContainerDto container, String databaseName) { - final long start = System.currentTimeMillis(); - final ComboPooledDataSource dataSource = new ComboPooledDataSource(); - dataSource.setJdbcUrl(url(container, databaseName)); - dataSource.setUser(container.getUsername()); - dataSource.setPassword(container.getPassword()); - dataSource.setInitialPoolSize(5); - dataSource.setMinPoolSize(5); - dataSource.setAcquireIncrement(5); - dataSource.setMaxPoolSize(20); - dataSource.setMaxStatements(100); - log.trace("created pooled data source {} in {} ms, user={}", url(container, databaseName), System.currentTimeMillis() - start, container.getUsername()); - return dataSource; - } - - public ComboPooledDataSource getPrivilegedDataSource(PrivilegedDatabaseDto database) { - return getPrivilegedDataSource(database.getContainer(), database.getInternalName()); - } - - public String getSparkUrl(PrivilegedContainerDto container, String databaseName) { - final StringBuilder sb = new StringBuilder(url(container, databaseName)) - .append("?sessionVariables=sql_mode='ANSI_QUOTES'"); - log.trace("mapped container to spark url: {}", sb.toString()); - return sb.toString(); - } - - private String url(PrivilegedContainerDto container, String databaseName) { - final StringBuilder stringBuilder = new StringBuilder("jdbc:") - .append(container.getImage().getJdbcMethod()) - .append("://") - .append(container.getHost()) - .append(":") - .append(container.getPort()); - if (databaseName != null) { - stringBuilder.append("/") - .append(databaseName); - } - return stringBuilder.toString(); - } - -} diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java index d5127e050e..1a26a84ef6 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java @@ -1,7 +1,7 @@ package at.tuwien.service.impl; +import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.QueueService; @@ -18,7 +18,7 @@ import java.util.Optional; @Log4j2 @Service -public class QueueServiceRabbitMqImpl extends HibernateConnector implements QueueService { +public class QueueServiceRabbitMqImpl extends DataConnector<TableDto> implements QueueService { private final DataMapper dataMapper; private final MetadataMapper metadataMapper; @@ -30,13 +30,13 @@ public class QueueServiceRabbitMqImpl extends HibernateConnector implements Queu } @Override - public void insert(PrivilegedTableDto table, Map<String, Object> data) throws SQLException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + public void insert(TableDto table, Map<String, Object> data) throws SQLException { + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { final int[] idx = new int[]{1}; final PreparedStatement preparedStatement = connection.prepareStatement( - dataMapper.rabbitMqTupleToInsertOrUpdateQuery(metadataMapper.privilegedTableDtoToTableDto(table), data)); + dataMapper.rabbitMqTupleToInsertOrUpdateQuery(metadataMapper.tableDtoToTableDto(table), data)); for (Map.Entry<String, Object> entry : data.entrySet()) { final Optional<ColumnDto> optional = table.getColumns().stream().filter(c -> c.getInternalName().equals(entry.getKey())).findFirst(); if (optional.isEmpty()) { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SchemaServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SchemaServiceMariaDbImpl.java deleted file mode 100644 index e2b0c984e0..0000000000 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SchemaServiceMariaDbImpl.java +++ /dev/null @@ -1,164 +0,0 @@ -package at.tuwien.service.impl; - -import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.constraints.unique.UniqueDto; -import at.tuwien.exception.TableNotFoundException; -import at.tuwien.exception.ViewNotFoundException; -import at.tuwien.mapper.DataMapper; -import at.tuwien.mapper.MariaDbMapper; -import at.tuwien.mapper.MetadataMapper; -import at.tuwien.service.SchemaService; -import com.mchange.v2.c3p0.ComboPooledDataSource; -import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.LinkedList; - -@Log4j2 -@Service -public class SchemaServiceMariaDbImpl extends HibernateConnector implements SchemaService { - - private final DataMapper dataMapper; - private final MariaDbMapper mariaDbMapper; - private final MetadataMapper metadataMapper; - - @Autowired - public SchemaServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper) { - this.dataMapper = dataMapper; - this.mariaDbMapper = mariaDbMapper; - this.metadataMapper = metadataMapper; - } - - @Override - public TableDto inspectTable(PrivilegedDatabaseDto database, String tableName) throws SQLException, - TableNotFoundException { - log.trace("inspecting table: {}.{}", database.getInternalName(), tableName); - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - try { - /* obtain only table metadata */ - long start = System.currentTimeMillis(); - final PreparedStatement statement1 = connection.prepareStatement(mariaDbMapper.databaseTableSelectRawQuery()); - statement1.setString(1, database.getInternalName()); - statement1.setString(2, tableName); - log.trace("1={}, 2={}", database.getInternalName(), tableName); - TableDto table = dataMapper.schemaResultSetToTable(metadataMapper.privilegedDatabaseDtoToDatabaseDto(database), statement1.executeQuery()); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - /* obtain columns metadata */ - start = System.currentTimeMillis(); - final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); - statement2.setString(1, database.getInternalName()); - statement2.setString(2, tableName); - log.trace("1={}, 2={}", database.getInternalName(), tableName); - final ResultSet resultSet2 = statement2.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - while (resultSet2.next()) { - table = dataMapper.resultSetToTable(resultSet2, table); - } - /* obtain check constraints metadata */ - start = System.currentTimeMillis(); - final PreparedStatement statement3 = connection.prepareStatement(mariaDbMapper.columnsCheckConstraintSelectRawQuery()); - statement3.setString(1, database.getInternalName()); - statement3.setString(2, tableName); - log.trace("1={}, 2={}", database.getInternalName(), tableName); - final ResultSet resultSet3 = statement3.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - while (resultSet3.next()) { - final String clause = resultSet3.getString(1); - table.getConstraints() - .getChecks() - .add(clause); - log.trace("found check clause: {}", clause); - } - /* obtain column constraints metadata */ - start = System.currentTimeMillis(); - final PreparedStatement statement4 = connection.prepareStatement(mariaDbMapper.databaseTableConstraintsSelectRawQuery()); - statement4.setString(1, database.getInternalName()); - statement4.setString(2, tableName); - log.trace("1={}, 2={}", database.getInternalName(), tableName); - final ResultSet resultSet4 = statement4.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - while (resultSet4.next()) { - table = dataMapper.resultSetToConstraint(resultSet4, table); - for (UniqueDto uk : table.getConstraints().getUniques()) { - uk.setTable(metadataMapper.tableDtoToTableBriefDto(table)); - final TableDto tmpTable = table; - uk.getColumns() - .forEach(column -> { - column.setTableId(tmpTable.getId()); - column.setDatabaseId(database.getId()); - }); - } - } - table.setTdbid(database.getId()); - table.setOwner(database.getOwner()); - final TableDto tmpTable = table; - tmpTable.getColumns() - .forEach(column -> { - column.setTableId(tmpTable.getId()); - column.setDatabaseId(database.getId()); - }); - log.debug("obtained metadata for table {}.{}", database.getInternalName(), tableName); - return tmpTable; - } finally { - dataSource.close(); - } - } - - @Override - public ViewDto inspectView(PrivilegedDatabaseDto privilegedDatabase, String viewName) throws SQLException, - ViewNotFoundException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(privilegedDatabase); - final Connection connection = dataSource.getConnection(); - final DatabaseDto database = metadataMapper.privilegedDatabaseDtoToDatabaseDto(privilegedDatabase); - try { - /* obtain only view metadata */ - long start = System.currentTimeMillis(); - final PreparedStatement statement1 = connection.prepareStatement(mariaDbMapper.databaseViewSelectRawQuery()); - statement1.setString(1, database.getInternalName()); - statement1.setString(2, viewName); - log.trace("1={}, 2={}", database.getInternalName(), viewName); - final ResultSet resultSet1 = statement1.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - if (!resultSet1.next()) { - throw new ViewNotFoundException("Failed to find view in the information schema"); - } - ViewDto view = dataMapper.schemaResultSetToView(database, resultSet1); - view.setVdbid(database.getId()); - view.setOwner(database.getOwner()); - /* obtain view columns */ - start = System.currentTimeMillis(); - final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); - statement2.setString(1, database.getInternalName()); - statement2.setString(2, viewName); - log.trace("1={}, 2={}", database.getInternalName(), viewName); - final ResultSet resultSet2 = statement2.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - TableDto tmp = TableDto.builder() - .columns(new LinkedList<>()) - .build(); - while (resultSet2.next()) { - tmp = dataMapper.resultSetToTable(resultSet2, tmp); - } - view.setColumns(tmp.getColumns() - .stream() - .map(metadataMapper::columnDtoToViewColumnDto) - .toList()); - view.getColumns() - .forEach(column -> column.setDatabaseId(database.getId())); - log.debug("obtained metadata for view {}.{}", database.getInternalName(), viewName); - return view; - } finally { - dataSource.close(); - } - } - -} 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 fb244bb301..62b7c77a84 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,7 +1,7 @@ package at.tuwien.service.impl; -import at.tuwien.api.container.internal.PrivilegedContainerDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierTypeDto; @@ -10,6 +10,7 @@ import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; import at.tuwien.mapper.MetadataMapper; +import at.tuwien.service.DatabaseService; import at.tuwien.service.SubsetService; import at.tuwien.service.TableService; import at.tuwien.service.ViewService; @@ -28,72 +29,41 @@ import java.util.UUID; @Log4j2 @Service -public class SubsetServiceMariaDbImpl extends HibernateConnector implements SubsetService { +public class SubsetServiceMariaDbImpl extends DataConnector<DatabaseDto> implements SubsetService { private final DataMapper dataMapper; private final ViewService viewService; private final TableService tableService; private final MariaDbMapper mariaDbMapper; private final MetadataMapper metadataMapper; + private final DatabaseService databaseService; private final MetadataServiceGateway metadataServiceGateway; @Autowired public SubsetServiceMariaDbImpl(DataMapper dataMapper, ViewService viewService, TableService tableService, MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper, - MetadataServiceGateway metadataServiceGateway) { + DatabaseService databaseService, MetadataServiceGateway metadataServiceGateway) { this.dataMapper = dataMapper; this.viewService = viewService; this.tableService = tableService; this.mariaDbMapper = mariaDbMapper; this.metadataMapper = metadataMapper; + this.databaseService = databaseService; this.metadataServiceGateway = metadataServiceGateway; } @Override - public void createQueryStore(PrivilegedContainerDto container, String databaseName) throws SQLException, - QueryStoreCreateException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(container, databaseName); - final Connection connection = dataSource.getConnection(); - 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); - start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.queryStoreCreateHashTableProcedureRawQuery()) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.queryStoreCreateStoreQueryProcedureRawQuery()) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.queryStoreCreateInternalStoreQueryProcedureRawQuery()) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - connection.commit(); - } catch (SQLException e) { - connection.rollback(); - log.error("Failed to create query store: {}", e.getMessage()); - throw new QueryStoreCreateException("Failed to create query store: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - log.info("Created query store in database with name {}", databaseName); - } - - @Override - public Dataset<Row> getData(PrivilegedDatabaseDto database, QueryDto subset, Long page, Long size) + public Dataset<Row> getData(DatabaseDto database, QueryDto subset, Long page, Long size) throws ViewMalformedException, SQLException, QueryMalformedException, TableNotFoundException { final String viewName = metadataMapper.queryDtoToViewName(subset); - if (!viewService.existsByName(database, viewName)) { + if (!databaseService.existsView(database, viewName)) { log.warn("Missing internal view {} for subset with id {}: create it from subset query", viewName, subset.getId()); - viewService.create(database, subset); + databaseService.createView(database, ViewCreateDto.builder() + .isPublic(false) + .isSchemaPublic(false) + .name(viewName) + .query(subset.getQuery()) + .build()); } else { log.debug("internal view {}.{} for subset with id {} exists", database.getInternalName(), viewName, subset.getId()); } @@ -101,22 +71,22 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public Long create(PrivilegedDatabaseDto database, String statement, Instant timestamp, UUID userId) + public Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId) throws QueryStoreInsertException, SQLException { return storeQuery(database, statement, timestamp, userId); } @Override - public Long reExecuteCount(PrivilegedDatabaseDto database, QueryDto query) throws TableMalformedException, + public Long reExecuteCount(DatabaseDto database, QueryDto query) throws TableMalformedException, SQLException, QueryMalformedException { return executeCountNonPersistent(database, query.getQuery(), query.getExecution()); } @Override - public List<QueryDto> findAll(PrivilegedDatabaseDto database, Boolean filterPersisted) throws SQLException, + public List<QueryDto> findAll(DatabaseDto database, Boolean filterPersisted) throws SQLException, QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException { final List<IdentifierBriefDto> identifiers = metadataServiceGateway.getIdentifiers(database.getId(), null); - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { final long start = System.currentTimeMillis(); @@ -147,9 +117,9 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public Long executeCountNonPersistent(PrivilegedDatabaseDto database, String statement, Instant timestamp) + public Long executeCountNonPersistent(DatabaseDto database, String statement, Instant timestamp) throws SQLException, QueryMalformedException, TableMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { final long start = System.currentTimeMillis(); @@ -166,9 +136,9 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public QueryDto findById(PrivilegedDatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, + public QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { final long start = System.currentTimeMillis(); @@ -193,11 +163,11 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public Long storeQuery(PrivilegedDatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, + public Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException, QueryStoreInsertException { /* save */ final Long queryId; - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* insert query into query store */ @@ -228,9 +198,9 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public void persist(PrivilegedDatabaseDto database, Long queryId, Boolean persist) throws SQLException, + public void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException, QueryStorePersistException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { /* update query */ @@ -250,8 +220,8 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs } @Override - public void deleteStaleQueries(PrivilegedDatabaseDto database) throws SQLException, QueryStoreGCException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + public void deleteStaleQueries(DatabaseDto database) throws SQLException, QueryStoreGCException { + final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); try { final long start = System.currentTimeMillis(); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java index c34f057e01..6586c8ba42 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java @@ -1,18 +1,16 @@ package at.tuwien.service.impl; import at.tuwien.api.SortTypeDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnStatisticDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; -import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.exception.*; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; -import at.tuwien.service.SchemaService; +import at.tuwien.service.DatabaseService; import at.tuwien.service.StorageService; import at.tuwien.service.TableService; import at.tuwien.utils.MariaDbUtil; @@ -28,66 +26,35 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.Instant; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Properties; @Log4j2 @Service -public class TableServiceMariaDbImpl extends HibernateConnector implements TableService { +public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements TableService { private final DataMapper dataMapper; private final SparkSession sparkSession; private final MariaDbMapper mariaDbMapper; - private final SchemaService schemaService; private final StorageService storageService; + private final DatabaseService databaseService; @Autowired public TableServiceMariaDbImpl(DataMapper dataMapper, SparkSession sparkSession, MariaDbMapper mariaDbMapper, - SchemaService schemaService, StorageService storageService) { + StorageService storageService, DatabaseService databaseService) { this.dataMapper = dataMapper; this.sparkSession = sparkSession; this.mariaDbMapper = mariaDbMapper; - this.schemaService = schemaService; this.storageService = storageService; + this.databaseService = databaseService; } @Override - public List<TableDto> getSchemas(PrivilegedDatabaseDto database) throws SQLException, TableNotFoundException, - DatabaseMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - final List<TableDto> tables = new LinkedList<>(); - try { - /* inspect tables before views */ - final long start = System.currentTimeMillis(); - final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.databaseTablesSelectRawQuery()); - statement.setString(1, database.getInternalName()); - final ResultSet resultSet1 = statement.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - while (resultSet1.next()) { - final String tableName = resultSet1.getString(1); - if (database.getTables().stream().anyMatch(t -> t.getInternalName().equals(tableName))) { - log.trace("view {}.{} already known to metadata database, skip.", database.getInternalName(), tableName); - continue; - } - final TableDto table = schemaService.inspectTable(database, tableName); - if (database.getTables().stream().noneMatch(t -> t.getInternalName().equals(table.getInternalName()))) { - tables.add(table); - } - } - } catch (SQLException e) { - log.error("Failed to get table schemas: {}", e.getMessage()); - throw new DatabaseMalformedException("Failed to get table schemas: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - log.info("Found {} table schema(s)", tables.size()); - return tables; - } - - @Override - public TableStatisticDto getStatistics(PrivilegedTableDto table) throws SQLException, TableMalformedException, + public TableStatisticDto getStatistics(DatabaseDto database, TableDto table) throws SQLException, TableMalformedException, TableNotFoundException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); final TableStatisticDto statistic; try { @@ -95,14 +62,14 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table final long start = System.currentTimeMillis(); final String query = mariaDbMapper.tableColumnStatisticsSelectRawQuery(table.getColumns(), table.getInternalName()); if (query == null) { - log.debug("table {}.{} does not have columns that can be analysed for statistical properties (i.e. no numeric columns)", table.getDatabase().getInternalName(), table.getInternalName()); + log.debug("table {}.{} does not have columns that can be analysed for statistical properties (i.e. no numeric columns)", database.getInternalName(), table.getInternalName()); statistic = null; } else { final ResultSet resultSet = connection.prepareStatement(query) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); statistic = dataMapper.resultSetToTableStatistic(resultSet); - final TableDto tmpTable = schemaService.inspectTable(table.getDatabase(), table.getInternalName()); + final TableDto tmpTable = databaseService.inspectTable(database, table.getInternalName()); statistic.setAvgRowLength(tmpTable.getAvgRowLength()); statistic.setDataLength(tmpTable.getDataLength()); statistic.setMaxDataLength(tmpTable.getMaxDataLength()); @@ -126,44 +93,9 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } @Override - public TableDto find(PrivilegedDatabaseDto database, String tableName) throws TableNotFoundException, SQLException { - return schemaService.inspectTable(database, tableName); - } - - @Override - public TableDto createTable(PrivilegedDatabaseDto database, TableCreateDto data) throws SQLException, - TableMalformedException, TableExistsException, TableNotFoundException { - final String tableName = mariaDbMapper.nameToInternalName(data.getName()); - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - try { - /* create table if not exists */ - final long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.tableCreateDtoToCreateTableRawQuery(data)) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - connection.commit(); - } catch (SQLException e) { - connection.rollback(); - if (e.getMessage().contains("already exists")) { - log.error("Failed to create table: already exists"); - throw new TableExistsException("Failed to create table: already exists", e); - } - log.error("Failed to create table: {}", e.getMessage()); - throw new TableMalformedException("Failed to create table: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - log.info("Created table with name {}", tableName); - final TableDto table = find(database, tableName); - table.setName(data.getName()); - return table; - } - - @Override - public void updateTable(PrivilegedTableDto table, TableUpdateDto data) throws SQLException, + public void updateTable(TableDto table, TableUpdateDto data) throws SQLException, TableMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { /* create table if not exists */ @@ -189,14 +121,13 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } @Override - public void delete(PrivilegedTableDto table) throws SQLException, QueryMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); - final String tableName = mariaDbMapper.nameToInternalName(table.getInternalName()); + public void delete(TableDto table) throws SQLException, QueryMalformedException { + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { /* create table if not exists */ final long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.dropTableRawQuery(tableName)) + connection.prepareStatement(mariaDbMapper.dropTableRawQuery(table.getInternalName())) .execute(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); connection.commit(); @@ -207,63 +138,63 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } finally { dataSource.close(); } - log.info("Deleted table with name {}", tableName); + log.info("Deleted table with name {}", table.getInternalName()); } @Override - public List<TableHistoryDto> history(PrivilegedTableDto table, Long size) throws SQLException, + public List<TableHistoryDto> history(TableDto table, Long size) throws SQLException, TableNotFoundException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); final List<TableHistoryDto> history; try { /* find table data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectHistoryRawQuery( - table.getDatabase().getInternalName(), table.getInternalName(), size)) + table.getDatabase(), table.getInternalName(), size)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); history = dataMapper.resultSetToTableHistory(resultSet); connection.commit(); } catch (SQLException e) { connection.rollback(); - log.error("Failed to find history for table {}.{}: {}", table.getDatabase().getInternalName(), table.getInternalName(), e.getMessage()); - throw new TableNotFoundException("Failed to find history for table " + table.getDatabase().getInternalName() + "." + table.getInternalName() + ": " + e.getMessage(), e); + log.error("Failed to find history for table {}.{}: {}", table.getDatabase(), table.getInternalName(), e.getMessage()); + throw new TableNotFoundException("Failed to find history for table " + table.getDatabase() + "." + table.getInternalName() + ": " + e.getMessage(), e); } finally { dataSource.close(); } - log.info("Find history for table {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Find history for table {}.{}", table.getDatabase(), table.getInternalName()); return history; } @Override - public Long getCount(PrivilegedTableDto table, Instant timestamp) throws SQLException, + public Long getCount(TableDto table, Instant timestamp) throws SQLException, QueryMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); final Long queryResult; try { /* find table data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery( - table.getDatabase().getInternalName(), table.getInternalName(), timestamp)) + table.getDatabase(), table.getInternalName(), timestamp)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); queryResult = mariaDbMapper.resultSetToNumber(resultSet); connection.commit(); } catch (SQLException e) { connection.rollback(); - log.error("Failed to find row count from table {}.{}: {}", table.getDatabase().getInternalName(), table.getInternalName(), e.getMessage()); - throw new QueryMalformedException("Failed to find row count from table " + table.getDatabase().getInternalName() + "." + table.getInternalName() + ": " + e.getMessage(), e); + log.error("Failed to find row count from table {}.{}: {}", table.getDatabase(), table.getInternalName(), e.getMessage()); + throw new QueryMalformedException("Failed to find row count from table " + table.getDatabase() + "." + table.getInternalName() + ": " + e.getMessage(), e); } finally { dataSource.close(); } - log.info("Find row count from table {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Find row count from table {}.{}", table.getDatabase(), table.getInternalName()); return queryResult; } @Override - public void importDataset(PrivilegedTableDto table, ImportDto data) throws MalformedException, + public void importDataset(TableDto table, ImportDto data) throws MalformedException, StorageNotFoundException, StorageUnavailableException, SQLException, QueryMalformedException, TableMalformedException { final List<String> columns = table.getColumns() @@ -273,8 +204,8 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table final Dataset<Row> dataset = storageService.loadDataset(columns, data.getLocation(), String.valueOf(data.getSeparator()), data.getHeader()); final Properties properties = new Properties(); - properties.setProperty("user", table.getDatabase().getContainer().getUsername()); - properties.setProperty("password", table.getDatabase().getContainer().getPassword()); + properties.setProperty("user", table.getUsername()); + properties.setProperty("password", table.getPassword()); final String temporaryTable = table.getInternalName() + "_tmp"; try { log.trace("import dataset to temporary table: {}", temporaryTable); @@ -282,8 +213,7 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table .mode(SaveMode.Overwrite) .option("header", data.getHeader()) .option("inferSchema", "true") - .jdbc(getSparkUrl(table.getDatabase().getContainer(), table.getDatabase().getInternalName()), - temporaryTable, properties); + .jdbc(getSparkUrl(table), temporaryTable, properties); } catch (Exception e) { if (e instanceof AnalysisException exception) { final String message = exception.getSimpleMessage() @@ -295,7 +225,7 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table throw new MalformedException("Failed to write dataset: " + e.getMessage()) /* remove throwable on purpose, clutters the output */; } /* import .csv from sidecar to database */ - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { /* import tuple */ @@ -314,15 +244,15 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table connection.commit(); dataSource.close(); } - log.info("Imported dataset into table: {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Imported dataset into table: {}.{}", table.getDatabase(), table.getInternalName()); } @Override - public void deleteTuple(PrivilegedTableDto table, TupleDeleteDto data) throws SQLException, + public void deleteTuple(TableDto table, TupleDeleteDto data) throws SQLException, TableMalformedException, QueryMalformedException { log.trace("delete tuple: {}", data); /* prepare the statement */ - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { /* import tuple */ @@ -344,11 +274,11 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } finally { dataSource.close(); } - log.info("Deleted tuple(s) from table: {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Deleted tuple(s) from table: {}.{}", table.getDatabase(), table.getInternalName()); } @Override - public void createTuple(PrivilegedTableDto table, TupleDto data) throws SQLException, QueryMalformedException, + public void createTuple(TableDto table, TupleDto data) throws SQLException, QueryMalformedException, TableMalformedException, StorageUnavailableException, StorageNotFoundException { log.trace("create tuple: {}", data); /* for each LOB-like data-column, retrieve the bytes and replace the value */ @@ -366,7 +296,7 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table .replace(key, blob); } /* prepare the statement */ - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { /* create tuple */ @@ -388,15 +318,15 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } finally { dataSource.close(); } - log.info("Created tuple(s) in table: {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Created tuple(s) in table: {}.{}", table.getDatabase(), table.getInternalName()); } @Override - public void updateTuple(PrivilegedTableDto table, TupleUpdateDto data) throws SQLException, + public void updateTuple(TableDto table, TupleUpdateDto data) throws SQLException, QueryMalformedException, TableMalformedException { log.trace("update tuple: {}", data); /* prepare the statement */ - final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); try { final int[] idx = new int[]{1}; @@ -424,7 +354,7 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } finally { dataSource.close(); } - log.info("Updated tuple(s) from table: {}.{}", table.getDatabase().getInternalName(), table.getInternalName()); + log.info("Updated tuple(s) from table: {}.{}", table.getDatabase(), table.getInternalName()); } public ColumnTypeDto getColumnType(List<ColumnDto> columns, String name) throws QueryMalformedException { @@ -439,7 +369,7 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table } @Override - public Dataset<Row> getData(PrivilegedDatabaseDto database, String tableOrView, Instant timestamp, + public Dataset<Row> getData(DatabaseDto database, String tableOrView, Instant timestamp, Long page, Long size, SortTypeDto sortDirection, String sortColumn) throws QueryMalformedException, TableNotFoundException { try { @@ -447,7 +377,8 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table properties.setProperty("user", database.getContainer().getUsername()); properties.setProperty("password", database.getContainer().getPassword()); return sparkSession.read() - .jdbc(getSparkUrl(database.getContainer(), database.getInternalName()), tableOrView, properties); + .jdbc(getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPassword(), + database.getInternalName()), tableOrView, properties); } catch (Exception e) { if (e instanceof ExtendedAnalysisException exception) { if (exception.getSimpleMessage().contains("TABLE_OR_VIEW_NOT_FOUND")) { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java index d85bdc53ac..3224c371a3 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java @@ -1,182 +1,39 @@ package at.tuwien.service.impl; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; -import at.tuwien.api.database.query.QueryDto; -import at.tuwien.config.QueryConfig; -import at.tuwien.exception.DatabaseMalformedException; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.ViewMalformedException; -import at.tuwien.exception.ViewNotFoundException; -import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; -import at.tuwien.mapper.MetadataMapper; -import at.tuwien.service.SchemaService; import at.tuwien.service.ViewService; -import com.google.common.hash.Hashing; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.nio.charset.StandardCharsets; import java.sql.Connection; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.Instant; -import java.util.LinkedList; -import java.util.List; @Log4j2 @Service -public class ViewServiceMariaDbImpl extends HibernateConnector implements ViewService { +public class ViewServiceMariaDbImpl extends DataConnector<ViewDto> implements ViewService { - private final DataMapper dataMapper; - private final QueryConfig queryConfig; - private final SchemaService schemaService; private final MariaDbMapper mariaDbMapper; - private final MetadataMapper metadataMapper; @Autowired - public ViewServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, SchemaService schemaService, - MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper) { - this.dataMapper = dataMapper; - this.queryConfig = queryConfig; - this.schemaService = schemaService; + public ViewServiceMariaDbImpl(MariaDbMapper mariaDbMapper) { this.mariaDbMapper = mariaDbMapper; - this.metadataMapper = metadataMapper; } @Override - public Boolean existsByName(PrivilegedDatabaseDto database, String name) throws SQLException, - QueryMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - final Boolean queryResult; - try { - /* find view data */ - final long start = System.currentTimeMillis(); - final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.selectExistsTableOrViewRawQuery()); - statement.setString(1, database.getInternalName()); - statement.setString(2, name); - final ResultSet resultSet = statement.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - queryResult = mariaDbMapper.resultSetToBoolean(resultSet); - } catch (SQLException e) { - log.error("Failed to prepare statement {}", e.getMessage()); - throw new QueryMalformedException("Failed to prepare statement: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - return queryResult; - } - - @Override - public List<ViewDto> getSchemas(PrivilegedDatabaseDto database) throws SQLException, DatabaseMalformedException, - ViewNotFoundException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - final List<ViewDto> views = new LinkedList<>(); - try { - /* inspect tables before views */ - final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.databaseViewsSelectRawQuery()); - statement.setString(1, database.getInternalName()); - final long start = System.currentTimeMillis(); - final ResultSet resultSet1 = statement.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - while (resultSet1.next()) { - final String viewName = resultSet1.getString(1); - if (viewName.length() == 64) { - log.trace("view {}.{} seems to be a subset view (name length = 64), skip.", database.getInternalName(), viewName); - continue; - } - if (database.getViews().stream().anyMatch(v -> v.getInternalName().equals(viewName))) { - log.trace("view {}.{} already known to metadata database, skip.", database.getInternalName(), viewName); - continue; - } - final ViewDto view; - view = schemaService.inspectView(database, viewName); - if (database.getTables().stream().noneMatch(t -> t.getInternalName().equals(view.getInternalName()))) { - views.add(view); - } - } - } catch (SQLException e) { - log.error("Failed to get view schemas: {}", e.getMessage()); - throw new DatabaseMalformedException("Failed to get view schemas: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - log.info("Found {} view schema(s)", views.size()); - return views; - } - - @Override - public ViewDto create(PrivilegedDatabaseDto database, QueryDto subset) throws ViewMalformedException, - SQLException { - final ViewCreateDto data = ViewCreateDto.builder() - .name(metadataMapper.queryDtoToViewName(subset)) - .query(subset.getQuery()) - .isPublic(false) - .build(); - return create(database, data); - } - - @Override - public ViewDto create(PrivilegedDatabaseDto database, ViewCreateDto data) throws SQLException, - ViewMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); - final Connection connection = dataSource.getConnection(); - ViewDto view = ViewDto.builder() - .name(data.getName()) - .internalName(mariaDbMapper.nameToInternalName(data.getName())) - .query(data.getQuery()) - .queryHash(Hashing.sha256() - .hashString(data.getQuery(), StandardCharsets.UTF_8) - .toString()) - .isPublic(database.getIsPublic()) - .owner(database.getOwner()) - .identifiers(new LinkedList<>()) - .isInitialView(false) - .vdbid(database.getId()) - .columns(new LinkedList<>()) - .build(); - try { - /* create view if not exists */ - final long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.viewCreateRawQuery(view.getInternalName(), data.getQuery())) - .execute(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - /* select view columns */ - final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); - statement2.setString(1, database.getInternalName()); - statement2.setString(2, view.getInternalName()); - final ResultSet resultSet2 = statement2.executeQuery(); - while (resultSet2.next()) { - view = dataMapper.resultSetToTable(resultSet2, view, queryConfig); - } - connection.commit(); - } catch (SQLException e) { - connection.rollback(); - log.error("Failed to create view: {}", e.getMessage()); - throw new ViewMalformedException("Failed to create view: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - log.info("Created view with name {}", view.getName()); - return view; - } - - @Override - public void delete(PrivilegedDatabaseDto database, String viewName) throws SQLException, ViewMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); + public void delete(ViewDto view) throws SQLException, ViewMalformedException { + final ComboPooledDataSource dataSource = getDataSource(view); final Connection connection = dataSource.getConnection(); try { /* drop view if exists */ final long start = System.currentTimeMillis(); - connection.prepareStatement(mariaDbMapper.dropViewRawQuery(viewName)) + connection.prepareStatement(mariaDbMapper.dropViewRawQuery(view.getInternalName())) .execute(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); connection.commit(); @@ -187,33 +44,32 @@ public class ViewServiceMariaDbImpl extends HibernateConnector implements ViewSe } finally { dataSource.close(); } - log.info("Deleted view {}.{}", database.getInternalName(), viewName); + log.info("Deleted view {}.{}", view.getDatabase(), view.getInternalName()); } - @Override - public Long count(PrivilegedViewDto view, Instant timestamp) throws SQLException, + public Long count(ViewDto view, Instant timestamp) throws SQLException, QueryMalformedException { - final ComboPooledDataSource dataSource = getPrivilegedDataSource(view.getDatabase()); + final ComboPooledDataSource dataSource = getDataSource(view); final Connection connection = dataSource.getConnection(); final Long queryResult; try { /* find view data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery( - view.getDatabase().getInternalName(), view.getInternalName(), timestamp)) + view.getDatabase(), view.getInternalName(), timestamp)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); queryResult = mariaDbMapper.resultSetToNumber(resultSet); connection.commit(); } catch (SQLException e) { connection.rollback(); - log.error("Failed to find row count from view {}.{}: {}", view.getDatabase().getInternalName(), view.getInternalName(), e.getMessage()); - throw new QueryMalformedException("Failed to find row count from view " + view.getDatabase().getInternalName() + "." + view.getInternalName() + ": " + e.getMessage(), e); + log.error("Failed to find row count from view {}.{}: {}", view.getDatabase(), view.getInternalName(), e.getMessage()); + throw new QueryMalformedException("Failed to find row count from view " + view.getDatabase() + "." + view.getInternalName() + ": " + e.getMessage(), e); } finally { dataSource.close(); } - log.info("Find row count from view {}.{}", view.getDatabase().getInternalName(), view.getInternalName()); + log.info("Find row count from view {}.{}", view.getDatabase(), view.getInternalName()); return queryResult; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java new file mode 100644 index 0000000000..66de637504 --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java @@ -0,0 +1,45 @@ +package at.tuwien.api; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.time.Instant; + +@Getter +@Setter +@EqualsAndHashCode +@ToString +public abstract class CacheableDto { + + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + + @ToString.Exclude + @JsonIgnore + private String jdbcMethod; + + @ToString.Exclude + @JsonIgnore + private String host; + + @ToString.Exclude + @JsonIgnore + private Integer port; + + @ToString.Exclude + @JsonIgnore + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @JsonIgnore + private String database; + +} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/PrivilegedObjectDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/PrivilegedObjectDto.java deleted file mode 100644 index c88fcabccf..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/PrivilegedObjectDto.java +++ /dev/null @@ -1,18 +0,0 @@ -package at.tuwien.api; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -import java.time.Instant; - -@Getter -@Setter -@ToString -public abstract class PrivilegedObjectDto { - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java index 9928c8e54d..da782c2bb7 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 @@ -1,7 +1,9 @@ package at.tuwien.api.container; +import at.tuwien.api.CacheableDto; import at.tuwien.api.container.image.ImageDto; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -18,7 +20,7 @@ import java.time.Instant; @AllArgsConstructor @Jacksonized @ToString -public class ContainerDto { +public class ContainerDto extends CacheableDto { @NotNull private Long id; @@ -55,4 +57,25 @@ public class ContainerDto { @Schema(example = "10") private Long count; + /* lombok limitations prevent from convenient builder functions */ + + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + + @ToString.Exclude + @JsonIgnore + private String jdbcMethod; + + @ToString.Exclude + @JsonIgnore + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @JsonIgnore + private String database; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/internal/PrivilegedContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/internal/PrivilegedContainerDto.java deleted file mode 100644 index 9c414e5ef1..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/internal/PrivilegedContainerDto.java +++ /dev/null @@ -1,60 +0,0 @@ -package at.tuwien.api.container.internal; - -import at.tuwien.api.PrivilegedObjectDto; -import at.tuwien.api.container.image.ImageDto; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -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.time.Instant; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class PrivilegedContainerDto extends PrivilegedObjectDto { - - @NotNull - private Long id; - - @NotBlank - @Schema(example = "Air Quality") - private String name; - - @NotBlank - @JsonProperty("internal_name") - @Schema(example = "data-db") - private String internalName; - - @NotBlank - private String host; - - @NotNull - private Integer port; - - @JsonProperty("ui_host") - private String uiHost; - - @JsonProperty("ui_port") - private Integer uiPort; - - @NotNull - private ImageDto image; - - @ToString.Exclude - private String username; - - @ToString.Exclude - private String password; - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} 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 46072e83dc..7b47a617ec 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 @@ -56,4 +56,7 @@ public class DatabaseBriefDto { @JsonProperty("owner_id") private UUID ownerId; + @JsonProperty("preview_image") + private String previewImage; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java index 5fc253c433..044e52df38 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 @@ -1,9 +1,11 @@ package at.tuwien.api.database; -import at.tuwien.api.container.ContainerBriefDto; -import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.identifier.IdentifierBriefDto; +import at.tuwien.api.CacheableDto; +import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; +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; @@ -11,17 +13,18 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.time.Instant; import java.util.List; @Getter @Setter @Builder -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Jacksonized @ToString -public class DatabaseDto { +public class DatabaseDto extends CacheableDto { @NotNull private Long id; @@ -47,9 +50,9 @@ public class DatabaseDto { @Schema(example = "Air Quality") private String description; - private List<TableBriefDto> tables; + private List<TableDto> tables; - private List<ViewBriefDto> views; + private List<ViewDto> views; @NotNull @JsonProperty("is_public") @@ -62,13 +65,13 @@ public class DatabaseDto { private Boolean isSchemaPublic; @NotNull - private ContainerBriefDto container; + private ContainerDto container; private List<DatabaseAccessDto> accesses; - private List<IdentifierBriefDto> identifiers; + private List<IdentifierDto> identifiers; - private List<IdentifierBriefDto> subsets; + private List<IdentifierDto> subsets; @NotNull private UserBriefDto contact; @@ -79,4 +82,33 @@ public class DatabaseDto { @JsonProperty("preview_image") private String previewImage; + /* lombok limitations prevent from convenient builder functions */ + + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + + @ToString.Exclude + @JsonIgnore + private String jdbcMethod; + + @ToString.Exclude + @JsonIgnore + private String host; + + @ToString.Exclude + @JsonIgnore + private Integer port; + + @ToString.Exclude + @JsonIgnore + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @JsonIgnore + private String database; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java index d1ee156e9b..13e64911f5 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 @@ -1,7 +1,9 @@ package at.tuwien.api.database; +import at.tuwien.api.CacheableDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; +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; @@ -9,17 +11,18 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.time.Instant; import java.util.List; @Getter @Setter @Builder -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Jacksonized @ToString -public class ViewDto { +public class ViewDto extends CacheableDto { @NotNull private Long id; @@ -66,4 +69,33 @@ public class ViewDto { @NotNull private List<ViewColumnDto> columns; + /* lombok limitations prevent from convenient builder functions */ + + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + + @ToString.Exclude + @JsonIgnore + private String jdbcMethod; + + @ToString.Exclude + @JsonIgnore + private String host; + + @ToString.Exclude + @JsonIgnore + private Integer port; + + @ToString.Exclude + @JsonIgnore + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @JsonIgnore + private String database; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedDatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedDatabaseDto.java deleted file mode 100644 index 2335ea39ba..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedDatabaseDto.java +++ /dev/null @@ -1,88 +0,0 @@ -package at.tuwien.api.database.internal; - -import at.tuwien.api.PrivilegedObjectDto; -import at.tuwien.api.container.internal.PrivilegedContainerDto; -import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserBriefDto; -import com.fasterxml.jackson.annotation.JsonProperty; -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.time.Instant; -import java.util.List; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class PrivilegedDatabaseDto extends PrivilegedObjectDto { - - @NotNull - private Long id; - - @NotBlank - @Schema(example = "Air Quality") - private String name; - - @NotBlank - @JsonProperty("exchange_name") - @Schema(example = "dbrepo") - private String exchangeName; - - @JsonProperty("exchange_type") - @Schema(example = "topic") - private String exchangeType; - - @NotBlank - @JsonProperty("internal_name") - @Schema(example = "air_quality") - private String internalName; - - @Schema(example = "Air Quality") - private String description; - - private List<TableDto> tables; - - private List<ViewDto> views; - - @NotNull - @JsonProperty("is_public") - @Schema(example = "true") - private Boolean isPublic; - - @NotNull - @JsonProperty("is_schema_public") - @Schema(example = "true") - private Boolean isSchemaPublic; - - @NotNull - private PrivilegedContainerDto container; - - private List<DatabaseAccessDto> accesses; - - private List<IdentifierDto> identifiers; - - private List<IdentifierDto> subsets; - - @NotNull - private UserBriefDto contact; - - @NotNull - private UserBriefDto owner; - - @JsonProperty("preview_image") - private String previewImage; - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedViewDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedViewDto.java deleted file mode 100644 index bda575f45d..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/PrivilegedViewDto.java +++ /dev/null @@ -1,77 +0,0 @@ -package at.tuwien.api.database.internal; - -import at.tuwien.api.PrivilegedObjectDto; -import at.tuwien.api.database.ViewColumnDto; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserBriefDto; -import com.fasterxml.jackson.annotation.JsonProperty; -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.time.Instant; -import java.util.List; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class PrivilegedViewDto extends PrivilegedObjectDto { - - @NotNull - private Long id; - - @NotNull - @JsonProperty("database_id") - private Long vdbid; - - @NotNull - private PrivilegedDatabaseDto database; - - @NotBlank - @Schema(example = "Air Quality") - private String name; - - private List<IdentifierDto> identifiers; - - @NotBlank - @Schema(example = "air_quality") - @JsonProperty("internal_name") - private String internalName; - - @JsonProperty("is_public") - @Schema(example = "true") - private Boolean isPublic; - - @JsonProperty("is_schema_public") - @Schema(example = "true") - private Boolean isSchemaPublic; - - @JsonProperty("initial_view") - @Schema(example = "true", description = "True if it is the default view for the database") - private Boolean isInitialView; - - @NotNull - @Schema(example = "SELECT `id` FROM `air_quality` ORDER BY `value` DESC") - private String query; - - @NotNull - @JsonProperty("query_hash") - @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") - private String queryHash; - - @NotNull - private UserBriefDto owner; - - @NotNull - private List<ViewColumnDto> columns; - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java index 67087d438d..cf18e321a4 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 @@ -1,9 +1,11 @@ package at.tuwien.api.database.table; +import at.tuwien.api.CacheableDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; +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; @@ -12,17 +14,18 @@ import jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.time.Instant; import java.util.List; @Getter @Setter @Builder -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Jacksonized @ToString -public class TableDto { +public class TableDto extends CacheableDto { @NotNull private Long id; @@ -103,4 +106,33 @@ public class TableDto { @NotNull private ConstraintsDto constraints; + /* lombok limitations prevent from convenient builder functions */ + + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + + @ToString.Exclude + @JsonIgnore + private String jdbcMethod; + + @ToString.Exclude + @JsonIgnore + private String host; + + @ToString.Exclude + @JsonIgnore + private Integer port; + + @ToString.Exclude + @JsonIgnore + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @JsonIgnore + private String database; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/PrivilegedTableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/PrivilegedTableDto.java deleted file mode 100644 index 64b23f17c4..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/PrivilegedTableDto.java +++ /dev/null @@ -1,115 +0,0 @@ -package at.tuwien.api.database.table.internal; - -import at.tuwien.api.PrivilegedObjectDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.table.columns.ColumnDto; -import at.tuwien.api.database.table.constraints.ConstraintsDto; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserBriefDto; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -import java.time.Instant; -import java.util.List; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -@EqualsAndHashCode -public class PrivilegedTableDto extends PrivilegedObjectDto { - - @NotNull - private Long id; - - @NotNull - @JsonProperty("database_id") - private Long tdbid; - - @NotBlank - @Schema(example = "Air Quality") - private String name; - - @NotBlank - @JsonProperty("internal_name") - @Schema(example = "air_quality") - private String internalName; - - @Schema - private String alias; - - private List<IdentifierDto> identifiers; - - @NotNull - @JsonProperty("is_versioned") - @Schema(example = "true") - private Boolean isVersioned; - - @NotNull - @JsonProperty("is_schema_public") - @Schema(example = "true") - private Boolean isSchemaPublic; - - @NotNull - private UserBriefDto owner; - - @NotBlank - @JsonProperty("queue_name") - @Schema(example = "air_quality") - private String queueName; - - @JsonProperty("queue_type") - @Schema(example = "quorum") - private String queueType; - - @NotBlank - @JsonProperty("routing_key") - @Schema(example = "dbrepo.1.2") - private String routingKey; - - @Size(max = 2048) - @Schema(example = "Air Quality in Austria") - private String description; - - @NotNull - @JsonProperty("is_public") - @Schema(example = "true") - private Boolean isPublic; - - @JsonProperty("num_rows") - @Schema(example = "5") - private Long numRows; - - @JsonProperty("data_length") - @Schema(example = "16384", description = "in bytes") - private Long dataLength; - - @JsonProperty("max_data_length") - @Schema(example = "0", description = "in bytes") - private Long maxDataLength; - - @JsonProperty("avg_row_length") - @Schema(example = "3276", description = "in bytes") - private Long avgRowLength; - - @NotNull - private List<ColumnDto> columns; - - @NotNull - private ConstraintsDto constraints; - - @NotNull - private PrivilegedDatabaseDto database; - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} 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 0a36c561a3..82ff3b0fe7 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 @@ -1,6 +1,5 @@ package at.tuwien.api.identifier; -import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -8,7 +7,6 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; -import java.time.Instant; import java.util.List; import java.util.UUID; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java index 343d582b55..43fb10201b 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -1,22 +1,25 @@ package at.tuwien.api.user; +import at.tuwien.api.CacheableDto; +import com.fasterxml.jackson.annotation.JsonIgnore; 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.time.Instant; import java.util.UUID; @Getter @Setter @Builder -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Jacksonized @ToString -public class UserDto { +public class UserDto extends CacheableDto { @NotNull @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4") @@ -41,7 +44,14 @@ public class UserDto { @Schema(example = "Carberry") private String lastname; + @ToString.Exclude + @JsonIgnore + private String password; + @NotNull private UserAttributesDto attributes; + @JsonProperty("last_retrieved") + private Instant lastRetrieved; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/internal/PrivilegedUserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/internal/PrivilegedUserDto.java deleted file mode 100644 index 56e24cd815..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/internal/PrivilegedUserDto.java +++ /dev/null @@ -1,58 +0,0 @@ -package at.tuwien.api.user.internal; - -import at.tuwien.api.PrivilegedObjectDto; -import at.tuwien.api.user.UserAttributesDto; -import com.fasterxml.jackson.annotation.JsonProperty; -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.time.Instant; -import java.util.UUID; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class PrivilegedUserDto extends PrivilegedObjectDto { - - @NotNull - @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4") - private UUID id; - - @NotBlank - @Schema(example = "jcarberry", description = "Only contains lowercase characters") - private String username; - - @NotBlank - @Schema(example = "jcarberry") - private String password; - - @Schema(example = "Josiah Carberry") - private String name; - - @JsonProperty("qualified_name") - @Schema(example = "Josiah Carberry — @jcarberry") - private String qualifiedName; - - @JsonProperty("given_name") - @Schema(example = "Josiah") - private String firstname; - - @JsonProperty("family_name") - @Schema(example = "Carberry") - private String lastname; - - @NotNull - private UserAttributesDto attributes; - - @JsonProperty("last_retrieved") - private Instant lastRetrieved; - -} 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 c5482f7041..ab13affe7e 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 @@ -10,7 +10,6 @@ import at.tuwien.api.container.image.ImageCreateDto; import at.tuwien.api.container.image.ImageDto; import at.tuwien.api.crossref.CrossrefDto; import at.tuwien.api.database.*; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; @@ -120,7 +119,10 @@ public interface MetadataMapper { }) ContainerBriefDto containerToContainerBriefDto(Container data); - PrivilegedDatabaseDto databaseToPrivilegedDatabaseDto(Database data); + @Mappings({ + @Mapping(target = "previewImage", expression = "java(database.getImage() != null ? \"/api/database/\" + database.getId() + \"/image\" : null)") + }) + DatabaseDto databaseToDatabaseDto(Database database); @Mappings({ @Mapping(target = "titles", source = "."), @@ -531,7 +533,7 @@ public interface MetadataMapper { .build(); } - default TableDto customTableToTableDto(Table data) { + default TableDto tableToTableDto(Table data) { final TableDto table = TableDto.builder() .id(data.getId()) .name(data.getName()) @@ -620,7 +622,8 @@ public interface MetadataMapper { Unique uniqueDtoToUnique(UniqueDto data); @Mappings({ - @Mapping(target = "ownedBy", source = "owner.id") + @Mapping(target = "ownedBy", source = "owner.id"), + @Mapping(target = "database", ignore = true) }) Table tableDtoToTable(TableDto data); @@ -822,6 +825,9 @@ public interface MetadataMapper { .trim(); } + @Mappings({ + @Mapping(target = "database", ignore = true) + }) ViewDto viewToViewDto(View data); @Mappings({ @@ -831,6 +837,9 @@ public interface MetadataMapper { ViewBriefDto viewToViewBriefDto(View data); + @Mappings({ + @Mapping(target = "database", ignore = true) + }) View viewDtoToView(ViewDto data); /* keep */ @@ -852,60 +861,7 @@ public interface MetadataMapper { LanguageType languageTypeDtoToLanguageType(LanguageTypeDto data); - default DatabaseDto customDatabaseToDatabaseDto(Database data) { - if (data == null) { - return null; - } - final DatabaseDto database = DatabaseDto.builder() - .id(data.getId()) - .name(data.getName()) - .internalName(data.getInternalName()) - .description(data.getDescription()) - .exchangeName(data.getExchangeName()) - .previewImage(data.getImage() != null ? "/api/database/" + data.getId() + "/image" : null) - .isPublic(data.getIsPublic()) - .isSchemaPublic(data.getIsSchemaPublic()) - .container(containerToContainerBriefDto(data.getContainer())) - .owner(userToUserBriefDto(data.getOwner())) - .contact(userToUserBriefDto(data.getContact())) - .subsets(new LinkedList<>()) - .accesses(new LinkedList<>()) - .tables(new LinkedList<>()) - .identifiers(new LinkedList<>()) - .build(); - if (data.getSubsets() != null) { - database.setSubsets(new LinkedList<>(data.getSubsets() - .stream() - .map(this::identifierToIdentifierBriefDto) - .toList())); - } - if (data.getTables() != null) { - database.setTables(new LinkedList<>(data.getTables() - .stream() - .map(this::tableToTableBriefDto) - .toList())); - } - if (data.getViews() != null) { - database.setViews(new LinkedList<>(data.getViews() - .stream() - .map(this::viewToViewBriefDto) - .toList())); - } - if (data.getAccesses() != null) { - database.setAccesses(new LinkedList<>(data.getAccesses() - .stream() - .filter(a -> !a.getUser().getIsInternal()) - .map(this::databaseAccessToDatabaseAccessDto) - .toList())); - } - if (data.getIdentifiers() != null) { - database.setIdentifiers(new LinkedList<>(data.getIdentifiers() - .stream() - .map(this::identifierToIdentifierBriefDto) - .toList())); - } - return database; - } + DatabaseBriefDto databaseDtoToDatabaseBriefDto(DatabaseDto data); @Mappings({ @Mapping(target = "ownerId", source = "owner.id") 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 ad72fb0756..7e03202480 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 @@ -5,8 +5,6 @@ import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.container.Container; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; -import at.tuwien.entities.database.View; -import at.tuwien.entities.database.table.Table; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.MetadataMapper; @@ -73,7 +71,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { @Header(name = "Access-Control-Expose-Headers", description = "Expose `X-Count` custom header", schema = @Schema(implementation = String.class), required = true)}, content = {@Content( mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = DatabaseDto.class)))}), + array = @ArraySchema(schema = @Schema(implementation = DatabaseBriefDto.class)))}), }) public ResponseEntity<List<DatabaseBriefDto>> list(@RequestParam(name = "internal_name", required = false) String internalName, Principal principal) { @@ -118,7 +116,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Created a new database", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "400", description = "Database create query is malformed or image is not supported", content = {@Content( @@ -155,8 +153,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> create(@Valid @RequestBody DatabaseCreateDto data, - @NotNull Principal principal) throws DataServiceException, + public ResponseEntity<DatabaseBriefDto> create(@Valid @RequestBody DatabaseCreateDto data, + @NotNull Principal principal) throws DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException, ContainerQuotaException { @@ -168,8 +166,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { } final User caller = userService.findById(getId(principal)); return ResponseEntity.status(HttpStatus.CREATED) - .body(databaseMapper.customDatabaseToDatabaseDto( - databaseService.create(container, data, caller, userService.findAllInternalUsers()))); + .body(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.create(container, data, caller, userService.findAllInternalUsers())))); } @PutMapping("/{databaseId}/metadata/table") @@ -184,7 +182,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Refreshed database tables metadata", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "400", description = "Failed to parse payload at search service", content = {@Content( @@ -211,8 +209,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull Principal principal) throws DataServiceException, + public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull Principal principal) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, UserNotFoundException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, MalformedException, TableNotFoundException { @@ -222,8 +220,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { log.error("Failed to refresh database tables metadata: not owner"); throw new NotAllowedException("Failed to refresh tables metadata: not owner"); } - return ResponseEntity.ok(databaseMapper.customDatabaseToDatabaseDto( - databaseService.updateTableMetadata(database))); + return ResponseEntity.ok(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.updateTableMetadata(database)))); } @PutMapping("/{databaseId}/metadata/view") @@ -238,7 +236,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Refreshed database views metadata", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "403", description = "Refresh view metadata is not permitted", content = {@Content( @@ -260,9 +258,9 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull Principal principal) throws DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, UserNotFoundException, + public ResponseEntity<DatabaseBriefDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull Principal principal) throws DataServiceException, + DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, ViewNotFoundException { log.debug("endpoint refresh database metadata, databaseId={}, principal.name={}", databaseId, principal.getName()); final Database database = databaseService.findById(databaseId); @@ -270,8 +268,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { log.error("Failed to refresh database views metadata: not owner"); throw new NotAllowedException("Failed to refresh database views metadata: not owner"); } - return ResponseEntity.ok(databaseMapper.customDatabaseToDatabaseDto( - databaseService.updateViewMetadata(database))); + return ResponseEntity.ok(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.updateViewMetadata(database)))); } @PutMapping("/{databaseId}/visibility") @@ -286,7 +284,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Visibility modified successfully", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "400", description = "The visibility payload is malformed", content = {@Content( @@ -313,9 +311,9 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> visibility(@NotNull @PathVariable("databaseId") Long databaseId, - @Valid @RequestBody DatabaseModifyVisibilityDto data, - @NotNull Principal principal) throws DatabaseNotFoundException, + public ResponseEntity<DatabaseBriefDto> visibility(@NotNull @PathVariable("databaseId") Long databaseId, + @Valid @RequestBody DatabaseModifyVisibilityDto data, + @NotNull Principal principal) throws DatabaseNotFoundException, NotAllowedException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { log.debug("endpoint modify database visibility, databaseId={}, data={}", databaseId, data); final Database database = databaseService.findById(databaseId); @@ -324,8 +322,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to modify database visibility: not owner"); } return ResponseEntity.accepted() - .body(databaseMapper.customDatabaseToDatabaseDto( - databaseService.modifyVisibility(database, data))); + .body(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.modifyVisibility(database, data)))); } @PutMapping("/{databaseId}/owner") @@ -340,7 +338,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Transfer of ownership was successful", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "400", description = "Owner payload is malformed", content = {@Content( @@ -367,9 +365,9 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> transfer(@NotNull @PathVariable("databaseId") Long databaseId, - @Valid @RequestBody DatabaseTransferDto data, - @NotNull Principal principal) throws NotAllowedException, + public ResponseEntity<DatabaseBriefDto> transfer(@NotNull @PathVariable("databaseId") Long databaseId, + @Valid @RequestBody DatabaseTransferDto data, + @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, SearchServiceException, SearchServiceConnectionException { log.debug("endpoint transfer database, databaseId={}, transferDto.id={}", databaseId, data.getId()); @@ -380,8 +378,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to transfer database: not owner"); } return ResponseEntity.accepted() - .body(databaseMapper.customDatabaseToDatabaseDto( - databaseService.modifyOwner(database, newOwner))); + .body(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.modifyOwner(database, newOwner)))); } @PutMapping("/{databaseId}/image") @@ -396,7 +394,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { description = "Modify of image was successful", content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "403", description = "Modify of image is not permitted", content = {@Content( @@ -423,9 +421,9 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseDto> modifyImage(@NotNull @PathVariable("databaseId") Long databaseId, - @Valid @RequestBody DatabaseModifyImageDto data, - @NotNull Principal principal) throws NotAllowedException, + public ResponseEntity<DatabaseBriefDto> modifyImage(@NotNull @PathVariable("databaseId") Long databaseId, + @Valid @RequestBody DatabaseModifyImageDto data, + @NotNull Principal principal) throws NotAllowedException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, StorageUnavailableException, StorageNotFoundException { log.debug("endpoint modify database image, databaseId={}, data.key={}", databaseId, data.getKey()); @@ -439,8 +437,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { image = storageService.getBytes(data.getKey()); } return ResponseEntity.accepted() - .body(databaseMapper.customDatabaseToDatabaseDto( - databaseService.modifyImage(database, image))); + .body(databaseMapper.databaseDtoToDatabaseBriefDto(databaseMapper.databaseToDatabaseDto( + databaseService.modifyImage(database, image)))); } @GetMapping("/{databaseId}/image") @@ -480,7 +478,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { @Header(name = "Access-Control-Expose-Headers", description = "Expose custom headers", schema = @Schema(implementation = String.class))}, content = {@Content( mediaType = "application/json", - schema = @Schema(implementation = DatabaseDto.class))}), + schema = @Schema(implementation = DatabaseBriefDto.class))}), @ApiResponse(responseCode = "403", description = "Not allowed to view database", content = {@Content( @@ -546,7 +544,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { .toList()); database.setAccesses(List.of()); } - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(database); + final DatabaseDto dto = databaseMapper.databaseToDatabaseDto(database); final HttpHeaders headers = new HttpHeaders(); if (isSystem(principal)) { headers.set("X-Username", database.getContainer().getPrivilegedUsername()); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 9f4542fc02..39d7f61460 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 @@ -370,7 +370,7 @@ public class TableEndpoint extends AbstractEndpoint { endpointValidator.validateOnlyAccess(database, principal, true); endpointValidator.validateColumnCreateConstraints(data); return ResponseEntity.status(HttpStatus.CREATED) - .body(metadataMapper.customTableToTableDto( + .body(metadataMapper.tableToTableDto( tableService.createTable(database, data, principal))); } @@ -428,7 +428,7 @@ public class TableEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to update table: not owner"); } return ResponseEntity.accepted() - .body(metadataMapper.customTableToTableDto( + .body(metadataMapper.tableToTableDto( tableService.updateTable(table, data))); } @@ -513,7 +513,7 @@ public class TableEndpoint extends AbstractEndpoint { } return ResponseEntity.ok() .headers(headers) - .body(metadataMapper.customTableToTableDto(table)); + .body(metadataMapper.tableToTableDto(table)); } @DeleteMapping("/{tableId}") 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 11d64faf8b..371e710fae 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 @@ -198,7 +198,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1); /* test */ - final ResponseEntity<DatabaseDto> response = databaseEndpoint.refreshTableMetadata(DATABASE_1_ID, USER_1_PRINCIPAL); + final ResponseEntity<DatabaseBriefDto> response = databaseEndpoint.refreshTableMetadata(DATABASE_1_ID, USER_1_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -218,7 +218,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1); /* test */ - final ResponseEntity<DatabaseDto> response = databaseEndpoint.refreshViewMetadata(DATABASE_1_ID, USER_1_PRINCIPAL); + final ResponseEntity<DatabaseBriefDto> response = databaseEndpoint.refreshViewMetadata(DATABASE_1_ID, USER_1_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -682,7 +682,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1); /* test */ - final ResponseEntity<DatabaseDto> response = databaseEndpoint.create(data, principal); + final ResponseEntity<DatabaseBriefDto> response = databaseEndpoint.create(data, principal); assertEquals(HttpStatus.CREATED, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -704,7 +704,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { } /* test */ - final ResponseEntity<DatabaseDto> response = databaseEndpoint.visibility(databaseId, data, principal); + final ResponseEntity<DatabaseBriefDto> response = databaseEndpoint.visibility(databaseId, data, principal); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertNotNull(response.getBody()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java index daeb1c1a96..c423d6b1ae 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java @@ -2,7 +2,7 @@ package at.tuwien.gateway; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableDto; @@ -252,9 +252,9 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { DatabaseNotFoundException { /* mock */ - when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class))) + when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.CREATED) - .body(DATABASE_1_DTO)); + .body(DATABASE_1_BRIEF_DTO)); /* test */ dataServiceGateway.createDatabase(DATABASE_1_CREATE_INTERNAL); @@ -266,7 +266,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpServerErrorException.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DataServiceConnectionException.class, () -> { @@ -280,7 +280,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.Unauthorized.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DataServiceException.class, () -> { @@ -294,7 +294,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.BadRequest.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DataServiceException.class, () -> { @@ -306,7 +306,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { public void createDatabase_responseCode_fails() { /* mock */ - when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class))) + when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) .build()); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/SearchServiceGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/SearchServiceGatewayUnitTest.java index b1ce21d4e5..b39dd06bac 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/SearchServiceGatewayUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/SearchServiceGatewayUnitTest.java @@ -1,7 +1,7 @@ package at.tuwien.gateway; import at.tuwien.test.AbstractUnitTest; -import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.exception.*; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; @@ -37,11 +37,11 @@ public class SearchServiceGatewayUnitTest extends AbstractUnitTest { @Test public void update_succeeds() throws DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { - final ResponseEntity<DatabaseDto> mock = ResponseEntity.accepted() + final ResponseEntity<DatabaseBriefDto> mock = ResponseEntity.accepted() .build(); /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(mock); /* test */ @@ -50,11 +50,11 @@ public class SearchServiceGatewayUnitTest extends AbstractUnitTest { @Test public void update_badRequest_fails() { - final ResponseEntity<DatabaseDto> mock = ResponseEntity.status(HttpStatus.BAD_REQUEST) + final ResponseEntity<DatabaseBriefDto> mock = ResponseEntity.status(HttpStatus.BAD_REQUEST) .build(); /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(mock); /* test */ @@ -65,11 +65,11 @@ public class SearchServiceGatewayUnitTest extends AbstractUnitTest { @Test public void update_unexpectedResponse_fails() { - final ResponseEntity<DatabaseDto> mock = ResponseEntity.status(HttpStatus.OK) + final ResponseEntity<DatabaseBriefDto> mock = ResponseEntity.status(HttpStatus.OK) .build(); /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(mock); /* test */ @@ -84,7 +84,7 @@ public class SearchServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpServerErrorException.ServiceUnavailable.class) .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceConnectionException.class, () -> { @@ -98,7 +98,7 @@ public class SearchServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.NotFound.class) .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { 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 9b778e67fb..6505506eea 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,13 +1,7 @@ package at.tuwien.mapper; -import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewBriefDto; -import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.api.user.UserBriefDto; -import at.tuwien.api.user.UserDto; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierType; import at.tuwien.test.AbstractUnitTest; diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java index c647cdbd74..1c96e6283d 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java @@ -3,7 +3,7 @@ package at.tuwien.service; import at.tuwien.exception.*; import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.entities.database.AccessType; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; @@ -80,7 +80,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(Void.class))) .thenReturn(ResponseEntity.status(HttpStatus.CREATED) .build()); - when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(ResponseEntity.accepted() .build()); @@ -155,7 +155,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.BadRequest.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -174,7 +174,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.Unauthorized.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -193,7 +193,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.NotFound.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { @@ -212,7 +212,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpServerErrorException.InternalServerError.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceConnectionException.class, () -> { @@ -230,7 +230,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class))) .thenReturn(ResponseEntity.accepted() .build()); - when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(ResponseEntity.accepted() .build()); @@ -305,7 +305,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.BadRequest.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -324,7 +324,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.Unauthorized.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -343,7 +343,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.NotFound.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { @@ -362,7 +362,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpServerErrorException.InternalServerError.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceConnectionException.class, () -> { @@ -382,7 +382,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class))) .thenReturn(ResponseEntity.accepted() .build()); - when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class))) + when(searchServiceRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class))) .thenReturn(ResponseEntity.accepted() .build()); @@ -445,7 +445,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.BadRequest.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -466,7 +466,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.Unauthorized.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceException.class, () -> { @@ -487,7 +487,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpClientErrorException.NotFound.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(DatabaseNotFoundException.class, () -> { @@ -508,7 +508,7 @@ public class AccessServiceUnitTest extends AbstractUnitTest { .build()); doThrow(HttpServerErrorException.InternalServerError.class) .when(searchServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseDto.class)); + .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(DatabaseBriefDto.class)); /* test */ assertThrows(SearchServiceConnectionException.class, () -> { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java index 182fe8e14a..b77bc30d38 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 @@ -1,20 +1,20 @@ package at.tuwien.service; +import at.tuwien.api.datacite.DataCiteBody; +import at.tuwien.api.datacite.doi.DataCiteDoi; import at.tuwien.api.identifier.BibliographyTypeDto; +import at.tuwien.entities.database.Database; import at.tuwien.entities.identifier.Creator; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.identifier.IdentifierStatusType; import at.tuwien.entities.identifier.NameIdentifierSchemeType; +import at.tuwien.exception.*; +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 at.tuwien.api.datacite.DataCiteBody; -import at.tuwien.api.datacite.doi.DataCiteDoi; -import at.tuwien.entities.database.Database; -import at.tuwien.exception.*; -import at.tuwien.gateway.SearchServiceGateway; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -141,7 +141,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference))) .thenReturn(mock); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ dataCiteIdentifierService.save(DATABASE_1, USER_1, IDENTIFIER_1_SAVE_DTO); @@ -156,7 +156,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { .when(restTemplate) .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference)); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ assertThrows(MalformedException.class, () -> { @@ -173,7 +173,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { .when(restTemplate) .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference)); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ assertThrows(DataServiceConnectionException.class, () -> { @@ -332,7 +332,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { /* mock */ when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ dataCiteIdentifierService.delete(IDENTIFIER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java index 1b6570abd8..18d037fe45 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 @@ -110,7 +110,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.modifyImage(DATABASE_1, image); @@ -164,7 +164,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -222,7 +222,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -240,7 +240,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateViewMetadata(DATABASE_1); @@ -258,7 +258,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -276,7 +276,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -294,7 +294,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Database response = databaseService.updateTableMetadata(DATABASE_1); @@ -517,7 +517,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* mock */ when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java index 0c87dcdd69..40fc28fe4d 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 @@ -176,7 +176,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID)) .thenReturn(QUERY_2_DTO); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_2_DTO); + .thenReturn(DATABASE_2_BRIEF_DTO); /* test */ identifierService.save(DATABASE_2, USER_2, IDENTIFIER_5_SAVE_DTO); @@ -286,7 +286,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* mock */ when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ identifierService.delete(IDENTIFIER_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java index 3126f9e9f4..5250f7e106 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 @@ -112,7 +112,7 @@ public class TableServicePersistenceTest extends AbstractUnitTest { .when(dataServiceGateway) .createTable(DATABASE_1_ID, request); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index d975e808e3..5fb8e9ad7e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -135,7 +135,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ tableService.updateStatistics(TABLE_8); @@ -224,7 +224,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request); @@ -256,7 +256,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request); @@ -279,7 +279,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL); @@ -316,7 +316,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL); @@ -369,7 +369,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ assertThrows(MalformedException.class, () -> { @@ -392,7 +392,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .when(dataServiceGateway) .createTable(DATABASE_1_ID, TABLE_3_CREATE_DTO); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL); @@ -413,7 +413,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .when(dataServiceGateway) .createTable(DATABASE_1_ID, TABLE_5_CREATE_DTO); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ assertThrows(DataServiceException.class, () -> { @@ -511,7 +511,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .when(dataServiceGateway) .deleteTable(DATABASE_1_ID, TABLE_1_ID); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ tableService.deleteTable(TABLE_1); @@ -527,7 +527,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .when(dataServiceGateway) .deleteTable(DATABASE_1_ID, TABLE_4_ID); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ tableService.deleteTable(TABLE_4); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java index 8ca002472a..57a84965dc 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java @@ -89,7 +89,7 @@ public class ViewServicePersistenceTest extends AbstractUnitTest { .when(dataServiceGateway) .deleteView(DATABASE_1_ID, VIEW_1_ID); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ viewService.delete(VIEW_1); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java index cd9fe03c65..c63d207e6e 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 @@ -62,7 +62,7 @@ public class ViewServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ final View response = viewService.create(DATABASE_1, USER_1, request); @@ -117,7 +117,7 @@ public class ViewServiceUnitTest extends AbstractUnitTest { when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_BRIEF_DTO); /* test */ viewService.delete(VIEW_1); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java index f5e2f49c02..6632a08194 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java @@ -1,12 +1,12 @@ package at.tuwien.gateway; -import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.entities.database.Database; import at.tuwien.exception.*; public interface SearchServiceGateway { - DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; + DatabaseBriefDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java index 0f14b8d348..503cad47ec 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 @@ -1,6 +1,6 @@ package at.tuwien.gateway.impl; -import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.DatabaseBriefDto; import at.tuwien.config.GatewayConfig; import at.tuwien.entities.database.Database; import at.tuwien.exception.DatabaseNotFoundException; @@ -35,8 +35,8 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway { } @Override - public DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { - final ResponseEntity<DatabaseDto> response; + public DatabaseBriefDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException { + final ResponseEntity<DatabaseBriefDto> response; final HttpHeaders headers = new HttpHeaders(); headers.set("Accept", "application/json"); headers.set("Content-Type", "application/json"); @@ -44,7 +44,7 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway { log.trace("update database at endpoint {} with path {}", gatewayConfig.getSearchEndpoint(), path); try { response = restTemplate.exchange(path, HttpMethod.PUT, new HttpEntity<>( - metadataMapper.databaseToPrivilegedDatabaseDto(database), headers), DatabaseDto.class); + metadataMapper.databaseToDatabaseDto(database), headers), DatabaseBriefDto.class); } catch (ResourceAccessException | HttpServerErrorException.ServiceUnavailable | HttpServerErrorException.InternalServerError e) { log.error("Failed to update database: {}", e.getMessage()); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java index 91936adaf8..232b4cd280 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java @@ -12,7 +12,7 @@ public abstract class AbstractUnitTest extends BaseTest { public void genesis() { IMAGE_1_DTO.setOperators(IMAGE_1_OPERATORS_DTO); - CONTAINER_1_PRIVILEGED_DTO.setImage(IMAGE_1_DTO); + CONTAINER_1_DTO.setImage(IMAGE_1_DTO); IMAGE_1.setOperators(new LinkedList<>(IMAGE_1_OPERATORS)); CONTAINER_1.setDatabases(new LinkedList<>(List.of(DATABASE_1, DATABASE_2, DATABASE_3))); CONTAINER_4.setDatabases(new LinkedList<>(List.of(DATABASE_4))); @@ -36,13 +36,12 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_1.setIsSchemaPublic(DATABASE_1_SCHEMA_PUBLIC); DATABASE_1_USER_1_READ_ACCESS.setType(AccessType.READ); DATABASE_1.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS, DATABASE_1_USER_2_WRITE_OWN_ACCESS, DATABASE_1_USER_3_WRITE_ALL_ACCESS))); - DATABASE_1_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS_DTO, DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO, DATABASE_1_USER_3_WRITE_ALL_ACCESS_DTO))); + DATABASE_1_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS_DTO, DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO, DATABASE_1_USER_3_WRITE_ALL_ACCESS_DTO))); TABLE_1.setDatabase(DATABASE_1); UNIT_1.setId(UNIT_1_ID); TABLE_1.setColumns(new LinkedList<>(TABLE_1_COLUMNS)); TABLE_1.setConstraints(TABLE_1_CONSTRAINTS); - TABLE_1_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); - TABLE_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); VIEW_1_DTO.setIdentifiers(VIEW_1_DTO_IDENTIFIERS); DATABASE_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4))); IDENTIFIER_1.setDatabase(DATABASE_1); @@ -51,18 +50,17 @@ public abstract class AbstractUnitTest extends BaseTest { IDENTIFIER_4.setDatabase(DATABASE_1); DATABASE_1.setTables(new LinkedList<>(List.of(TABLE_1, TABLE_2, TABLE_3, TABLE_4))); DATABASE_1.setViews(new LinkedList<>(List.of(VIEW_1, VIEW_2, VIEW_3))); - DATABASE_1_PRIVILEGED_DTO.setContainer(CONTAINER_1_PRIVILEGED_DTO); - DATABASE_1_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))); - DATABASE_1_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))); - DATABASE_1_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))); + DATABASE_1_DTO.setContainer(CONTAINER_1_DTO); + DATABASE_1_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))); + DATABASE_1_DTO.setTables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))); + DATABASE_1_DTO.setViews(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))); TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); TABLE_1_DTO.setConstraints(TABLE_1_CONSTRAINTS_DTO); TABLE_2.setDatabase(DATABASE_1); TABLE_2.setColumns(new LinkedList<>(TABLE_2_COLUMNS)); TABLE_2_CONSTRAINTS.getForeignKeys().get(0).getReferences().get(0).setForeignKey(TABLE_2_CONSTRAINTS.getForeignKeys().get(0)); TABLE_2.setConstraints(TABLE_2_CONSTRAINTS); - TABLE_2_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); - TABLE_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_2_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); TABLE_2_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); TABLE_2_DTO.setConstraints(TABLE_2_CONSTRAINTS_DTO); TABLE_3.setDatabase(DATABASE_1); @@ -78,13 +76,10 @@ public abstract class AbstractUnitTest extends BaseTest { VIEW_1.setDatabase(DATABASE_1); VIEW_1.setColumns(new LinkedList<>(VIEW_1_COLUMNS)); VIEW_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_3))); - VIEW_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_2.setDatabase(DATABASE_1); VIEW_2.setColumns(new LinkedList<>(VIEW_2_COLUMNS)); - VIEW_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_3.setDatabase(DATABASE_1); VIEW_3.setColumns(new LinkedList<>(VIEW_3_COLUMNS)); - VIEW_3_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); IDENTIFIER_1.setDatabase(DATABASE_1); IDENTIFIER_2.setDatabase(DATABASE_1); IDENTIFIER_3.setDatabase(DATABASE_1); @@ -92,20 +87,19 @@ public abstract class AbstractUnitTest extends BaseTest { /* DATABASE 2 */ DATABASE_2.setSubsets(new LinkedList<>()); DATABASE_2.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS, DATABASE_2_USER_3_READ_ACCESS))); - DATABASE_2_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO))); + DATABASE_2_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO))); DATABASE_2.setTables(new LinkedList<>(List.of(TABLE_5, TABLE_6, TABLE_7))); VIEW_4.setColumns(new LinkedList<>(VIEW_4_COLUMNS)); DATABASE_2.setViews(new LinkedList<>(List.of(VIEW_4))); DATABASE_2.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5))); - DATABASE_2_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))); - DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_DTO))); - DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO))); + DATABASE_2_DTO.setTables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))); + DATABASE_2_DTO.setViews(new LinkedList<>(List.of(VIEW_4_DTO))); + DATABASE_2_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO))); TABLE_5.setDatabase(DATABASE_2); TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS)); TABLE_5.setConstraints(TABLE_5_CONSTRAINTS); - TABLE_5_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_5_COLUMNS_DTO)); - TABLE_5_PRIVILEGED_DTO.setConstraints(TABLE_5_CONSTRAINTS_DTO); - TABLE_5_PRIVILEGED_DTO.setDatabase(DATABASE_2_PRIVILEGED_DTO); + TABLE_5_DTO.setColumns(new LinkedList<>(TABLE_5_COLUMNS_DTO)); + TABLE_5_DTO.setConstraints(TABLE_5_CONSTRAINTS_DTO); TABLE_5_DTO.setColumns(TABLE_5_COLUMNS_DTO); TABLE_5_DTO.setConstraints(TABLE_5_CONSTRAINTS_DTO); TABLE_6.setDatabase(DATABASE_2); @@ -128,27 +122,31 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_3.setTables(new LinkedList<>(List.of(TABLE_8))); DATABASE_3.setViews(new LinkedList<>(List.of(VIEW_5))); DATABASE_3.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_6))); + DATABASE_3_DTO.setTables(new LinkedList<>(List.of(TABLE_8_DTO))); + DATABASE_3_DTO.setViews(new LinkedList<>(List.of(VIEW_5_DTO))); + DATABASE_3_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_6_DTO))); TABLE_8.setDatabase(DATABASE_3); TABLE_8.setColumns(new LinkedList<>(TABLE_8_COLUMNS)); TABLE_8.setConstraints(TABLE_8_CONSTRAINTS); TABLE_8_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); TABLE_8_DTO.setConstraints(TABLE_8_CONSTRAINTS_DTO); - TABLE_8_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); - TABLE_8_PRIVILEGED_DTO.setConstraints(TABLE_8_CONSTRAINTS_DTO); - TABLE_8_PRIVILEGED_DTO.setDatabase(DATABASE_3_PRIVILEGED_DTO); + TABLE_8_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); + TABLE_8_DTO.setConstraints(TABLE_8_CONSTRAINTS_DTO); VIEW_5.setDatabase(DATABASE_3); VIEW_5.setColumns(VIEW_5_COLUMNS); VIEW_5_DTO.setColumns(VIEW_5_COLUMNS_DTO); IDENTIFIER_6.setDatabase(DATABASE_3); /* DATABASE 4 */ + DATABASE_4.setSubsets(new LinkedList<>()); + DATABASE_4.setAccesses(new LinkedList<>(List.of(DATABASE_4_USER_1_READ_ACCESS, DATABASE_4_USER_2_WRITE_OWN_ACCESS, DATABASE_4_USER_3_WRITE_ALL_ACCESS))); + DATABASE_4.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_7))); + DATABASE_4_DTO.setTables(new LinkedList<>(List.of(TABLE_9_DTO))); + DATABASE_4_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_7_DTO))); TABLE_9.setDatabase(DATABASE_4); TABLE_9.setColumns(TABLE_9_COLUMNS); TABLE_9.setConstraints(TABLE_9_CONSTRAINTS); TABLE_9_DTO.setColumns(TABLE_9_COLUMNS_DTO); TABLE_9_DTO.setConstraints(TABLE_9_CONSTRAINTS_DTO); - DATABASE_4.setSubsets(new LinkedList<>()); - DATABASE_4.setAccesses(new LinkedList<>(List.of(DATABASE_4_USER_1_READ_ACCESS, DATABASE_4_USER_2_WRITE_OWN_ACCESS, DATABASE_4_USER_3_WRITE_ALL_ACCESS))); - DATABASE_4.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_7))); IDENTIFIER_7.setStatus(IdentifierStatusType.DRAFT); IDENTIFIER_7.setDatabase(DATABASE_4); } 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 368b1d182c..12dbd35efc 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 @@ -11,11 +11,8 @@ import at.tuwien.api.auth.SignupRequestDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.*; -import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.*; import at.tuwien.api.database.internal.CreateDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedDatabaseDto; -import at.tuwien.api.database.internal.PrivilegedViewDto; import at.tuwien.api.database.query.QueryBriefDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableBriefDto; @@ -29,7 +26,6 @@ import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.*; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.api.datacite.DataCiteBody; import at.tuwien.api.datacite.DataCiteData; import at.tuwien.api.datacite.doi.DataCiteDoi; @@ -53,7 +49,6 @@ import at.tuwien.api.semantics.*; import at.tuwien.api.user.UserAttributesDto; import at.tuwien.api.user.UserDto; import at.tuwien.api.user.*; -import at.tuwien.api.user.internal.PrivilegedUserDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.entities.container.Container; import at.tuwien.entities.container.image.ContainerImage; @@ -553,7 +548,7 @@ public abstract class BaseTest { .build()) .build(); - public final static PrivilegedUserDto USER_1_PRIVILEGED_DTO = PrivilegedUserDto.builder() + public final static UserDto USER_1_PRIVILEGED_DTO = UserDto.builder() .id(USER_1_ID) .username(USER_1_USERNAME) .password(USER_1_PASSWORD) @@ -741,7 +736,7 @@ public abstract class BaseTest { .tags(new String[]{}) .build(); - public final static PrivilegedUserDto USER_2_PRIVILEGED_DTO = PrivilegedUserDto.builder() + public final static UserDto USER_2_PRIVILEGED_DTO = UserDto.builder() .id(USER_2_ID) .username(USER_2_USERNAME) .password(USER_2_PASSWORD) @@ -843,7 +838,7 @@ public abstract class BaseTest { .tags(new String[]{}) .build(); - public final static PrivilegedUserDto USER_3_PRIVILEGED_DTO = PrivilegedUserDto.builder() + public final static UserDto USER_3_PRIVILEGED_DTO = UserDto.builder() .id(USER_3_ID) .username(USER_3_USERNAME) .password(USER_3_PASSWORD) @@ -925,7 +920,7 @@ public abstract class BaseTest { public final static Principal USER_4_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_4_DETAILS, USER_4_PASSWORD, USER_4_DETAILS.getAuthorities()); - public final static PrivilegedUserDto USER_4_PRIVILEGED_DTO = PrivilegedUserDto.builder() + public final static UserDto USER_4_PRIVILEGED_DTO = UserDto.builder() .id(USER_4_ID) .username(USER_4_USERNAME) .password(USER_4_PASSWORD) @@ -973,7 +968,7 @@ public abstract class BaseTest { .attributes(USER_5_ATTRIBUTES_DTO) .build(); - public final static PrivilegedUserDto USER_5_PRIVILEGED_DTO = PrivilegedUserDto.builder() + public final static UserDto USER_5_PRIVILEGED_DTO = UserDto.builder() .id(USER_5_ID) .username(USER_5_USERNAME) .firstname(USER_5_FIRSTNAME) @@ -1187,7 +1182,7 @@ public abstract class BaseTest { .image(IMAGE_1_BRIEF_DTO) .build(); - public final static PrivilegedContainerDto CONTAINER_1_PRIVILEGED_DTO = PrivilegedContainerDto.builder() + public final static ContainerDto CONTAINER_1_PRIVILEGED_DTO = ContainerDto.builder() .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) @@ -1243,7 +1238,7 @@ public abstract class BaseTest { .quota(CONTAINER_2_QUOTA) .build(); - public final static PrivilegedContainerDto CONTAINER_2_PRIVILEGED_DTO = PrivilegedContainerDto.builder() + public final static ContainerDto CONTAINER_2_PRIVILEGED_DTO = ContainerDto.builder() .id(CONTAINER_2_ID) .name(CONTAINER_2_NAME) .internalName(CONTAINER_2_INTERNALNAME) @@ -1385,11 +1380,21 @@ public abstract class BaseTest { .id(DATABASE_3_ID) .isPublic(DATABASE_3_PUBLIC) .name(DATABASE_3_NAME) - .container(CONTAINER_1_BRIEF_DTO) .internalName(DATABASE_3_INTERNALNAME) + .owner(USER_3_BRIEF_DTO) + .container(CONTAINER_1_DTO) .exchangeName(DATABASE_3_EXCHANGE) - .tables(new LinkedList<>()) /* TABLE_3, TABLE_3, TABLE_3 */ - .views(new LinkedList<>()) + .tables(new LinkedList<>()) /* TABLE_8_DTO */ + .views(new LinkedList<>()) /* VIEW_5_DTO */ + .identifiers(new LinkedList<>()) /* IDENTIFIER_6_DTO */ + .build(); + + public final static DatabaseBriefDto DATABASE_3_BRIEF_DTO = DatabaseBriefDto.builder() + .id(DATABASE_3_ID) + .isPublic(DATABASE_3_PUBLIC) + .name(DATABASE_3_NAME) + .internalName(DATABASE_3_INTERNALNAME) + .ownerId(USER_3_ID) .identifiers(new LinkedList<>()) .build(); @@ -1411,6 +1416,17 @@ public abstract class BaseTest { public final static UUID DATABASE_4_OWNER = USER_4_ID; public final static UUID DATABASE_4_CREATOR = USER_4_ID; + public final static DatabaseBriefDto DATABASE_4_BRIEF_DTO = DatabaseBriefDto.builder() + .id(DATABASE_4_ID) + .isPublic(DATABASE_4_PUBLIC) + .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) + .name(DATABASE_4_NAME) + .description(DATABASE_4_DESCRIPTION) + .internalName(DATABASE_4_INTERNALNAME) + .ownerId(USER_4_ID) + .identifiers(new LinkedList<>()) + .build(); + public final static DatabaseDto DATABASE_4_DTO = DatabaseDto.builder() .id(DATABASE_4_ID) .isPublic(DATABASE_4_PUBLIC) @@ -1420,9 +1436,9 @@ public abstract class BaseTest { .internalName(DATABASE_4_INTERNALNAME) .exchangeName(DATABASE_4_EXCHANGE) .owner(USER_4_BRIEF_DTO) - .tables(new LinkedList<>()) + .tables(new LinkedList<>()) /* TABLE_9_DTO */ .views(new LinkedList<>()) - .identifiers(new LinkedList<>()) + .identifiers(new LinkedList<>()) /* IDENTIFIER_7_DTO */ .build(); public final static TableCreateDto TABLE_0_CREATE_DTO = TableCreateDto.builder() @@ -1612,10 +1628,9 @@ public abstract class BaseTest { public final static Instant TABLE_1_CREATED = Instant.ofEpochSecond(1677399975L) /* 2023-02-26 08:26:15 (UTC) */; public final static Instant TABLE_1_LAST_MODIFIED = Instant.ofEpochSecond(1677399975L) /* 2023-02-26 08:26:15 (UTC) */; - public final static PrivilegedTableDto TABLE_1_PRIVILEGED_DTO = PrivilegedTableDto.builder() + public final static TableDto TABLE_1_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_1_ID) .tdbid(DATABASE_1_ID) - .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .internalName(TABLE_1_INTERNAL_NAME) .isVersioned(TABLE_1_VERSIONED) .isPublic(TABLE_1_SCHEMA_PUBLIC) @@ -1826,10 +1841,9 @@ public abstract class BaseTest { .maxDataLength(TABLE_2_MAX_DATA_LENGTH) .build(); - public final static PrivilegedTableDto TABLE_2_PRIVILEGED_DTO = PrivilegedTableDto.builder() + public final static TableDto TABLE_2_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_2_ID) .tdbid(DATABASE_1_ID) - .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) .isPublic(TABLE_2_IS_PUBLIC) @@ -2036,10 +2050,9 @@ public abstract class BaseTest { .owner(USER_1_BRIEF_DTO) .build(); - public final static PrivilegedTableDto TABLE_5_PRIVILEGED_DTO = PrivilegedTableDto.builder() + public final static TableDto TABLE_5_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_5_ID) .tdbid(DATABASE_2_ID) - .database(null) /* DATABASE_2_PRIVILEGED_DTO */ .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) .isPublic(TABLE_5_IS_PUBLIC) @@ -2407,7 +2420,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public final static PrivilegedTableDto TABLE_8_PRIVILEGED_DTO = PrivilegedTableDto.builder() + public final static TableDto TABLE_8_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_8_ID) .tdbid(TABLE_8_DATABASE_ID) .internalName(TABLE_8_INTERNAL_NAME) @@ -2483,7 +2496,7 @@ public abstract class BaseTest { .ownedBy(USER_1_ID) .build(); - public final static PrivilegedTableDto TABLE_9_PRIVILEGED_DTO = PrivilegedTableDto.builder() + public final static TableDto TABLE_9_PRIVILEGED_DTO = TableDto.builder() .id(TABLE_9_ID) .tdbid(TABLE_9_DATABASE_ID) .internalName(TABLE_9_INTERNAL_NAME) @@ -2979,7 +2992,7 @@ public abstract class BaseTest { .isPersisted(QUERY_3_PERSISTED) .resultNumber(2L) .build(); - + public final static Long QUERY_7_ID = 7L; public final static 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 final static String QUERY_7_QUERY_HASH = "df7da3801dfb5c191ff6711d79ce6455f3c09ec8323ce1ff7208ab85387263f5"; @@ -5117,10 +5130,9 @@ public abstract class BaseTest { .columns(VIEW_1_COLUMNS_DTO) .build(); - public final static PrivilegedViewDto VIEW_1_PRIVILEGED_DTO = PrivilegedViewDto.builder() + public final static ViewDto VIEW_1_PRIVILEGED_DTO = ViewDto.builder() .id(VIEW_1_ID) .isInitialView(VIEW_1_INITIAL_VIEW) - .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .name(VIEW_1_NAME) .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) @@ -5279,10 +5291,9 @@ public abstract class BaseTest { .owner(USER_1_BRIEF_DTO) .build(); - public final static PrivilegedViewDto VIEW_2_PRIVILEGED_DTO = PrivilegedViewDto.builder() + public final static ViewDto VIEW_2_PRIVILEGED_DTO = ViewDto.builder() .id(VIEW_2_ID) .isInitialView(VIEW_2_INITIAL_VIEW) - .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .name(VIEW_2_NAME) .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) @@ -5380,10 +5391,9 @@ public abstract class BaseTest { .owner(USER_1) .build(); - public final static PrivilegedViewDto VIEW_3_PRIVILEGED_DTO = PrivilegedViewDto.builder() + public final static ViewDto VIEW_3_PRIVILEGED_DTO = ViewDto.builder() .id(VIEW_3_ID) .isInitialView(VIEW_3_INITIAL_VIEW) - .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .name(VIEW_3_NAME) .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) @@ -7518,27 +7528,20 @@ public abstract class BaseTest { .id(DATABASE_1_ID) .isPublic(DATABASE_1_PUBLIC) .name(DATABASE_1_NAME) - .container(CONTAINER_1_BRIEF_DTO) + .container(CONTAINER_1_DTO) .internalName(DATABASE_1_INTERNALNAME) .exchangeName(DATABASE_1_EXCHANGE) - .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO))) - .tables(new LinkedList<>(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO))) - .views(new LinkedList<>(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_DTO))) + .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))) + .tables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))) + .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) .build(); - public final static PrivilegedDatabaseDto DATABASE_1_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() + public final static DatabaseBriefDto DATABASE_1_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_1_ID) .isPublic(DATABASE_1_PUBLIC) - .isSchemaPublic(DATABASE_1_SCHEMA_PUBLIC) .name(DATABASE_1_NAME) - .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_1_INTERNALNAME) - .exchangeName(DATABASE_1_EXCHANGE) - .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))) - .tables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))) - .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) - .owner(USER_1_BRIEF_DTO) - .lastRetrieved(Instant.now()) + .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO))) .build(); public final static DatabaseAccess DATABASE_1_USER_1_READ_ACCESS = DatabaseAccess.builder() @@ -7672,7 +7675,7 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .build(); - public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() + public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() .id(DATABASE_2_ID) .isPublic(DATABASE_2_PUBLIC) .isSchemaPublic(DATABASE_2_SCHEMA_PUBLIC) @@ -7687,18 +7690,13 @@ public abstract class BaseTest { .lastRetrieved(Instant.now()) .build(); - public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() + public final static DatabaseBriefDto DATABASE_2_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_2_ID) .isPublic(DATABASE_2_PUBLIC) .name(DATABASE_2_NAME) - .container(CONTAINER_1_BRIEF_DTO) .internalName(DATABASE_2_INTERNALNAME) - .exchangeName(DATABASE_2_EXCHANGE) .identifiers(new LinkedList<>(List.of(IDENTIFIER_5_BRIEF_DTO))) - .tables(new LinkedList<>(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO))) - .views(new LinkedList<>(List.of(VIEW_4_BRIEF_DTO))) - .identifiers(new LinkedList<>()) - .owner(USER_2_BRIEF_DTO) + .ownerId(USER_2_ID) .build(); public final static DatabaseAccess DATABASE_2_USER_1_READ_ACCESS = DatabaseAccess.builder() @@ -7924,21 +7922,6 @@ public abstract class BaseTest { .user(USER_3_BRIEF_DTO) .build(); - public final static PrivilegedDatabaseDto DATABASE_3_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() - .id(DATABASE_3_ID) - .isPublic(DATABASE_3_PUBLIC) - .isSchemaPublic(DATABASE_3_SCHEMA_PUBLIC) - .name(DATABASE_3_NAME) - .container(CONTAINER_1_PRIVILEGED_DTO) - .internalName(DATABASE_3_INTERNALNAME) - .exchangeName(DATABASE_3_EXCHANGE) - .identifiers(new LinkedList<>(List.of(IDENTIFIER_6_DTO))) - .tables(new LinkedList<>(List.of(TABLE_8_DTO))) - .views(new LinkedList<>(List.of(VIEW_5_DTO))) - .owner(USER_3_BRIEF_DTO) - .lastRetrieved(Instant.now()) - .build(); - public final static Identifier IDENTIFIER_7 = Identifier.builder() .id(IDENTIFIER_7_ID) .descriptions(new LinkedList<>()) @@ -7985,21 +7968,6 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .build(); - public final static PrivilegedDatabaseDto DATABASE_4_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() - .id(DATABASE_4_ID) - .isPublic(DATABASE_4_PUBLIC) - .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) - .name(DATABASE_4_NAME) - .container(CONTAINER_1_PRIVILEGED_DTO) - .internalName(DATABASE_4_INTERNALNAME) - .exchangeName(DATABASE_4_EXCHANGE) - .identifiers(new LinkedList<>(List.of(IDENTIFIER_7_DTO))) - .tables(new LinkedList<>(List.of(TABLE_9_DTO))) - .views(new LinkedList<>(List.of())) - .owner(USER_3_BRIEF_DTO) - .lastRetrieved(Instant.now()) - .build(); - public final static DatabaseAccess DATABASE_4_USER_1_READ_ACCESS = DatabaseAccess.builder() .type(AccessType.READ) .hdbid(DATABASE_4_ID) diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index c789904077..8362cd2df3 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -360,7 +360,7 @@ }, "dbrepo": { "hashes": [ - "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" + "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 64f5fc6cc6..e72262e85d 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -254,10 +254,9 @@ }, "dbrepo": { "hashes": [ - "sha256:501b53c7e4b32774809f9685a18288da5b938fc1512e94d8b248f531ee8667fc" + "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" ], - "path": "./lib/dbrepo-1.6.2.tar.gz", - "version": "==1.6.2" + "path": "./lib/dbrepo-1.6.2.tar.gz" }, "docker": { "hashes": [ @@ -279,6 +278,7 @@ "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==2.3.3" }, "frozenlist": { @@ -643,6 +643,7 @@ "sha256:6598df0bc7a003294edd0ba88a331e0793acbb8c910c43edf398791e3b2eccda" ], "index": "pypi", + "markers": "python_version >= '3.8' and python_version < '4'", "version": "==2.8.0" }, "packaging": { @@ -933,6 +934,7 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==8.3.4" }, "python-dateutil": { @@ -940,7 +942,7 @@ "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.9.0.post0" }, "python-dotenv": { @@ -949,6 +951,7 @@ "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.0.1" }, "pytz": { @@ -964,6 +967,7 @@ "sha256:f3dcb4c106a8cd9e060d92f43d593d09ebc3d07adc244f4c7315856a12e383ee" ], "index": "pypi", + "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", "version": "==7.1.3" }, "requests": { @@ -979,7 +983,7 @@ "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.17.0" }, "testcontainers-core": { @@ -994,6 +998,7 @@ "sha256:0bdf270b5b7f53915832f7c31dd2bd3ffdc20b534ea6b32231cc7003049bd0e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.0.1rc1" }, "tinydb": { @@ -1285,6 +1290,7 @@ "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" ], "index": "pypi", + "markers": "python_version >= '3.9'", "version": "==7.6.10" }, "iniconfig": { @@ -1317,6 +1323,7 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==8.3.4" } } diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz index 58081673e955d89fccf70c9161037a725b647f71..02ed2aec31c2b1881165a12d45060ed4a311192d 100644 GIT binary patch delta 39303 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 R=>>ny-)xbb%dmiz0RTX?Dir_# delta 39288 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 LHtuT-3s@NdgDHfU diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz index 58081673e955d89fccf70c9161037a725b647f71..02ed2aec31c2b1881165a12d45060ed4a311192d 100644 GIT binary patch delta 39303 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 R=>>ny-)xbb%dmiz0RTX?Dir_# delta 39288 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 LHtuT-3s@NdgDHfU 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 3d718d5739..f953071136 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 @@ -24,7 +24,7 @@ v-model="modify.description" rows="2" :rules="[ - v => !max(v, 180) || ($t('validation.max-length') + 180), + v => max(v, 180) || ($t('validation.max-length') + 180), ]" clearable counter="180" diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index fa7eb063fc..a8518ec79e 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -511,6 +511,7 @@ class CreateTableColumn(BaseModel): name: str type: ColumnType null_allowed: bool + description: Optional[str] = None concept_uri: Optional[str] = None unit_uri: Optional[str] = None index_length: Optional[int] = None @@ -622,6 +623,21 @@ class Identifier(BaseModel): publication_month: Optional[int] = None +class IdentifierBrief(BaseModel): + id: int + database_id: int + type: IdentifierType + created_by: str + status: IdentifierStatusType + publication_year: int + publisher: str + titles: List[IdentifierTitle] + doi: Optional[str] = None + query_id: Optional[int] = None + table_id: Optional[int] = None + view_id: Optional[int] = None + + class View(BaseModel): id: int database_id: int @@ -961,7 +977,7 @@ class ColumnMinimal(BaseModel): database_id: int -class Database(BaseModel): +class DatabaseBrief(BaseModel): id: int name: str owner: UserBrief @@ -971,26 +987,36 @@ class Database(BaseModel): is_public: bool is_schema_public: bool container: ContainerBrief - identifiers: Optional[List[Identifier]] = field(default_factory=list) - subsets: Optional[List[Identifier]] = field(default_factory=list) + identifiers: Optional[List[IdentifierBrief]] = field(default_factory=list) + subsets: Optional[List[IdentifierBrief]] = field(default_factory=list) + preview_image: Optional[str] = None description: Optional[str] = None - tables: Optional[List[Table]] = field(default_factory=list) - views: Optional[List[View]] = field(default_factory=list) + tables: Optional[List[TableBrief]] = field(default_factory=list) + views: Optional[List[ViewBrief]] = field(default_factory=list) image: Optional[str] = None accesses: Optional[List[DatabaseAccess]] = field(default_factory=list) - exchange_type: Optional[str] = None + exchange_name: Optional[str] = None -class DatabaseBrief(BaseModel): +class Database(BaseModel): id: int name: str + owner: UserBrief + contact: UserBrief + exchange_name: str internal_name: str - description: Optional[str] = None is_public: bool is_schema_public: bool + container: ContainerBrief identifiers: Optional[List[Identifier]] = field(default_factory=list) - contact: UserBrief - owner_id: str + subsets: Optional[List[Identifier]] = field(default_factory=list) + preview_image: Optional[str] = None + description: Optional[str] = None + tables: Optional[List[Table]] = field(default_factory=list) + views: Optional[List[View]] = field(default_factory=list) + image: Optional[str] = None + accesses: Optional[List[DatabaseAccess]] = field(default_factory=list) + exchange_name: Optional[str] = None class Unique(BaseModel): -- GitLab From a73c6ee36dc0d005588a42979f690e7fb576d554 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 10:57:36 +0100 Subject: [PATCH 03/52] Added Swagger version lint Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab-ci.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01e1f79c16..0e2c8535aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,7 +49,6 @@ lint-docker-compose: before_script: - 'apk --no-cache add bash wget' - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' - - 'ls -la .scripts' script: - "bash .scripts/check-compose.sh" - "yq compare -P docker-compose.yml .docker/docker-compose.yml 'volumes.*'" @@ -117,6 +116,19 @@ lint-metadata-schema: script: - diff dbrepo-metadata-db/1_setup-schema.sql helm/dbrepo/files/01-setup-schema.sql +lint-swagger-version: + image: docker.io/alpine:${ALPINE_VERSION} + stage: lint + variables: + VERSION: 3.3.0 + BINARY: yq_linux_amd64 + before_script: + - 'apk --no-cache add bash wget' + - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' + script: + - cat ./.docs/.swagger/api.base.yaml | yq .externalDocs.url | grep "${DOC_VERSION}" + - cat ./.docs/.swagger/api.base.yaml | yq .info.version | grep "${APP_VERSION}" + build-metadata-service: image: maven:3-openjdk-${JAVA_VERSION} stage: build -- GitLab From df05d432a05db89fcf1c48e55a6cd703f3010070 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 10:58:18 +0100 Subject: [PATCH 04/52] Fixed the docker compose versions Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docker/docker-compose.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index cdeb4e3624..b6a7478e82 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -109,7 +109,7 @@ services: dbrepo-auth-service-init: init: true restart: "no" - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 environment: AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin} @@ -130,7 +130,7 @@ services: restart: "no" container_name: dbrepo-metadata-service hostname: metadata-service - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: @@ -193,7 +193,7 @@ services: restart: "no" container_name: dbrepo-analyse-service hostname: analyse-service - image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.2 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -248,7 +248,7 @@ services: restart: "no" container_name: dbrepo-search-db hostname: search-db - image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.2 healthcheck: test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP interval: 10s @@ -272,7 +272,7 @@ services: restart: "no" container_name: dbrepo-search-service hostname: search-service - image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.2 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -296,7 +296,7 @@ services: restart: "no" container_name: dbrepo-ui hostname: ui - image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.2 environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}" @@ -365,7 +365,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.1 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.2 environment: LOG_LEVEL: ${LOG_LEVEL:-info} METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080} @@ -422,7 +422,7 @@ services: restart: "no" container_name: dbrepo-dashboard-service hostname: dashboard-service - image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.2 ports: - "3000:3000" volumes: @@ -449,7 +449,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.1 + image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.2 environment: S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin} S3_BUCKET: "${S3_BUCKET:-dbrepo}" @@ -494,7 +494,7 @@ services: restart: "no" container_name: dbrepo-data-service hostname: data-service - image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.1 + image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.2 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: -- GitLab From 724bd150330579304462e4bb4fa570bc4194c326 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 11:08:17 +0100 Subject: [PATCH 05/52] Updated yq commands Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e2c8535aa..dfc73f621d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -126,8 +126,8 @@ lint-swagger-version: - 'apk --no-cache add bash wget' - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' script: - - cat ./.docs/.swagger/api.base.yaml | yq .externalDocs.url | grep "${DOC_VERSION}" - - cat ./.docs/.swagger/api.base.yaml | yq .info.version | grep "${APP_VERSION}" + - yq r ./.docs/.swagger/api.base.yaml 'externalDocs.url' | grep "${DOC_VERSION}" + - yq r ./.docs/.swagger/api.base.yaml 'info.version' | grep "${DOC_VERSION}" build-metadata-service: image: maven:3-openjdk-${JAVA_VERSION} -- GitLab From 58c934876d173c4b2bc14cc505851777b24a32ef Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 13:06:11 +0100 Subject: [PATCH 06/52] Updated libs Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 20 ++++----- .../lib/dbrepo-1.6.2-py3-none-any.whl | Bin 0 -> 30864 bytes .../lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40094 bytes .../impl/MetadataServiceGatewayImpl.java | 15 ++++--- .../at/tuwien/service/impl/DataConnector.java | 14 +++--- .../impl/DatabaseServiceMariaDbImpl.java | 12 +---- .../service/impl/TableServiceMariaDbImpl.java | 10 ++--- .../at/tuwien/endpoints/DatabaseEndpoint.java | 1 + dbrepo-search-service/Pipfile.lock | 8 ++-- dbrepo-search-service/init/Pipfile.lock | 8 ++-- .../init/lib/dbrepo-1.6.2-py3-none-any.whl | Bin 0 -> 30864 bytes .../init/lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40094 bytes .../lib/dbrepo-1.6.2-py3-none-any.whl | Bin 0 -> 30864 bytes dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40094 bytes dbrepo-ui/components/dialogs/EditTuple.vue | 42 ++++++------------ make/build.mk | 12 ++--- 16 files changed, 60 insertions(+), 82 deletions(-) create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.2-py3-none-any.whl create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl create mode 100644 dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index ec9b5f13d4..f177d904cb 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:76cfc9a705be46e8d22607efacc8d688c064f923d785a01c00b28e9a96425d1a", - "sha256:fde1c29996b77274a60b7bc9f741525afa6267bb1716eb644a764fb7c124a0d2" + "sha256:53a5307f6a3526ee2f8590e3c45efa504a3ea4532c1bfe4926c0c19bf188d141", + "sha256:f9843a5d06f501d66ada06f5a5417f671823af2cf319e36ceefa1bafaaaaa953" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.2" + "version": "==1.36.3" }, "botocore": { "hashes": [ - "sha256:a1fe6610983f0214b0c7655fe6990b6a731746baf305b182976fc7b568fc3cb0", - "sha256:bc3b7e3b573a48af2bd7116b80fe24f9a335b0b67314dcb2697a327d009abf29" + "sha256:536ab828e6f90dbb000e3702ac45fd76642113ae2db1b7b1373ad24104e89255", + "sha256:775b835e979da5c96548ed1a0b798101a145aec3cd46541d62e27dda5a94d7f8" ], "markers": "python_version >= '3.8'", - "version": "==1.36.2" + "version": "==1.36.3" }, "certifi": { "hashes": [ @@ -412,7 +412,7 @@ }, "dbrepo": { "hashes": [ - "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" + "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1601,11 +1601,11 @@ }, "tzdata": { "hashes": [ - "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", - "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd" + "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", + "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639" ], "markers": "python_version >= '2'", - "version": "==2024.2" + "version": "==2025.1" }, "urllib3": { "hashes": [ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..24256263e2fb3156ac0eea01079116e4b40e36fd GIT binary patch literal 30864 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 literal 0 HcmV?d00001 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz index 02ed2aec31c2b1881165a12d45060ed4a311192d..2ae1ea50b1610050f5bd5746f7e9596b1c483c9d 100644 GIT binary patch literal 40094 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 Hz{&ssdmpy^ literal 40094 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 Mwn)xpSis5v08ewvp#T5? 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 57d6ffab7c..4dcfaf13a2 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 @@ -100,7 +100,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", "X-Host", "X-Port"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Host", "X-Port", "X-Type"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all database headers"); log.debug("expected headers: {}", expectedHeaders); @@ -112,10 +112,11 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { throw new MetadataServiceException("Failed to find database with id " + id + ": body is empty"); } 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().setHost(response.getHeaders().get("X-Host").get(0)); - database.getContainer().setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); + database.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); + database.setUsername(response.getHeaders().get("X-Username").get(0)); + database.setPassword(response.getHeaders().get("X-Password").get(0)); + database.setHost(response.getHeaders().get("X-Host").get(0)); + database.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); database.setLastRetrieved(Instant.now()); return database; } @@ -139,7 +140,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-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-Table"); + final List<String> expectedHeaders = List.of("X-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-Table", "X-Type"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all table headers"); log.debug("expected headers: {}", expectedHeaders); @@ -181,7 +182,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-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-View"); + final List<String> expectedHeaders = List.of("X-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-View", "X-Type"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all view headers"); log.debug("expected headers: {}", expectedHeaders); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java index 9fbee30fa6..1044869ad8 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -12,7 +12,7 @@ public abstract class DataConnector<T extends CacheableDto> { public ComboPooledDataSource getDataSource(T entity) { final long start = System.currentTimeMillis(); final ComboPooledDataSource dataSource = new ComboPooledDataSource(); - dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), + dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), entity.getDatabase())); dataSource.setUser(entity.getUsername()); dataSource.setPassword(entity.getPassword()); @@ -27,7 +27,7 @@ public abstract class DataConnector<T extends CacheableDto> { public ComboPooledDataSource getDataSource(T entity, String databaseName) { final long start = System.currentTimeMillis(); final ComboPooledDataSource dataSource = new ComboPooledDataSource(); - dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), databaseName)); + dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), databaseName)); dataSource.setUser(entity.getUsername()); dataSource.setPassword(entity.getPassword()); dataSource.setInitialPoolSize(5); @@ -38,24 +38,24 @@ public abstract class DataConnector<T extends CacheableDto> { return dataSource; } - public String getSparkUrl(String jdbcMethod, String host, String password, String databaseName) { - final StringBuilder sb = new StringBuilder(getJdbcUrl(jdbcMethod, host, password, databaseName)) + public String getSparkUrl(String jdbcMethod, String host, Integer port, String databaseName) { + final StringBuilder sb = new StringBuilder(getJdbcUrl(jdbcMethod, host, port, databaseName)) .append("?sessionVariables=sql_mode='ANSI_QUOTES'"); log.trace("mapped container to spark url: {}", sb.toString()); return sb.toString(); } public String getSparkUrl(T entity) { - return getSparkUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPassword(), entity.getDatabase()); + return getSparkUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), entity.getDatabase()); } - public String getJdbcUrl(String jdbcMethod, String host, String password, String databaseName) { + public String getJdbcUrl(String jdbcMethod, String host, Integer port, String databaseName) { final StringBuilder stringBuilder = new StringBuilder("jdbc:") .append(jdbcMethod) .append("://") .append(host) .append(":") - .append(password); + .append(port); if (databaseName != null) { stringBuilder.append("/") .append(databaseName); 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 2b5af71d1c..cfe43d8f8f 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 @@ -13,13 +13,10 @@ import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.DatabaseService; -import at.tuwien.service.TableService; -import at.tuwien.service.ViewService; import com.google.common.hash.Hashing; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; @@ -36,19 +33,14 @@ public class DatabaseServiceMariaDbImpl extends DataConnector<DatabaseDto> imple private final DataMapper dataMapper; private final QueryConfig queryConfig; - private final ViewService viewService; - private final TableService tableService; private final MariaDbMapper mariaDbMapper; private final MetadataMapper metadataMapper; @Autowired - public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, ViewService viewService, - TableService tableService, MariaDbMapper mariaDbMapper, - @Qualifier("metadataMapper") MetadataMapper metadataMapper) { + public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, MariaDbMapper mariaDbMapper, + MetadataMapper metadataMapper) { this.dataMapper = dataMapper; this.queryConfig = queryConfig; - this.viewService = viewService; - this.tableService = tableService; this.mariaDbMapper = mariaDbMapper; this.metadataMapper = metadataMapper; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java index 6586c8ba42..68fb59cb5e 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java @@ -374,10 +374,10 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements throws QueryMalformedException, TableNotFoundException { try { final Properties properties = new Properties(); - properties.setProperty("user", database.getContainer().getUsername()); - properties.setProperty("password", database.getContainer().getPassword()); + properties.setProperty("user", database.getUsername()); + properties.setProperty("password", database.getPassword()); return sparkSession.read() - .jdbc(getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPassword(), + .jdbc(getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPort(), database.getInternalName()), tableOrView, properties); } catch (Exception e) { if (e instanceof ExtendedAnalysisException exception) { @@ -386,8 +386,8 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements throw new TableNotFoundException("Failed to find named reference: " + exception.getSimpleMessage()) /* remove throwable on purpose, clutters the output */; } } - log.error("Failed to find get data from query statement: {}", e.getMessage()); - throw new QueryMalformedException("Failed to find get data from query statement: " + e.getMessage(), e); + log.error("Malformed query: {}", e.getMessage()); + throw new QueryMalformedException("Malformed query: " + e.getMessage(), e); } } 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 7e03202480..194f79d255 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 @@ -551,6 +551,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { headers.set("X-Password", database.getContainer().getPrivilegedPassword()); headers.set("X-Host", database.getContainer().getHost()); headers.set("X-Port", "" + database.getContainer().getPort()); + headers.set("X-Type", database.getContainer().getImage().getJdbcMethod()); headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port"); } return ResponseEntity.status(HttpStatus.OK) diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 8362cd2df3..d75a0069a1 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -360,7 +360,7 @@ }, "dbrepo": { "hashes": [ - "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" + "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1574,11 +1574,11 @@ }, "tzdata": { "hashes": [ - "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", - "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd" + "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", + "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639" ], "markers": "python_version >= '2'", - "version": "==2024.2" + "version": "==2025.1" }, "urllib3": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index e72262e85d..e4a2e7d718 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -254,7 +254,7 @@ }, "dbrepo": { "hashes": [ - "sha256:19c6bbcf9461e20681f0fb342087c618a91123d2d04d4df2f4fd1da80aa77b76" + "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1027,11 +1027,11 @@ }, "tzdata": { "hashes": [ - "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", - "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd" + "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", + "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639" ], "markers": "python_version >= '2'", - "version": "==2024.2" + "version": "==2025.1" }, "urllib3": { "hashes": [ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..24256263e2fb3156ac0eea01079116e4b40e36fd GIT binary patch literal 30864 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz index 02ed2aec31c2b1881165a12d45060ed4a311192d..2ae1ea50b1610050f5bd5746f7e9596b1c483c9d 100644 GIT binary patch literal 40094 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 Hz{&ssdmpy^ literal 40094 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 Mwn)xpSis5v08ewvp#T5? diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..24256263e2fb3156ac0eea01079116e4b40e36fd GIT binary patch literal 30864 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz index 02ed2aec31c2b1881165a12d45060ed4a311192d..2ae1ea50b1610050f5bd5746f7e9596b1c483c9d 100644 GIT binary patch literal 40094 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 Hz{&ssdmpy^ literal 40094 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 Mwn)xpSis5v08ewvp#T5? diff --git a/dbrepo-ui/components/dialogs/EditTuple.vue b/dbrepo-ui/components/dialogs/EditTuple.vue index 3290d230d1..75e824ed43 100644 --- a/dbrepo-ui/components/dialogs/EditTuple.vue +++ b/dbrepo-ui/components/dialogs/EditTuple.vue @@ -3,7 +3,7 @@ <v-form ref="form" v-model="valid" - @submit.prevent="submit"> + @submit.prevent="validate"> <v-card :title="title" :subtitle="this.$t('toolbars.table.data.subtitle')" @@ -17,12 +17,10 @@ <v-text-field v-if="isNumber(column)" v-model.number="tuple[column.internal_name]" - :disabled="!edit" persistent-hint :variant="inputVariant" :label="column.internal_name" :hint="hint(column)" - :rules="rules(column)" :required="required(column)" type="number"> <template @@ -48,11 +46,9 @@ <v-text-field v-if="isTextField(column)" v-model="tuple[column.internal_name]" - :disabled="disabled(column)" :clearable="!required(column)" :counter="maxLength(column) !== null" :maxlength="maxLength(column)" - :rules="rules(column)" :required="required(column)" persistent-hint :variant="inputVariant" @@ -82,10 +78,8 @@ <v-text-field v-if="isFloatingPoint(column)" v-model="tuple[column.internal_name]" - :disabled="disabled(column)" step=".1" :clearable="!required(column)" - :rules="rules(column)" :required="required(column)" persistent-hint :variant="inputVariant" @@ -115,10 +109,8 @@ <v-textarea v-if="isTextArea(column)" v-model="tuple[column.internal_name]" - :disabled="disabled(column)" rows="3" :clearable="!required(column)" - :rules="rules(column)" :required="required(column)" persistent-hint :variant="inputVariant" @@ -155,7 +147,6 @@ :variant="inputVariant" :label="column.internal_name" :hint="hint(column)" - :rules="rules(column)" :required="required(column)" :clearable="!required(column)" :items="isSet(column) ? column.sets : column.enums"> @@ -186,7 +177,6 @@ :variant="inputVariant" :label="column.internal_name" :hint="hint(column)" - :rules="rules(column)" :required="required(column)" :items="bools" :clearable="!required(column)"> @@ -322,10 +312,10 @@ export default { cacheStore: useCacheStore() } }, - mounted() { + mounted () { this.fetchContainer() - this.$refs.form.validate() this.oldTuple = Object.assign({}, this.tuple) + this.validate() }, computed: { database () { @@ -358,8 +348,17 @@ export default { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal } }, + watch: { + tuple: { + handler () { + this.validate() + }, + deep: true + } + }, methods: { - submit () { + validate () { + console.debug('validate form') this.$refs.form.validate() }, cancel () { @@ -425,18 +424,6 @@ export default { isTimeField (column) { return ['date', 'datetime', 'timestamp', 'time', 'year'].includes(column.type) }, - rules (column) { - if (column.is_null_allowed) { - return [] - } - const rules = [] - rules.push(v => v !== null || this.$t('validation.required')) - if (column.type === 'decimal' || column.type === 'double') { - rules.push(v => !(!v || v.split('.')[0].length > column.size) || `${this.$t('pages.table.subpages.data.float.max')} ${column.size} ${this.$t('pages.table.subpages.data.float.before')}`) - rules.push(v => !(!v || (column.d && v.split('.')[1].length > column.d)) || `${this.$t('pages.table.subpages.data.float.max')} ${column.d} ${this.$t('pages.table.subpages.data.float.after')}`) - } - return rules - }, maxLength (column) { if (!this.isTextField(column) || column.size === null) { return null @@ -446,9 +433,6 @@ export default { required (column) { return column.is_null_allowed === false }, - disabled (column) { - return (this.edit && column.is_primary_key) || !this.edit - }, updateTuple () { const constraints = {} this.primaryKeyColumns diff --git a/make/build.mk b/make/build.mk index 7311ed2716..bc6dfc56a7 100644 --- a/make/build.mk +++ b/make/build.mk @@ -20,16 +20,16 @@ build-ui: ## Build the UI. .PHONY: build-lib build-lib: ## Build the Python Library. - rm -f ./dbrepo-analyse-service/lib/dbrepo-${APP_VERSION}.tar.gz - rm -f ./dbrepo-search-service/lib/dbrepo-${APP_VERSION}.tar.gz - rm -f ./dbrepo-search-service/init/lib/dbrepo-${APP_VERSION}.tar.gz + rm -f ./dbrepo-analyse-service/Pipfile.lock ./dbrepo-analyse-service/lib/dbrepo-${APP_VERSION}* + rm -f ./dbrepo-search-service/Pipfile.lock ./dbrepo-search-service/lib/dbrepo-${APP_VERSION}* + rm -f ./dbrepo-search-service/init/Pipfile.lock ./dbrepo-search-service/init/lib/dbrepo-${APP_VERSION}* python3 -m build --sdist ./lib/python python3 -m build --wheel ./lib/python - cp ./lib/python/dist/dbrepo-${APP_VERSION}.tar.gz ./dbrepo-analyse-service/lib/dbrepo-${APP_VERSION}.tar.gz + cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-analyse-service/lib (cd ./dbrepo-analyse-service && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) - cp ./lib/python/dist/dbrepo-${APP_VERSION}.tar.gz ./dbrepo-search-service/lib/dbrepo-${APP_VERSION}.tar.gz + cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-search-service/lib (cd ./dbrepo-search-service && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) - cp ./lib/python/dist/dbrepo-${APP_VERSION}.tar.gz ./dbrepo-search-service/init/lib/dbrepo-${APP_VERSION}.tar.gz + cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-search-service/init/lib (cd ./dbrepo-search-service/init && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) .PHONY: build-helm -- GitLab From f6a6eb3fb4d99e0a5fca91aa5e5a06c284929dfe Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 15:19:09 +0100 Subject: [PATCH 07/52] Bumped yq and added schema validation Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/.openapi/api-analyse.yaml | 332 + .docs/.openapi/api-data.yaml | 1792 +++++ .docs/.openapi/api-metadata.yaml | 7043 +++++++++++++++++ .docs/.openapi/api-search.yaml | 387 + .docs/{.swagger => .openapi}/api.base.yaml | 0 .docs/{.swagger => .openapi}/api.yaml | 810 +- .docs/{.swagger => .openapi}/custom.css | 0 .../openapi-generate.sh} | 4 +- .../{.swagger => .openapi}/openapi-merge.json | 0 .docs/{.swagger => .openapi}/swagger-ui.html | 0 .gitlab-ci.yml | 20 +- .../api/database/table/columns/ColumnDto.java | 13 +- .../columns/concepts/ConceptBriefDto.java | 5 + .../table/columns/concepts/UnitBriefDto.java | 5 + lib/python/Pipfile | 1 + lib/python/Pipfile.lock | 233 +- lib/python/tests/conftest.py | 37 - lib/python/tests/test_dtos.py | 44 + lib/python/tests/test_system_database.py | 34 - lib/python/tests/test_system_user.py | 42 - lib/python/tests/test_unit_analyse.py | 1 - lib/python/tests/test_unit_database.py | 16 +- make/gen.mk | 8 +- yq | 7043 +++++++++++++++++ 24 files changed, 17272 insertions(+), 598 deletions(-) create mode 100644 .docs/.openapi/api-analyse.yaml create mode 100644 .docs/.openapi/api-data.yaml create mode 100644 .docs/.openapi/api-metadata.yaml create mode 100644 .docs/.openapi/api-search.yaml rename .docs/{.swagger => .openapi}/api.base.yaml (100%) rename .docs/{.swagger => .openapi}/api.yaml (97%) rename .docs/{.swagger => .openapi}/custom.css (100%) rename .docs/{.swagger/swagger-generate.sh => .openapi/openapi-generate.sh} (82%) rename .docs/{.swagger => .openapi}/openapi-merge.json (100%) rename .docs/{.swagger => .openapi}/swagger-ui.html (100%) delete mode 100644 lib/python/tests/conftest.py create mode 100644 lib/python/tests/test_dtos.py delete mode 100644 lib/python/tests/test_system_database.py delete mode 100644 lib/python/tests/test_system_user.py create mode 100644 yq diff --git a/.docs/.openapi/api-analyse.yaml b/.docs/.openapi/api-analyse.yaml new file mode 100644 index 0000000000..25e15521d5 --- /dev/null +++ b/.docs/.openapi/api-analyse.yaml @@ -0,0 +1,332 @@ +{ + "components": { + "schemas": { + "AnalysisDto": { + "properties": { + "columns": { + "items": { + "properties": { + "column_name": { + "$ref": "#/components/schemas/ColumnAnalysisDto" + } + } + }, + "type": "array" + }, + "line_termination": { + "example": "\r\n", + "type": "string" + }, + "separator": { + "example": ",", + "type": "string" + } + }, + "type": "object" + }, + "ColumnAnalysisDto": { + "properties": { + "d": { + "example": 4, + "type": "integer" + }, + "dfid": { + "example": null, + "type": "integer" + }, + "enums": { + "example": null, + "properties": { + "type": "string" + }, + "type": "array" + }, + "null_allowed": { + "type": "boolean" + }, + "sets": { + "example": null, + "properties": { + "type": "string" + }, + "type": "array" + }, + "size": { + "example": 10, + "type": "integer" + }, + "type": { + "example": "decimal", + "type": "string" + } + }, + "type": "object" + }, + "ErrorDto": { + "properties": { + "message": { + "example": "Message", + "type": "string" + }, + "success": { + "example": false, + "type": "boolean" + } + }, + "type": "object" + }, + "KeysDto": { + "properties": { + "keys": { + "items": { + "properties": { + "column_name": { + "format": "int64", + "type": "integer" + } + } + }, + "type": "array" + } + }, + "required": [ + "keys" + ], + "type": "object" + } + }, + "securitySchemes": { + "basicAuth": { + "in": "header", + "scheme": "basic", + "type": "http" + }, + "bearerAuth": { + "bearerFormat": "JWT", + "in": "header", + "scheme": "bearer", + "type": "http" + } + } + }, + "externalDocs": { + "description": "Sourcecode Documentation", + "url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/" + }, + "info": { + "contact": { + "email": "andreas.rauber@tuwien.ac.at", + "name": "Prof. Andreas Rauber" + }, + "description": "Service that analyses data structures", + "license": { + "name": "Apache 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + }, + "title": "Database Repository Analyse Service API", + "version": "1.5" + }, + "openapi": "3.0.0", + "paths": { + "/api/analyse/datatypes": { + "get": { + "consumes": [ + "application/json" + ], + "description": "Determines MySQL 8 datatypes of a given dataset. Requires role `table-semantic-analyse`.", + "operationId": "analyse_datatypes", + "parameters": [ + { + "example": "filename_s3_key", + "in": "query", + "name": "filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "example": ",", + "in": "query", + "name": "separator", + "required": true, + "schema": { + "type": "string" + } + }, + { + "example": "false", + "in": "query", + "name": "enum", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "example": "2.5", + "in": "query", + "name": "enum_tol", + "required": false, + "schema": { + "type": "float" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnalysisDto" + } + } + }, + "description": "Determined data types successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Failed to determine data types" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Failed to find file in Storage Service" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Unexpected system error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "basicAuth": [] + } + ], + "summary": "Determine datatypes", + "tags": [ + "analyse-endpoint" + ] + } + }, + "/api/analyse/keys": { + "get": { + "consumes": [ + "application/json" + ], + "description": "Determines primary keys of a given dataset. Requires role `table-semantic-analyse`.", + "operationId": "analyse_keys", + "parameters": [ + { + "example": "filename_s3_key", + "in": "query", + "name": "filename", + "required": true, + "schema": { + "type": "string" + } + }, + { + "example": ",", + "in": "query", + "name": "separator", + "required": true, + "schema": { + "type": "string" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KeysDto" + } + } + }, + "description": "Determined keys successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Failed to determine keys" + }, + "404": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Failed to find file in Storage Service or is empty" + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorDto" + } + } + }, + "description": "Unexpected system error" + } + }, + "security": [ + { + "bearerAuth": [] + }, + { + "basicAuth": [] + } + ], + "summary": "Determine keys", + "tags": [ + "analyse-endpoint" + ] + } + } + }, + "servers": [ + { + "description": "Generated server url", + "url": "http://localhost:5000" + }, + { + "description": "Sandbox", + "url": "https://test.dbrepo.tuwien.ac.at" + } + ] +} diff --git a/.docs/.openapi/api-data.yaml b/.docs/.openapi/api-data.yaml new file mode 100644 index 0000000000..7be3a4039a --- /dev/null +++ b/.docs/.openapi/api-data.yaml @@ -0,0 +1,1792 @@ +openapi: 3.0.1 +info: + title: Database Repository Data Service API + description: Service that manages the data + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.6.2 +externalDocs: + description: Sourcecode Documentation + url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6.2/system-services-metadata/ +servers: +- url: http://localhost + description: Development instance +- url: https://test.dbrepo.tuwien.ac.at + description: Staging instance +paths: + /api/database/{databaseId}/view/{viewId}/data: + get: + tags: + - view-endpoint + summary: Get view data + description: "Gets data from a view of a database. For private databases, the\ + \ user needs at least *READ* access to the associated database. Requires role\ + \ `view-database-view-data`." + operationId: getData + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "400": + description: Request pagination is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve view data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Retrieved view data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple + content: + application/json: + schema: + type: string + "409": + description: View schema could not be mapped + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find view in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + head: + tags: + - view-endpoint + summary: Get view data + description: "Gets data from a view of a database. For private databases, the\ + \ user needs at least *READ* access to the associated database. Requires role\ + \ `view-database-view-data`." + operationId: getData_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "400": + description: Request pagination is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve view data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Retrieved view data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple + content: + application/json: + schema: + type: string + "409": + description: View schema could not be mapped + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find view in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/table/{tableId}/data: + get: + tags: + - table-endpoint + summary: Get table data + description: "Gets data from a table with id. For a table in a private database,\ + \ the user needs to have at least *READ* access to the associated database.\ + \ Requests with HTTP method **GET** return the full dataset, requests with\ + \ HTTP method **HEAD** only the number of tuples in the `X-Count` header." + operationId: getData_2 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Get table data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple + content: + application/json: + schema: + type: string + "403": + description: Not allowed to get table data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + put: + tags: + - table-endpoint + summary: Update tuple + description: "Updates a data tuple into a table, then the table statistics are\ + \ updated. The user needs to have at least *WRITE_OWN* access to the associated\ + \ database. Requires role `insert-table-data`." + operationId: updateRawTuple + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: Authorization + in: header + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TupleUpdateDto" + required: true + responses: + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated table data + "403": + description: Update table data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + post: + tags: + - table-endpoint + summary: Insert tuple + description: "Inserts a data tuple into a table, then the table statistics are\ + \ updated. The user needs to have at least *WRITE_OWN* access to the associated\ + \ database. Requires role `insert-table-data`." + operationId: insertRawTuple + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: Authorization + in: header + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TupleDto" + required: true + responses: + "503": + description: Failed to establish connection with the metadata service or + storage service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Create table data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created table data + "404": + description: Failed to find table in metadata database or blob in storage + service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + delete: + tags: + - table-endpoint + summary: Delete tuple + description: "Deletes a data tuple into a table, then the table statistics are\ + \ updated. The user needs to have at least *WRITE_OWN* access to the associated\ + \ database. Requires role `delete-table-data`." + operationId: deleteRawTuple + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: Authorization + in: header + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TupleDeleteDto" + required: true + responses: + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Delete table data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted table data + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + head: + tags: + - table-endpoint + summary: Get table data + description: "Gets data from a table with id. For a table in a private database,\ + \ the user needs to have at least *READ* access to the associated database.\ + \ Requests with HTTP method **GET** return the full dataset, requests with\ + \ HTTP method **HEAD** only the number of tuples in the `X-Count` header." + operationId: getData_3 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Get table data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple + content: + application/json: + schema: + type: string + "403": + description: Not allowed to get table data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/subset/{subsetId}/data: + get: + tags: + - subset-endpoint + summary: Get subset data + description: "Gets data of subset with id. For private databases, the user needs\ + \ at least *READ* access to the associated database. Requests with HTTP method\ + \ **GET** return the subset dataset, requests with HTTP method **HEAD** only\ + \ the number of rows in the subset dataset in the `X-Count` header" + operationId: getData_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: subsetId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid pagination + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Retrieved subset data + headers: + Access-Control-Expose-Headers: + description: Reverse proxy exposing of custom headers + required: true + style: simple + X-Count: + description: Number of rows + style: simple + X-Id: + description: The subset id + required: true + style: simple + X-Headers: + description: The list of headers separated by comma + style: simple + content: + application/json: + schema: + type: string + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + head: + tags: + - subset-endpoint + summary: Get subset data + description: "Gets data of subset with id. For private databases, the user needs\ + \ at least *READ* access to the associated database. Requests with HTTP method\ + \ **GET** return the subset dataset, requests with HTTP method **HEAD** only\ + \ the number of rows in the subset dataset in the `X-Count` header" + operationId: getData_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: subsetId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid pagination + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Retrieved subset data + headers: + Access-Control-Expose-Headers: + description: Reverse proxy exposing of custom headers + required: true + style: simple + X-Count: + description: Number of rows + style: simple + X-Id: + description: The subset id + required: true + style: simple + X-Headers: + description: The list of headers separated by comma + style: simple + content: + application/json: + schema: + type: string + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/subset/{queryId}: + put: + tags: + - subset-endpoint + summary: Persist subset + description: Persists a subset with id. Requires role `persist-query`. + operationId: persist + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: queryId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/QueryPersistDto" + required: true + responses: + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Persisted subset + content: + application/json: + schema: + $ref: "#/components/schemas/QueryDto" + "403": + description: Not allowed to persist subset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Malformed select query + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: Failed to persist subset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/data/import: + post: + tags: + - table-endpoint + summary: Import dataset + description: Imports a dataset in a table. Then update the table statistics. + The user needs to have at least *WRITE_OWN* access to the associated database + when importing into a owned table. Otherwise *WRITE_ALL* access in needed. + Requires role `insert-table-data`. + operationId: importDataset + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: Authorization + in: header + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ImportDto" + required: true + responses: + "202": + description: Imported dataset successfully + "403": + description: Import table dataset not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Dataset and/or query are malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/subset: + get: + tags: + - subset-endpoint + summary: Find subsets + description: "Finds subsets in the query store. When the database schema is\ + \ marked as hidden, the user needs to be authorized, have at least read-access\ + \ to the database. The result can be optionally filtered by setting `persisted`.\ + \ When set to *true*, only persisted queries are returned, otherwise only\ + \ non-persisted queries are returned." + operationId: list + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: persisted + in: query + required: false + schema: + type: boolean + responses: + "403": + description: Not allowed to find subsets + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found subsets + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/QueryDto" + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + post: + tags: + - subset-endpoint + summary: Create subset + description: Creates a subset in the query store of the data database. Can also + be used without authentication if (and only if) the database is marked as + public (i.e. when `is_public` = `is_schema_public` is set to `true`). Otherwise + at least read access is required. + operationId: create + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ExecuteStatementDto" + required: true + responses: + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Malformed select query + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "501": + description: Failed to execute query as it contains non-supported keywords + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: Failed to insert query into query store of data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created subset + content: + application/json: + schema: + type: string + "403": + description: Not allowed to find subset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/view/{viewId}/export: + get: + tags: + - view-endpoint + summary: Get view data + description: "Gets data from view with id as downloadable file. For tables in\ + \ private databases, the user needs to have at least *READ* access to the\ + \ associated database." + operationId: exportDataset + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "403": + description: Export view data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination or view data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Exported view data + content: + application/json: + schema: + type: string + format: binary + "404": + description: Failed to find view in metadata database or export dataset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/table/{tableId}/history: + get: + tags: + - table-endpoint + summary: Get history + description: "Gets the insert/delete operations history performed. For tables\ + \ in private databases, the user needs to have at least *READ* access to the\ + \ associated database." + operationId: getHistory + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "400": + description: "Invalid pagination size request, must be > 0" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Find table history not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found table history + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableHistoryDto" + "404": + description: Failed to find table history in data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/table/{tableId}/export: + get: + tags: + - table-endpoint + summary: Get table data + description: "Gets data from table with id as downloadable file. For tables\ + \ in private databases, the user needs to have at least *READ* access to the\ + \ associated database." + operationId: exportDataset_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "403": + description: Export table data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Exported table data + content: + application/json: + schema: + type: string + format: binary + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] + /api/database/{databaseId}/subset/{subsetId}: + get: + tags: + - subset-endpoint + summary: Find subset + description: "Finds a subset in the data database. When the database schema\ + \ is marked as hidden, the user needs to be authorized, have at least read-access\ + \ to the database. Requests with HTTP header `Accept=application/json` return\ + \ the metadata, requests with HTTP header `Accept=text/csv` return the data\ + \ as downloadable file." + operationId: findById + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: subsetId + in: path + required: true + schema: + type: integer + format: int64 + - name: Accept + in: header + required: true + schema: + type: string + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "200": + description: Found subset + content: + application/json: + schema: + $ref: "#/components/schemas/QueryDto" + text/csv: {} + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Malformed select query + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to find subset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "406": + description: Failed to find acceptable representation + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - basicAuth: [] + - bearerAuth: [] +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + example: NOT_FOUND + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 EARLY_HINTS + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + example: Error message + code: + type: string + example: error.service.code + TupleUpdateDto: + required: + - data + - keys + type: object + properties: + data: + type: object + additionalProperties: + type: object + keys: + type: object + additionalProperties: + type: object + QueryPersistDto: + required: + - persist + type: object + properties: + persist: + type: boolean + example: true + IdentifierBriefDto: + required: + - created_by + - database_id + - id + - publication_year + - publisher + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierTitleDto" + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + status: + type: string + enum: + - draft + - published + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + view_id: + type: integer + format: int64 + example: 1 + publication_year: + type: integer + format: int32 + example: 2022 + created_by: + type: string + format: uuid + IdentifierTitleDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + title: + type: string + example: Airquality Demonstrator + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + enum: + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + QueryDto: + required: + - database_id + - execution + - id + - identifiers + - is_persisted + - owner + - query + - query_hash + - query_normalized + type: object + properties: + id: + type: integer + format: int64 + owner: + $ref: "#/components/schemas/UserBriefDto" + execution: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + query: + type: string + example: SELECT `id` FROM `air_quality` + type: + type: string + example: query + enum: + - query + - view + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierBriefDto" + database_id: + type: integer + format: int64 + query_normalized: + type: string + example: SELECT `id` FROM `air_quality` + query_hash: + type: string + example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 + is_persisted: + type: boolean + example: true + result_hash: + type: string + example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 + result_number: + type: integer + format: int64 + example: 1 + UserBriefDto: + required: + - id + - username + type: object + properties: + id: + type: string + format: uuid + example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 + username: + type: string + description: Only contains lowercase characters + example: jcarberry + name: + type: string + example: Josiah Carberry + orcid: + type: string + example: 0000-0002-1825-0097 + qualified_name: + type: string + example: Josiah Carberry — @jcarberry + given_name: + type: string + example: Josiah + family_name: + type: string + example: Carberry + TupleDto: + required: + - data + type: object + properties: + data: + type: object + additionalProperties: + type: object + ImportDto: + required: + - header + - location + - separator + type: object + properties: + location: + type: string + example: file.csv + header: + type: boolean + description: "If true, the first line contains the column names, otherwise\ + \ it contains only data" + separator: + type: string + example: "," + quote: + type: string + example: '"' + line_termination: + type: string + example: \r\n + ExecuteStatementDto: + required: + - statement + type: object + properties: + statement: + type: string + example: SELECT `id` FROM `air_quality` + TableHistoryDto: + required: + - event + - timestamp + - total + type: object + properties: + timestamp: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + event: + type: string + total: + type: integer + format: int64 + example: 1 + TupleDeleteDto: + required: + - keys + type: object + properties: + keys: + type: object + additionalProperties: + type: object + securitySchemes: + basicAuth: + type: http + scheme: basic + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/.docs/.openapi/api-metadata.yaml b/.docs/.openapi/api-metadata.yaml new file mode 100644 index 0000000000..5578822fb4 --- /dev/null +++ b/.docs/.openapi/api-metadata.yaml @@ -0,0 +1,7043 @@ +openapi: 3.0.1 +info: + title: Database Repository Metadata Service API + description: Service that manages the metadata + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.6.2 +externalDocs: + description: Sourcecode Documentation + url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6.2/system-services-metadata/ +servers: +- url: http://localhost + description: Development instance +- url: https://test.dbrepo.tuwien.ac.at + description: Staging instance +paths: + /api/database: + get: + tags: + - database-endpoint + summary: List databases + description: "Lists all databases in the metadata database. Requests with HTTP\ + \ method **GET** return the list of databases, requests with HTTP method **HEAD**\ + \ only the number in the `X-Count` header." + operationId: list + parameters: + - name: internal_name + in: query + required: false + schema: + type: string + responses: + "200": + description: List of databases + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of databases + required: true + style: simple + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DatabaseBriefDto" + post: + tags: + - database-endpoint + summary: Create database + description: Creates a database in the container with id. Requires roles `create-database`. + operationId: create_5 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseCreateDto" + required: true + responses: + "409": + description: Query store could not be created + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Database create query is malformed or image is not supported + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "423": + description: Database quota exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Database create permission is missing or grant permissions + at broker service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to fin container/user/database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new database + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + head: + tags: + - database-endpoint + summary: List databases + description: "Lists all databases in the metadata database. Requests with HTTP\ + \ method **GET** return the list of databases, requests with HTTP method **HEAD**\ + \ only the number in the `X-Count` header." + operationId: list_1 + parameters: + - name: internal_name + in: query + required: false + schema: + type: string + responses: + "200": + description: List of databases + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of databases + required: true + style: simple + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DatabaseBriefDto" + /api/database/{databaseId}/access/{userId}: + get: + tags: + - access-endpoint + summary: Find/Check access + description: "Finds or checks access of a user with given id to a database with\ + \ given id. Requests with HTTP method **GET** return the access object, requests\ + \ with HTTP method **HEAD** only the status. When the user has at least *READ*\ + \ access, the status 200 is returned, 403 otherwise. Requires role `check-database-access`\ + \ or `check-foreign-database-access`." + operationId: find + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - access-endpoint + summary: Modify access + description: Modifies access of a user with given id to database with given + id. Requires role `update-database-access`. + operationId: update_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateDatabaseAccessDto" + required: true + responses: + "404": + description: Database or user not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Modify access not permitted when no access is granted in the + first place + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be updated in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modified access + "502": + description: Access could not be updated due to connection error in the + data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - access-endpoint + summary: Give access + description: Give a user with given id access to some database with given id. + Requires role `create-database-access`. + operationId: create_8 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateDatabaseAccessDto" + required: true + responses: + "404": + description: Database or user not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be created in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Failed giving access + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Granting access succeeded + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + "400": + description: Granting access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Access could not be created due to connection error + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - access-endpoint + summary: Delete access + description: Delete access of a user with id to a database with id. Requires + role `delete-database-access`. + operationId: revoke + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: Revoke of access not permitted as no access was found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted access + "502": + description: Access could not be created due to connection error + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "User, database with access was not found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be revoked in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + head: + tags: + - access-endpoint + summary: Find/Check access + description: "Finds or checks access of a user with given id to a database with\ + \ given id. Requests with HTTP method **GET** return the access object, requests\ + \ with HTTP method **HEAD** only the status. When the user has at least *READ*\ + \ access, the status 200 is returned, 403 otherwise. Requires role `check-database-access`\ + \ or `check-foreign-database-access`." + operationId: find_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/{userId}: + get: + tags: + - user-endpoint + summary: Get user + description: Gets own user information from the metadata database. Requires + authentication. Foreign user information can only be obtained if additional + role `find-foreign-user` is present. Finding information about internal users + results in a 404 error. + operationId: find_2 + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "404": + description: User was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found user + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "403": + description: Find user is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - user-endpoint + summary: Update user + description: Updates user with id. Requires role `modify-user-information`. + operationId: modify + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserUpdateDto" + required: true + responses: + "202": + description: Modified user information + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "404": + description: Failed to find database/user in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify user query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to modify user metadata + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/{userId}/password: + put: + tags: + - user-endpoint + summary: Update user password + description: Updates password of user with id. Requires authentication. + operationId: password + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserPasswordDto" + required: true + responses: + "400": + description: Invalid password payload + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modified user password + "403": + description: Not allowed to change foreign user password + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to get user in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/user in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/token: + put: + tags: + - user-endpoint + summary: Refresh token + description: Refreshes user token by refresh token. + operationId: refreshToken + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RefreshTokenRequestDto" + required: true + responses: + "202": + description: Refreshed user token + content: + application/json: + schema: + $ref: "#/components/schemas/TokenDto" + "403": + description: Not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid refresh token + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + post: + tags: + - user-endpoint + summary: Create token + description: Creates a user token via the Auth Service. + operationId: getToken + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LoginRequestDto" + required: true + responses: + "400": + description: Invalid login request + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to get token + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find user in auth database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to get user in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Obtained user token + content: + application/json: + schema: + $ref: "#/components/schemas/TokenDto" + "428": + description: Account is not fully setup in auth service (requires password + change?) + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/ontology/{ontologyId}: + get: + tags: + - ontology-endpoint + summary: Find ontology + description: Finds an ontology with id in the metadata database. + operationId: find_3 + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Find one ontology + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + put: + tags: + - ontology-endpoint + summary: Update ontology + description: Updates an ontology with id. Requires role `update-ontology`. + operationId: update + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyModifyDto" + required: true + responses: + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated ontology successfully + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - ontology-endpoint + summary: Delete ontology + description: Deletes an ontology with given id. Requires role `delete-ontology`. + operationId: delete + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "202": + description: Deleted ontology successfully + content: + application/json: {} + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/message/{messageId}: + put: + tags: + - message-endpoint + summary: Update message + description: Updates a message with id. Requires role `update-maintenance-message`. + operationId: update_1 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageUpdateDto" + required: true + responses: + "202": + description: Updated message + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageBriefDto" + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - message-endpoint + summary: Delete message + description: Deletes a message with id. Requires role `delete-maintenance-message`. + operationId: delete_1 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted message + content: + application/json: {} + security: + - bearerAuth: [] + - basicAuth: [] + /api/image/{imageId}: + get: + tags: + - image-endpoint + summary: Find image + description: Finds a container image in the metadata database. + operationId: findById + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found image + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + put: + tags: + - image-endpoint + summary: Update image + description: Updates container image in the metadata database. Requires role + `modify-image`. + operationId: update_2 + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ImageChangeDto" + required: true + responses: + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated image successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - image-endpoint + summary: Delete image + description: Deletes a container image in the metadata database. Requires role + `delete-image`. + operationId: delete_2 + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "202": + description: Deleted image successfully + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier/{identifierId}: + get: + tags: + - identifier-endpoint + summary: Find identifier + description: Finds an identifier with id. The response format depends on the + HTTP `Accept` header set on the request. + operationId: find_6 + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + - name: Accept + in: header + required: true + schema: + type: string + responses: + "200": + description: Found identifier successfully + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + application/ld+json: + schema: + $ref: "#/components/schemas/LdDatasetDto" + text/csv: {} + text/xml: {} + text/bibliography: {} + text/bibliography; style=apa: {} + text/bibliography; style=ieee: {} + text/bibliography; style=bibtex: {} + "502": + description: Connection to data service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Exported resource was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "410": + description: Failed to retrieve from S3 endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Identifier could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "406": + description: Failed to find acceptable representation + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to find in data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + put: + tags: + - identifier-endpoint + summary: Save identifier + description: Saves an identifier with id as a draft identifier. Identifiers + can only be created for objects the user has at least *READ* access in the + associated database (requires role `create-identifier`) or for any object + in any database (requires role `create-foreign-identifier`). + operationId: save + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierSaveDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Saved identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - identifier-endpoint + summary: Delete identifier + description: Deletes an identifier with id. Requires role `delete-identifier`. + operationId: delete_3 + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to delete in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Identifier or database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted identifier + "403": + description: Deleting identifier not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier/{identifierId}/publish: + put: + tags: + - identifier-endpoint + summary: Publish identifier + description: Publishes an identifier with id. A published identifier cannot + be changed anymore. Requires role `publish-identifier`. + operationId: publish + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Published identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/visibility: + put: + tags: + - database-endpoint + summary: Update database visibility + description: Updates the database with id on the visibility. Only the database + owner can perform this operation. Requires role `modify-database-visibility`. + operationId: visibility + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseModifyVisibilityDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Visibility modified successfully + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "400": + description: The visibility payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Visibility modification is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/view/{viewId}: + get: + tags: + - view-endpoint + summary: Get view + description: Gets a view with id in the metadata database. + operationId: find_7 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: Find view is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Find view successfully + headers: + X-Username: + description: The authentication username + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Type: + description: The JDBC connection type + style: simple + X-View: + description: The view internal name + style: simple + X-Database: + description: The database internal name + style: simple + X-Password: + description: The authentication password + style: simple + X-Host: + description: The database hostname + style: simple + X-Port: + description: The database port number + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/ViewDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - view-endpoint + summary: Update view + description: Updates a view with id. This can only be performed by the view + owner or database owner. Requires role `create-database-view`. + operationId: update_3 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ViewUpdateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or View could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Update not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Update view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Update view successfully + content: + '*/*': + schema: + $ref: "#/components/schemas/ViewDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - view-endpoint + summary: Delete view + description: Deletes a view with id. Requires role `delete-database-view`. + operationId: delete_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "423": + description: Delete view resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Delete view successfully + content: + '*/*': + schema: + type: object + "400": + description: Delete view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Deletion not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}: + get: + tags: + - table-endpoint + summary: Find table + description: "Finds a table with id. When a table is hidden (i.e. when `is_public`\ + \ is `false`), then the user needs to have at least read access and the role\ + \ `find-table`. When the `system` role is present, the endpoint responds with\ + \ additional connection metadata in the header." + operationId: findById_2 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Find table successfully + headers: + X-Username: + description: The authentication username + style: simple + X-Table: + description: The table internal name + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Type: + description: The JDBC connection type + style: simple + X-Database: + description: The database internal name + style: simple + X-Password: + description: The authentication password + style: simple + X-Host: + description: The database hostname + style: simple + X-Port: + description: The database port number + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/TableDto" + "503": + description: Failed to obtain queue information from broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Failed to establish connection with broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Table, database or container could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - table-endpoint + summary: Update table + description: Updates a table in the database with id. Requires role `update-table`. + operationId: update_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TableUpdateDto" + required: true + responses: + "403": + description: Update table visibility not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Table could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated the table + content: + application/json: + schema: + $ref: "#/components/schemas/TableBriefDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Update table visibility payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - table-endpoint + summary: Delete table + description: Deletes a table with id. Only the owner of a table can perform + this action (requires role `delete-table`) or anyone can delete a table (requires + role `delete-foreign-table`). + operationId: delete_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Delete table successfully + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Delete table query resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Table, database or container could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/statistic: + put: + tags: + - table-endpoint + summary: Update statistics + description: "Updates basic statistical properties (min, max, mean, median,\ + \ std.dev) for numerical columns in a table with id. This action can only\ + \ be performed by the table owner. Requires role `update-table-statistic`." + operationId: updateStatistic + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Failed to map column statistic to known columns + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not the owner + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated table statistics successfully + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/column/{columnId}: + put: + tags: + - table-endpoint + summary: Update semantics + description: Updates column semantics of a table column with id. Only the table + owner with at least *READ* access to the associated database can update the + column semantics (requires role `modify-table-column-semantics`) or foreign + table columns if role `modify-foreign-table-column-semantics`. + operationId: updateColumn + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: columnId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ColumnSemanticsUpdateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find user/table/database/ontology in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated column semantics successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ColumnDto" + "400": + description: Update semantic concept query is malformed or update unit of + measurement query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/owner: + put: + tags: + - database-endpoint + summary: Update database owner + description: Updates the database with id on the owner. Only the database owner + can perform this operation. Requires role `modify-database-owner`. + operationId: transfer + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseTransferDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Transfer of ownership was successful + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Transfer of ownership is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Owner payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/metadata/view: + put: + tags: + - database-endpoint + summary: Update database view schemas + description: Updates the database with id with generated metadata from view + that are not yet known to the database. Only the database owner can perform + this operation. Requires role `find-database`. + operationId: refreshViewMetadata + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Refreshed database views metadata + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Refresh view metadata is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/metadata/table: + put: + tags: + - database-endpoint + summary: Update database table schemas + description: Updates the database with id with generated metadata from tables + that are not yet known to the database. Only the database owner can perform + this operation. Requires role `find-database`. + operationId: refreshTableMetadata + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: Not allowed to refresh table metadata + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to fin user/database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Refreshed database tables metadata + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "400": + description: Failed to parse payload at search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/image: + get: + tags: + - database-endpoint + summary: Get database preview image + description: Gets the database with id on the preview image. + operationId: findPreviewImage + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: View of image was successful + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - database-endpoint + summary: Update database preview image + description: Updates the database with id on the preview image. Only the database + owner can perform this operation. Requires role `modify-database-image`. + operationId: modifyImage + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseModifyImageDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modify of image was successful + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "410": + description: File was not found in the Storage Service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Modify of image is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user: + get: + tags: + - user-endpoint + summary: List users + description: "Lists users known to the metadata database. Internal users are\ + \ omitted from the result list. If the optional query parameter `username`\ + \ is present, the result list can be filtered by matching this exact username." + operationId: findAll + parameters: + - name: username + in: query + required: false + schema: + type: string + responses: + "200": + description: List users + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/UserBriefDto" + post: + tags: + - user-endpoint + summary: Create user + description: Creates a user in the auth service and metadata database. Requires + that no credentials are sent in the request. + operationId: create + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SignupRequestDto" + required: true + responses: + "403": + description: Internal authentication to the auth service is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Parameters are not well-formed (likely email) + content: + application/json: {} + "409": + description: User with username already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: User with e-mail already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to create in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created user + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "502": + description: Failed to create in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Default role not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/ontology: + get: + tags: + - ontology-endpoint + summary: List ontologies + description: Lists all ontologies known to the metadata database. + operationId: findAll_2 + responses: + "200": + description: List ontologies + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/OntologyBriefDto" + post: + tags: + - ontology-endpoint + summary: Create ontology + description: Creates an ontology in the metadata database. Requires role `create-ontology`. + operationId: create_1 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyCreateDto" + required: true + responses: + "201": + description: Registered ontology successfully + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/message: + get: + tags: + - message-endpoint + summary: List messages + description: "Lists messages known to the metadata database. Messages can be\ + \ filtered be filtered with the optional `active` parameter. If set to *true*,\ + \ only active messages (that is, messages whose end time has not been reached)\ + \ will be returned. Otherwise only inactive messages are returned. If not\ + \ set, active and inactive messages are returned." + operationId: list_2 + parameters: + - name: active + in: query + required: false + schema: + type: boolean + responses: + "200": + description: List messages + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/BannerMessageDto" + post: + tags: + - message-endpoint + summary: Create message + description: Creates a message in the metadata database. Requires role `create-maintenance-message`. + operationId: create_2 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageCreateDto" + required: true + responses: + "201": + description: Created message + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/image: + get: + tags: + - image-endpoint + summary: List images + description: Lists all container images known to the metadata database. + operationId: findAll_3 + responses: + "200": + description: List images + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ImageBriefDto" + post: + tags: + - image-endpoint + summary: Create image + description: Creates a container image in the metadata database. Requires role + `create-image`. + operationId: create_3 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ImageCreateDto" + required: true + responses: + "409": + description: Image already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Image specification is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created image + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier: + get: + tags: + - identifier-endpoint + summary: List identifiers + description: Lists all identifiers known to the metadata database + operationId: findAll_4 + parameters: + - name: dbid + in: query + required: false + schema: + type: integer + format: int64 + - name: qid + in: query + required: false + schema: + type: integer + format: int64 + - name: vid + in: query + required: false + schema: + type: integer + format: int64 + - name: tid + in: query + required: false + schema: + type: integer + format: int64 + - name: Accept + in: header + required: true + schema: + type: string + responses: + "200": + description: Found identifiers successfully + content: + application/json: + schema: + type: array + items: + type: string + application/ld+json: + schema: + type: array + items: + $ref: "#/components/schemas/LdDatasetDto" + "406": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + post: + tags: + - identifier-endpoint + summary: Create identifier + description: Create an identifier with id to create a draft identifier. Identifiers + can only be created for objects the user has at least *READ* access in the + associated database (requires role `create-identifier`) or for any object + in any database (requires role `create-foreign-identifier`). + operationId: create_4 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierCreateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Drafted identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/view: + get: + tags: + - view-endpoint + summary: List views + description: Lists views known to the metadata database. + operationId: findAll_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Find views successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ViewBriefDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - view-endpoint + summary: Create view + description: Creates a view. This can only be performed by the database owner. + Requires role `create-database-view`. + operationId: create_6 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ViewCreateDto" + required: true + responses: + "423": + description: Create view resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Create view successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ViewBriefDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Credentials missing + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/user in metadata database. + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Create view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table: + get: + tags: + - table-endpoint + summary: List tables + description: "Lists all tables known to the metadata database. When a database\ + \ has a hidden schema (i.e. when `is_schema_public` is `false`), then the\ + \ user needs to have at least read access and the role `list-tables`." + operationId: list_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: List tables not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: List tables + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - table-endpoint + summary: Create table + description: Creates a table in the database with id. Requires role `create-table`. + operationId: create_7 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TableCreateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Create table not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new table + content: + application/json: + schema: + $ref: "#/components/schemas/TableBriefDto" + "409": + description: Create table conflicts with existing table name + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, container or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Create table query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/container: + get: + tags: + - container-endpoint + summary: List containers + description: List all containers in the metadata database. + operationId: findAll_6 + parameters: + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + responses: + "200": + description: List containers + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ContainerBriefDto" + post: + tags: + - container-endpoint + summary: Create container + description: Creates a container in the metadata database. Requires role `create-container`. + operationId: create_9 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerCreateDto" + required: true + responses: + "400": + description: Container payload malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Container image or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Container name already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "403": + description: "Create container not permitted, need authority `create-container`" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/unit: + get: + tags: + - unit-endpoint + summary: List units + description: Lists units known to the metadata database. + operationId: findAll_1 + responses: + "200": + description: Find all semantic units + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/UnitDto" + /api/ontology/{ontologyId}/entity: + get: + tags: + - ontology-endpoint + summary: Find entities + description: Finds semantic entities by label or uri in an ontology with id. + Requires role `execute-semantic-query`. + operationId: find_4 + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + - name: label + in: query + required: false + schema: + type: string + - name: uri + in: query + required: false + schema: + type: string + responses: + "400": + description: Filter params are invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found entities + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: Generated query or uri is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/oai: + get: + tags: + - metadata-endpoint + summary: Get record + operationId: identify_1_1_1_1 + parameters: + - name: verb + in: query + - name: parameters + in: query + required: true + schema: + $ref: "#/components/schemas/OaiListIdentifiersParameters" + responses: + "200": + description: List containers + content: + text/xml: {} + /api/message/message/{messageId}: + get: + tags: + - message-endpoint + summary: Find message + description: Finds a message with id in the metadata database. + operationId: find_5 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Get messages + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageDto" + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/license: + get: + tags: + - license-endpoint + summary: List licenses + description: Lists licenses known to the metadata database. + operationId: list_3 + responses: + "200": + description: List of licenses + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + /api/identifier/retrieve: + get: + tags: + - identifier-endpoint + summary: Retrieve PID metadata + description: "Retrieves Persistent Identifier (PID) metadata from external endpoints.\ + \ Supported PIDs are: ORCID, ROR, DOI." + operationId: retrieve + parameters: + - name: url + in: query + required: true + schema: + type: string + responses: + "200": + description: Retrieved metadata from identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "404": + description: Failed to find metadata for identifier + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/database/{databaseId}: + get: + tags: + - database-endpoint + summary: Find database + description: Finds a database with id. + operationId: findById_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "503": + description: Failed to find queue information in broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to the broker service could not be established + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Database found successfully + headers: + X-Username: + description: The authentication username + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Password: + description: The authentication password + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Not allowed to view database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, user or exchange could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/suggest: + get: + tags: + - table-endpoint + summary: Suggest semantics + description: Suggests semantic concepts for a table. This action can only be + performed by the table owner. Requires role `table-semantic-analyse`. + operationId: analyseTable + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "417": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Failed to parse statistic in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not the table owner. + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Suggested table semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/column/{columnId}/suggest: + get: + tags: + - table-endpoint + summary: Suggest semantics + description: Suggests column semantics. Requires role `table-semantic-analyse`. + operationId: analyseTableColumn + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: columnId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Suggested table column semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableColumnEntityDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/container/{containerId}: + get: + tags: + - container-endpoint + summary: Find container + description: Finds a container in the metadata database. + operationId: findById_3 + parameters: + - name: containerId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Found container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "404": + description: Container image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + delete: + tags: + - container-endpoint + summary: Delete container + description: Deletes a container in the metadata database. Requires role `delete-container`. + operationId: delete_6 + parameters: + - name: containerId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Container not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted container + "403": + description: "Create container not permitted, need authority `delete-container`" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/concept: + get: + tags: + - concept-endpoint + summary: List concepts + description: List all semantic concepts known to the metadata database + operationId: findAll_7 + responses: + "200": + description: List concepts + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConceptDto" +components: + schemas: + DatabaseBriefDto: + required: + - contact + - id + - internal_name + - is_public + - is_schema_public + - name + - owner_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierBriefDto" + contact: + $ref: "#/components/schemas/UserBriefDto" + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + owner_id: + type: string + format: uuid + preview_image: + type: string + IdentifierBriefDto: + required: + - created_by + - database_id + - id + - publication_year + - publisher + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierTitleDto" + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + status: + type: string + enum: + - draft + - published + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + view_id: + type: integer + format: int64 + example: 1 + publication_year: + type: integer + format: int32 + example: 2022 + created_by: + type: string + format: uuid + IdentifierTitleDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + title: + type: string + example: Airquality Demonstrator + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + enum: + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + UserBriefDto: + required: + - id + - username + type: object + properties: + id: + type: string + format: uuid + example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 + username: + type: string + description: Only contains lowercase characters + example: jcarberry + name: + type: string + example: Josiah Carberry + orcid: + type: string + example: 0000-0002-1825-0097 + qualified_name: + type: string + example: Josiah Carberry — @jcarberry + given_name: + type: string + example: Josiah + family_name: + type: string + example: Carberry + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + example: NOT_FOUND + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 EARLY_HINTS + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + example: Error message + code: + type: string + example: error.service.code + DatabaseAccessDto: + required: + - type + - user + type: object + properties: + user: + $ref: "#/components/schemas/UserBriefDto" + type: + type: string + enum: + - read + - write_own + - write_all + UserUpdateDto: + required: + - language + - theme + type: object + properties: + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Brown University + orcid: + type: string + example: 0000-0002-1825-0097 + theme: + type: string + example: dark + language: + type: string + example: en + UserAttributesDto: + required: + - language + - theme + type: object + properties: + theme: + type: string + example: light + orcid: + type: string + example: https://orcid.org/0000-0002-1825-0097 + affiliation: + type: string + example: Brown University + language: + type: string + example: en + UserDto: + required: + - attributes + - id + type: object + properties: + id: + type: string + format: uuid + example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 + name: + type: string + example: Josiah Carberry + attributes: + $ref: "#/components/schemas/UserAttributesDto" + last_retrieved: + type: string + format: date-time + qualified_name: + type: string + example: Josiah Carberry — @jcarberry + given_name: + type: string + example: Josiah + family_name: + type: string + example: Carberry + UserPasswordDto: + required: + - password + type: object + properties: + password: + type: string + RefreshTokenRequestDto: + required: + - refresh_token + type: object + properties: + refresh_token: + type: string + example: refresh_token + TokenDto: + required: + - access_token + - expires_in + - id_token + - not-before-policy + - refresh_expires_in + - refresh_token + - scope + - session_state + - token_type + type: object + properties: + scope: + type: string + access_token: + type: string + expires_in: + type: integer + format: int64 + refresh_token: + type: string + refresh_expires_in: + type: integer + format: int64 + id_token: + type: string + session_state: + type: string + token_type: + type: string + not-before-policy: + type: integer + format: int64 + OntologyModifyDto: + required: + - prefix + - uri + type: object + properties: + uri: + type: string + example: Ontology URI + prefix: + type: string + example: Ontology prefix + sparql_endpoint: + type: string + example: Ontology SPARQL endpoint + rdf_path: + type: string + example: rdf/om-2.0.rdf + OntologyDto: + required: + - id + - prefix + - rdf + - sparql + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + example: http://www.wikidata.org/ + prefix: + type: string + example: wd + sparql: + type: boolean + example: true + rdf: + type: boolean + example: false + uri_pattern: + type: string + example: http://www.wikidata.org/entity/.* + sparql_endpoint: + type: string + example: https://query.wikidata.org/sparql + rdf_path: + type: string + example: rdf/om-2.0.rdf + BannerMessageUpdateDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + BannerMessageBriefDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + ImageChangeDto: + required: + - dialect + - driver_class + - jdbc_method + - registry + type: object + properties: + registry: + type: string + example: docker.io/library + defaultPort: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + example: 5432 + dialect: + type: string + example: Postgres + driver_class: + type: string + example: org.postgresql.Driver + jdbc_method: + type: string + example: postgresql + DataTypeDto: + required: + - display_name + - documentation + - is_buildable + - is_quoted + - value + type: object + properties: + value: + type: string + example: time + documentation: + type: string + example: https://mariadb.com/kb/en/time/ + display_name: + type: string + example: TIME(fsp) + size_min: + type: integer + format: int32 + example: 0 + size_max: + type: integer + format: int32 + example: 6 + size_default: + type: integer + format: int32 + example: 0 + size_required: + type: boolean + example: false + d_min: + type: integer + format: int32 + d_max: + type: integer + format: int32 + d_default: + type: integer + format: int32 + d_required: + type: boolean + data_hint: + type: string + example: "e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S" + type_hint: + type: string + example: "fsp=microsecond precision, min. 0, max. 6" + is_quoted: + type: boolean + description: frontend needs to quote this data type + example: false + is_buildable: + type: boolean + description: frontend can build this data type + example: true + ImageDto: + required: + - data_types + - default + - default_port + - dialect + - driver_class + - id + - jdbc_method + - name + - operators + - registry + - version + type: object + properties: + id: + type: integer + format: int64 + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + dialect: + type: string + example: org.hibernate.dialect.MariaDBDialect + operators: + type: array + items: + $ref: "#/components/schemas/OperatorDto" + driver_class: + type: string + example: org.mariadb.jdbc.Driver + jdbc_method: + type: string + example: mariadb + default: + type: boolean + example: false + default_port: + type: integer + format: int32 + example: 3306 + data_types: + type: array + items: + $ref: "#/components/schemas/DataTypeDto" + OperatorDto: + required: + - display_name + - documentation + - value + type: object + properties: + id: + type: integer + format: int64 + value: + type: string + example: XOR + documentation: + type: string + example: https://mariadb.com/kb/en/xor/ + display_name: + type: string + example: XOR + CreatorSaveDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Wesleyan University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/04d836q62 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + IdentifierFunderSaveDto: + required: + - funder_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + IdentifierSaveDescriptionDto: + required: + - description + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + IdentifierSaveDto: + required: + - creators + - database_id + - id + - publication_year + - publisher + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + example: 1 + type: + type: string + example: database + enum: + - database + - subset + - table + - view + doi: + type: string + example: 10.1111/11111111 + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderSaveDto" + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + publisher: + type: string + example: TU Wien + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + creators: + type: array + items: + $ref: "#/components/schemas/CreatorSaveDto" + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierSaveDto" + IdentifierSaveTitleDto: + required: + - id + - title + type: object + properties: + id: + type: integer + format: int64 + example: 1 + title: + type: string + example: Airquality Demonstrator + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Subtitle + enum: + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + LicenseDto: + required: + - identifier + - uri + type: object + properties: + identifier: + type: string + example: MIT + uri: + type: string + example: https://opensource.org/licenses/MIT + description: + type: string + example: "A short and simple permissive license with conditions only requiring\ + \ preservation of copyright and license notices. Licensed works, modifications,\ + \ and larger works may be distributed under different terms and without\ + \ source code." + RelatedIdentifierSaveDto: + required: + - id + - relation + - type + - value + type: object + properties: + id: + type: integer + format: int64 + example: 1 + value: + type: string + example: 10.70124/dc4zh-9ce78 + type: + type: string + example: DOI + enum: + - DOI + - URL + - URN + - ARK + - arXiv + - bibcode + - EAN13 + - EISSN + - Handle + - IGSN + - ISBN + - ISTC + - LISSN + - LSID + - PMID + - PURL + - UPC + - w3id + relation: + type: string + example: Cites + enum: + - IsCitedBy + - Cites + - IsSupplementTo + - IsSupplementedBy + - IsContinuedBy + - Continues + - IsDescribedBy + - Describes + - HasMetadata + - IsMetadataFor + - HasVersion + - IsVersionOf + - IsNewVersionOf + - IsPreviousVersionOf + - IsPartOf + - HasPart + - IsPublishedIn + - IsReferencedBy + - References + - IsDocumentedBy + - Documents + - IsCompiledBy + - Compiles + - IsVariantFormOf + - IsOriginalFormOf + - IsIdenticalTo + - IsReviewedBy + - Reviews + - IsDerivedFrom + - IsSourceOf + - IsRequiredBy + - Requires + - IsObsoletedBy + - Obsoletes + CreatorDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + name_identifier_scheme_uri: + type: string + example: https://orcid.org/ + affiliation_identifier: + type: string + example: https://ror.org/05gq02987 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + affiliation_identifier_scheme_uri: + type: string + example: https://ror.org/ + IdentifierDescriptionDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + IdentifierDto: + required: + - creators + - database_id + - id + - owner + - publication_year + - publisher + - query + - query_hash + - query_normalized + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderDto" + query: + type: string + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + execution: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + owner: + $ref: "#/components/schemas/UserBriefDto" + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + creators: + type: array + items: + $ref: "#/components/schemas/CreatorDto" + status: + type: string + enum: + - draft + - published + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + view_id: + type: integer + format: int64 + example: 1 + query_normalized: + type: string + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierDto" + query_hash: + type: string + description: query hash in sha512 + result_hash: + type: string + example: 34fe82cda2c53f13f8d90cfd7a3469e3a939ff311add50dce30d9136397bf8e5 + result_number: + type: integer + format: int64 + example: 1 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + IdentifierFunderDto: + required: + - funder_name + - id + type: object + properties: + id: + type: integer + format: int64 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + RelatedIdentifierDto: + required: + - id + - relation + - type + - value + type: object + properties: + id: + type: integer + format: int64 + value: + type: string + example: 10.70124/dc4zh-9ce78 + type: + type: string + example: DOI + enum: + - DOI + - URL + - URN + - ARK + - arXiv + - bibcode + - EAN13 + - EISSN + - Handle + - IGSN + - ISBN + - ISTC + - LISSN + - LSID + - PMID + - PURL + - UPC + - w3id + relation: + type: string + example: Cites + enum: + - IsCitedBy + - Cites + - IsSupplementTo + - IsSupplementedBy + - IsContinuedBy + - Continues + - IsDescribedBy + - Describes + - HasMetadata + - IsMetadataFor + - HasVersion + - IsVersionOf + - IsNewVersionOf + - IsPreviousVersionOf + - IsPartOf + - HasPart + - IsPublishedIn + - IsReferencedBy + - References + - IsDocumentedBy + - Documents + - IsCompiledBy + - Compiles + - IsVariantFormOf + - IsOriginalFormOf + - IsIdenticalTo + - IsReviewedBy + - Reviews + - IsDerivedFrom + - IsSourceOf + - IsRequiredBy + - Requires + - IsObsoletedBy + - Obsoletes + DatabaseModifyVisibilityDto: + required: + - is_public + - is_schema_public + type: object + properties: + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewUpdateDto: + required: + - is_public + - is_schema_public + type: object + properties: + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewColumnDto: + required: + - auto_generated + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - type + type: object + properties: + id: + type: integer + format: int64 + name: + maxLength: 64 + minLength: 0 + type: string + example: Date + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + database_id: + type: integer + format: int64 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: mdb_date + auto_generated: + type: boolean + example: false + index_length: + type: integer + format: int64 + length: + type: integer + format: int64 + type: + type: string + example: string + 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 + is_null_allowed: + type: boolean + example: false + ViewDto: + required: + - columns + - database_id + - id + - internal_name + - name + - owner + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + owner: + $ref: "#/components/schemas/UserBriefDto" + columns: + type: array + items: + $ref: "#/components/schemas/ViewColumnDto" + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + TableUpdateDto: + required: + - is_public + - is_schema_public + type: object + properties: + description: + maxLength: 180 + minLength: 0 + type: string + example: Air Quality in Austria + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + TableBriefDto: + required: + - database_id + - id + - internal_name + - is_public + - is_schema_public + - is_versioned + - name + - owned_by + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality in Austria + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_versioned: + type: boolean + example: true + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + owned_by: + type: string + format: uuid + ColumnSemanticsUpdateDto: + type: object + properties: + concept_uri: + type: string + unit_uri: + type: string + ColumnDto: + required: + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - table_id + - type + type: object + properties: + id: + type: integer + format: int64 + example: 1 + name: + maxLength: 64 + minLength: 0 + type: string + example: Given Name + alias: + type: string + example: firstname + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + mean: + type: number + example: 45.4 + median: + type: number + example: 51 + concept: + $ref: "#/components/schemas/ConceptBriefDto" + unit: + $ref: "#/components/schemas/UnitBriefDto" + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + enums: + type: array + items: + type: string + sets: + type: array + items: + type: string + database_id: + type: integer + format: int64 + example: 2 + table_id: + type: integer + format: int64 + example: 3 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: given_name + index_length: + type: integer + format: int64 + example: 255 + length: + type: integer + format: int64 + example: 255 + type: + type: string + example: varchar + 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 + data_length: + type: integer + format: int64 + example: 34300 + max_data_length: + type: integer + format: int64 + example: 34300 + num_rows: + type: integer + format: int64 + example: 32 + val_min: + type: number + example: 0 + val_max: + type: number + example: 100 + std_dev: + type: number + example: 5.32 + is_null_allowed: + type: boolean + example: false + ConceptBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 23 + uri: + type: string + example: http://www.wikidata.org/entity/Q202444 + name: + type: string + example: given name + description: + type: string + example: "name typically used to differentiate people from the same family,\ + \ clan, or other social group who have a common last name" + UnitBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 34 + uri: + type: string + example: http://www.wikidata.org/entity/Q1422583 + name: + type: string + example: importance + description: + type: string + example: "subjective magnitude of value, meaning, or purpose" + DatabaseTransferDto: + required: + - id + type: object + properties: + id: + type: string + format: uuid + DatabaseModifyImageDto: + type: object + properties: + key: + type: string + UpdateDatabaseAccessDto: + required: + - type + type: object + properties: + type: + type: string + enum: + - read + - write_own + - write_all + SignupRequestDto: + required: + - email + - password + - username + type: object + properties: + username: + pattern: "^[a-z0-9]{3,}$" + type: string + example: user + email: + type: string + example: user@example.com + password: + type: string + LoginRequestDto: + required: + - password + - username + type: object + properties: + username: + type: string + example: user + password: + type: string + OntologyCreateDto: + required: + - prefix + - uri + type: object + properties: + uri: + type: string + example: Ontology URI + prefix: + type: string + example: Ontology prefix + sparql_endpoint: + type: string + example: Ontology SPARQL endpoint + BannerMessageCreateDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageCreateDto: + required: + - default_port + - dialect + - driver_class + - is_default + - jdbc_method + - name + - registry + - version + type: object + properties: + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + dialect: + type: string + is_default: + type: boolean + example: false + driver_class: + type: string + jdbc_method: + type: string + default_port: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + IdentifierCreateDto: + required: + - creators + - database_id + - publication_year + - publisher + - titles + - type + type: object + properties: + type: + type: string + example: database + enum: + - database + - subset + - table + - view + doi: + type: string + example: 10.1111/11111111 + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderSaveDto" + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + publisher: + type: string + example: TU Wien + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + creators: + type: array + items: + $ref: "#/components/schemas/CreatorSaveDto" + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierSaveDto" + DatabaseCreateDto: + required: + - container_id + - is_public + - is_schema_public + - name + type: object + properties: + name: + type: string + example: Air Quality + container_id: + type: integer + format: int64 + example: 1 + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewCreateDto: + required: + - is_public + - is_schema_public + - name + - query + type: object + properties: + name: + maxLength: 63 + minLength: 1 + type: string + example: Air Quality + query: + type: string + example: SELECT `id` FROM `air_quality` + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewBriefDto: + required: + - database_id + - id + - internal_name + - name + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + owned_by: + type: string + format: uuid + ColumnCreateDto: + required: + - name + - null_allowed + - type + type: object + properties: + name: + type: string + example: Date + type: + type: string + example: string + 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 + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Formatted as YYYY-MM-dd + enums: + type: array + description: "enum values, only considered when type = ENUM" + items: + type: string + description: "enum values, only considered when type = ENUM" + sets: + type: array + description: "set values, only considered when type = SET" + items: + type: string + description: "set values, only considered when type = SET" + index_length: + type: integer + format: int64 + null_allowed: + type: boolean + example: true + concept_uri: + type: string + unit_uri: + type: string + ConstraintsCreateDto: + required: + - checks + - foreign_keys + - primary_key + - uniques + type: object + properties: + uniques: + type: array + items: + type: array + items: + type: string + checks: + uniqueItems: true + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: "#/components/schemas/ForeignKeyCreateDto" + primary_key: + uniqueItems: true + type: array + items: + type: string + ForeignKeyCreateDto: + required: + - columns + - referenced_columns + - referenced_table + type: object + properties: + columns: + type: array + items: + type: string + referenced_table: + type: string + referenced_columns: + type: array + items: + type: string + on_update: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + TableCreateDto: + required: + - columns + - constraints + - is_public + - is_schema_public + - name + type: object + properties: + name: + maxLength: 64 + minLength: 1 + type: string + example: Air Quality + description: + maxLength: 180 + minLength: 0 + type: string + example: Air Quality in Austria + columns: + type: array + items: + $ref: "#/components/schemas/ColumnCreateDto" + constraints: + $ref: "#/components/schemas/ConstraintsCreateDto" + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ContainerCreateDto: + required: + - host + - image_id + - name + - privileged_password + - privileged_username + - quota + type: object + properties: + name: + type: string + example: Air Quality + host: + type: string + description: Hostname of container + port: + type: integer + description: Port of container + format: int32 + quota: + type: integer + format: int64 + example: 50 + image_id: + type: integer + description: Image ID + format: int64 + ui_host: + type: string + ui_port: + type: integer + format: int32 + privileged_username: + type: string + description: Username of privileged user + example: root + privileged_password: + type: string + description: Password of privileged user + ContainerDto: + required: + - count + - id + - image + - internal_name + - name + - quota + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + image: + $ref: "#/components/schemas/ImageDto" + quota: + type: integer + format: int64 + example: 50 + count: + type: integer + format: int64 + example: 10 + last_retrieved: + type: string + format: date-time + internal_name: + type: string + example: data-db + ui_host: + type: string + ui_port: + type: integer + format: int32 + ColumnBriefDto: + required: + - column_type + - database_id + - id + - internal_name + - name + - table_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: date + alias: + type: string + database_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + internal_name: + type: string + example: mdb_date + column_type: + type: string + example: date + 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 + UnitDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: "#/components/schemas/ColumnBriefDto" + OntologyBriefDto: + required: + - id + - prefix + - rdf + - sparql + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + example: http://www.wikidata.org/ + prefix: + type: string + example: wd + sparql: + type: boolean + example: true + rdf: + type: boolean + example: false + uri_pattern: + type: string + example: http://www.wikidata.org/entity/.* + EntityDto: + required: + - label + - uri + type: object + properties: + uri: + type: string + example: https://www.wikidata.org/entity/Q1686799 + label: + type: string + example: Apache Jena + description: + type: string + example: open source semantic web framework for Java + OaiListIdentifiersParameters: + type: object + properties: + metadataPrefix: + type: string + from: + type: string + until: + type: string + set: + type: string + resumptionToken: + type: string + fromDate: + type: string + format: date-time + untilDate: + type: string + format: date-time + parametersString: + type: string + BannerMessageDto: + required: + - id + - message + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageBriefDto: + required: + - default + - id + - jdbc_method + - name + - version + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + jdbc_method: + type: string + example: mariadb + default: + type: boolean + example: false + LdCreatorDto: + required: + - '@type' + - name + type: object + properties: + name: + type: string + sameAs: + type: string + givenName: + type: string + familyName: + type: string + '@type': + type: string + LdDatasetDto: + required: + - '@context' + - '@type' + - citation + - creator + - description + - hasPart + - identifier + - name + - temporalCoverage + - url + - version + type: object + properties: + name: + type: string + description: + type: string + url: + type: string + identifier: + type: array + items: + type: string + license: + type: string + creator: + type: array + items: + $ref: "#/components/schemas/LdCreatorDto" + citation: + type: string + hasPart: + type: array + items: + $ref: "#/components/schemas/LdDatasetDto" + temporalCoverage: + type: string + version: + type: string + format: date-time + '@context': + type: string + '@type': + type: string + ConstraintsDto: + type: object + properties: + uniques: + type: array + items: + $ref: "#/components/schemas/UniqueDto" + checks: + uniqueItems: true + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: "#/components/schemas/ForeignKeyDto" + primary_key: + uniqueItems: true + type: array + items: + $ref: "#/components/schemas/PrimaryKeyDto" + ForeignKeyBriefDto: + type: object + properties: + id: + type: integer + format: int64 + ForeignKeyDto: + required: + - name + - referenced_table + - references + - table + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + references: + type: array + items: + $ref: "#/components/schemas/ForeignKeyReferenceDto" + table: + $ref: "#/components/schemas/TableBriefDto" + referenced_table: + $ref: "#/components/schemas/TableBriefDto" + on_update: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + ForeignKeyReferenceDto: + required: + - column + - foreign_key + - referenced_column + type: object + properties: + id: + type: integer + format: int64 + column: + $ref: "#/components/schemas/ColumnBriefDto" + foreign_key: + $ref: "#/components/schemas/ForeignKeyBriefDto" + referenced_column: + $ref: "#/components/schemas/ColumnBriefDto" + PrimaryKeyDto: + required: + - column + - table + type: object + properties: + id: + type: integer + format: int64 + table: + $ref: "#/components/schemas/TableBriefDto" + column: + $ref: "#/components/schemas/ColumnBriefDto" + TableDto: + required: + - columns + - constraints + - database_id + - id + - internal_name + - is_public + - is_schema_public + - is_versioned + - name + - owner + - queue_name + - routing_key + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + alias: + type: string + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + owner: + $ref: "#/components/schemas/UserBriefDto" + description: + maxLength: 2048 + minLength: 0 + type: string + example: Air Quality in Austria + columns: + type: array + items: + $ref: "#/components/schemas/ColumnDto" + constraints: + $ref: "#/components/schemas/ConstraintsDto" + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_versioned: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + queue_name: + type: string + example: air_quality + queue_type: + type: string + example: quorum + routing_key: + type: string + example: dbrepo.1.2 + is_public: + type: boolean + example: true + num_rows: + type: integer + format: int64 + example: 5 + data_length: + type: integer + description: in bytes + format: int64 + example: 16384 + max_data_length: + type: integer + description: in bytes + format: int64 + example: 0 + avg_row_length: + type: integer + description: in bytes + format: int64 + example: 3276 + UniqueDto: + required: + - columns + - id + - name + - table + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + table: + $ref: "#/components/schemas/TableBriefDto" + columns: + type: array + items: + $ref: "#/components/schemas/ColumnDto" + TableColumnEntityDto: + required: + - column_id + - database_id + - table_id + - uri + type: object + properties: + uri: + type: string + example: https://www.wikidata.org/entity/Q1686799 + label: + type: string + example: Apache Jena + description: + type: string + example: open source semantic web framework for Java + database_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + column_id: + type: integer + format: int64 + example: 1 + ContainerBriefDto: + required: + - count + - hash + - id + - image + - internal_name + - name + - quota + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 + name: + type: string + example: Air Quality + image: + $ref: "#/components/schemas/ImageBriefDto" + quota: + type: integer + format: int32 + example: 50 + count: + type: integer + format: int32 + example: 10 + internal_name: + type: string + example: air-quality + ConceptDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: "#/components/schemas/ColumnBriefDto" + securitySchemes: + basicAuth: + type: http + scheme: basic + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/.docs/.openapi/api-search.yaml b/.docs/.openapi/api-search.yaml new file mode 100644 index 0000000000..c47cbfb649 --- /dev/null +++ b/.docs/.openapi/api-search.yaml @@ -0,0 +1,387 @@ +{ + "components": { + "schemas": { + "IndexDto": { + "properties": { + "results": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "Same as the requested type", + "enum": [ + "database", + "table", + "view", + "column", + "user", + "identifier", + "concept", + "unit" + ], + "type": "string" + } + }, + "required": [ + "results", + "type" + ] + }, + "IndexFieldDto": { + "properties": { + "attr_friendly_name": { + "example": "Name", + "type": "string" + }, + "attr_name": { + "example": "name", + "type": "string" + }, + "type": { + "description": "OpenSearch data types.", + "example": "string", + "type": "string" + } + }, + "required": [ + "attr_name", + "attr_friendly_name", + "type" + ], + "type": "object" + }, + "IndexFieldsDto": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/IndexFieldDto" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" + }, + "SearchRequestDto": { + "properties": { + "field_value_pairs": { + "type": "object" + }, + "search_term": { + "type": "string" + } + }, + "required": [ + "search_term", + "field_value_pairs" + ], + "type": "object" + } + }, + "securitySchemes": { + "basicAuth": { + "in": "header", + "scheme": "basic", + "type": "http" + }, + "bearerAuth": { + "bearerFormat": "JWT", + "in": "header", + "scheme": "bearer", + "type": "http" + } + } + }, + "externalDocs": { + "description": "Sourcecode Documentation", + "url": "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/" + }, + "info": { + "contact": { + "email": "andreas.rauber@tuwien.ac.at", + "name": "Prof. Andreas Rauber" + }, + "description": "Service that searches the search database", + "license": { + "name": "Apache 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + }, + "title": "Database Repository Search Service API", + "version": "1.5" + }, + "openapi": "3.0.0", + "paths": { + "/api/search": { + "get": { + "consumes": [ + "application/json" + ], + "description": "Performs a fuzzy search", + "operationId": "post_fuzzy_search", + "parameters": [ + { + "in": "query", + "name": "q", + "required": true, + "schema": { + "type": "string" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "array" + } + } + }, + "description": "OK, contains the elements formatted as an array of JSON arrays" + }, + "415": { + "description": "Wrong accept type" + } + }, + "summary": "Performs a fuzzy search", + "tags": [ + "search-endpoint" + ] + } + }, + "/api/search/{field_type}": { + "post": { + "consumes": [ + "application/json" + ], + "description": "Performs a general search", + "operationId": "post_general_search", + "parameters": [ + { + "description": "The search type.", + "in": "path", + "name": "type", + "required": true, + "schema": { + "enum": [ + "database", + "table", + "view", + "column", + "user", + "identifier", + "concept", + "unit" + ], + "type": "string" + } + }, + { + "in": "query", + "name": "t1", + "schema": { + "type": "integer" + } + }, + { + "in": "query", + "name": "t2", + "schema": { + "type": "integer" + } + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/components/schemas/SearchRequestDto" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "results": { + "items": { + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "Same as the requested type", + "enum": [ + "database", + "table", + "view", + "column", + "user", + "identifier", + "concept", + "unit" + ], + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "OK, contains the elements formatted as an array of JSON arrays" + } + }, + "summary": "Performs a general search", + "tags": [ + "search-endpoint" + ] + } + }, + "/api/search/{field_type}/fields": { + "get": { + "operationId": "get_fields", + "parameters": [ + { + "description": "The search type.", + "in": "path", + "name": "type", + "required": true, + "schema": { + "enum": [ + "database", + "table", + "view", + "column", + "user", + "identifier", + "concept", + "unit" + ], + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexFieldsDto" + } + } + }, + "description": "List of fields" + }, + "404": { + "description": "Invalid type." + } + }, + "summary": "Get searchable fields", + "tags": [ + "search-endpoint" + ] + } + }, + "/api/search/{index}": { + "get": { + "consumes": [ + "application/json" + ], + "description": "Gets the index", + "operationId": "get_index", + "parameters": [ + { + "description": "The search type.", + "in": "path", + "name": "type", + "required": true, + "schema": { + "enum": [ + "database", + "table", + "view", + "column", + "user", + "identifier", + "concept", + "unit" + ], + "type": "string" + } + }, + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "field_value_pairs": { + "type": "object" + }, + "search_term": { + "example": "air quality", + "type": "string" + }, + "t1": { + "example": 0, + "type": "integer" + }, + "t2": { + "example": 100, + "type": "integer" + } + }, + "type": "object" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexDto" + } + } + }, + "description": "OK, contains the elements formatted as an array of JSON arrays" + } + }, + "summary": "Gets the index", + "tags": [ + "search-endpoint" + ] + } + } + }, + "servers": [ + { + "description": "Generated server url", + "url": "http://localhost:4000" + }, + { + "description": "Sandbox", + "url": "https://test.dbrepo.tuwien.ac.at" + } + ] +} diff --git a/.docs/.swagger/api.base.yaml b/.docs/.openapi/api.base.yaml similarity index 100% rename from .docs/.swagger/api.base.yaml rename to .docs/.openapi/api.base.yaml diff --git a/.docs/.swagger/api.yaml b/.docs/.openapi/api.yaml similarity index 97% rename from .docs/.swagger/api.yaml rename to .docs/.openapi/api.yaml index dc7a627e74..ef55c74ae9 100644 --- a/.docs/.swagger/api.yaml +++ b/.docs/.openapi/api.yaml @@ -432,6 +432,11 @@ paths: schema: type: integer format: int64 + - name: Authorization + in: header + required: true + schema: + type: string requestBody: content: application/json: @@ -490,6 +495,11 @@ paths: schema: type: integer format: int64 + - name: Authorization + in: header + required: true + schema: + type: string requestBody: content: application/json: @@ -550,6 +560,11 @@ paths: schema: type: integer format: int64 + - name: Authorization + in: header + required: true + schema: + type: string requestBody: content: application/json: @@ -937,6 +952,11 @@ paths: schema: type: integer format: int64 + - name: Authorization + in: header + required: true + schema: + type: string requestBody: content: application/json: @@ -979,9 +999,11 @@ paths: - subset-endpoint summary: Find subsets description: >- - Finds subsets in the query store. The result can be optionally filtered - by setting `persisted`. When set to *true*, only persisted queries are - returned, otherwise only non-persisted queries are returned. + Finds subsets in the query store. When the database schema is marked as + hidden, the user needs to be authorized, have at least read-access to + the database. The result can be optionally filtered by setting + `persisted`. When set to *true*, only persisted queries are returned, + otherwise only non-persisted queries are returned. operationId: list parameters: - name: databaseId @@ -1032,8 +1054,10 @@ paths: - subset-endpoint summary: Create subset description: >- - Creates a subset in the query store of the data database. Requires role - `execute-query` for private databases. + Creates a subset in the query store of the data database. Can also be + used without authentication if (and only if) the database is marked as + public (i.e. when `is_public` = `is_schema_public` is set to `true`). + Otherwise at least read access is required. operationId: create parameters: - name: databaseId @@ -1313,9 +1337,11 @@ paths: - subset-endpoint summary: Find subset description: >- - Finds a subset in the data database. Requests with HTTP header - `Accept=application/json` return the metadata, requests with HTTP header - `Accept=text/csv` return the data as downloadable file. + Finds a subset in the data database. When the database schema is marked + as hidden, the user needs to be authorized, have at least read-access to + the database. Requests with HTTP header `Accept=application/json` + return the metadata, requests with HTTP header `Accept=text/csv` return + the data as downloadable file. operationId: findById parameters: - name: databaseId @@ -1330,6 +1356,11 @@ paths: schema: type: integer format: int64 + - name: Accept + in: header + required: true + schema: + type: string - name: timestamp in: query required: false @@ -1412,7 +1443,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' post: tags: - database-endpoint @@ -1433,7 +1464,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '400': description: Database create query is malformed or image is not supported content: @@ -1513,7 +1544,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '/api/database/{databaseId}/access/{userId}': get: tags: @@ -1568,7 +1599,7 @@ paths: description: >- Modifies access of a user with given id to database with given id. Requires role `update-database-access`. - operationId: update_6 + operationId: update_5 parameters: - name: databaseId in: path @@ -1803,7 +1834,11 @@ paths: tags: - user-endpoint summary: Get user - description: Gets user with id from the metadata database. Requires authentication. + description: >- + Gets own user information from the metadata database. Requires + authentication. Foreign user information can only be obtained if + additional role `find-foreign-user` is present. Finding information + about internal users results in a 404 error. operationId: find_2 parameters: - name: userId @@ -1979,7 +2014,7 @@ paths: tags: - user-endpoint summary: Create token - description: Creates a user token via the auth service. + description: Creates a user token via the Auth Service. operationId: getToken requestBody: content: @@ -2544,7 +2579,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '400': description: The visibility payload is malformed content: @@ -2783,8 +2818,10 @@ paths: - table-endpoint summary: Find table description: >- - Finds a table with id. When the `system` role is present, the endpoint - responds with additional connection metadata in the header. + Finds a table with id. When a table is hidden (i.e. when `is_public` is + `false`), then the user needs to have at least read access and the role + `find-table`. When the `system` role is present, the endpoint responds + with additional connection metadata in the header. operationId: findById_2 parameters: - name: databaseId @@ -2988,8 +3025,8 @@ paths: summary: Update statistics description: >- Updates basic statistical properties (min, max, mean, median, std.dev) - for numerical columns in a table with id. Requires role - `update-table-statistic`. + for numerical columns in a table with id. This action can only be + performed by the table owner. Requires role `update-table-statistic`. operationId: updateStatistic parameters: - name: databaseId @@ -3013,6 +3050,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + '403': + description: Not the owner + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' '404': description: Failed to find database/table in metadata database content: @@ -3044,7 +3087,7 @@ paths: with at least *READ* access to the associated database can update the column semantics (requires role `modify-table-column-semantics`) or foreign table columns if role `modify-foreign-table-column-semantics`. - operationId: update_5 + operationId: updateColumn parameters: - name: databaseId in: path @@ -3140,7 +3183,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '400': description: Owner payload is malformed content: @@ -3197,7 +3240,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '403': description: Refresh view metadata is not permitted content: @@ -3248,7 +3291,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '400': description: Failed to parse payload at search service content: @@ -3342,7 +3385,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' '403': description: Modify of image is not permitted content: @@ -3350,7 +3393,7 @@ paths: schema: $ref: '#/components/schemas/ApiErrorDto' '404': - description: Database or user could not be found + description: Database could not be found content: application/json: schema: @@ -3381,7 +3424,11 @@ paths: tags: - user-endpoint summary: List users - description: Lists users known to the metadata database. + description: >- + Lists users known to the metadata database. Internal users are omitted + from the result list. If the optional query parameter `username` is + present, the result list can be filtered by matching this exact + username. operationId: findAll parameters: - name: username @@ -3819,7 +3866,10 @@ paths: tags: - table-endpoint summary: List tables - description: Lists all tables known to the metadata database. + description: >- + Lists all tables known to the metadata database. When a database has a + hidden schema (i.e. when `is_schema_public` is `false`), then the user + needs to have at least read access and the role `list-tables`. operationId: list_4 parameters: - name: databaseId @@ -4186,7 +4236,13 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/DatabaseBriefDto' + '403': + description: Not allowed to view database + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' '404': description: 'Database, user or exchange could not be found' content: @@ -4214,8 +4270,8 @@ paths: - table-endpoint summary: Suggest semantics description: >- - Suggests semantic concepts for a table. Requires role - `table-semantic-analyse`. + Suggests semantic concepts for a table. This action can only be + performed by the table owner. Requires role `table-semantic-analyse`. operationId: analyseTable parameters: - name: databaseId @@ -4245,6 +4301,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + '403': + description: Not the table owner. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' '404': description: Failed to find database/table in metadata database content: @@ -4417,7 +4479,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SearchResultDto' + properties: + id: + type: string + type: array description: 'OK, contains the elements formatted as an array of JSON arrays' '415': description: Wrong accept type @@ -5168,64 +5233,15 @@ components: type: object additionalProperties: type: object - ContainerBriefDto: - required: - - count - - hash - - id - - image - - internal_name - - name - - quota - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - image: - $ref: '#/components/schemas/ImageBriefDto' - quota: - type: integer - format: int32 - example: 50 - count: - type: integer - format: int32 - example: 10 - internal_name: - type: string - example: air-quality - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserBriefDto' - type: - type: string - enum: - - read - - write_own - - write_all - DatabaseDto: + DatabaseBriefDto: required: - contact - - container - - exchange_name - id - internal_name - is_public - is_schema_public - name - - owner + - owner_id type: object properties: id: @@ -5237,153 +5253,40 @@ components: description: type: string example: Air Quality - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - container: - $ref: '#/components/schemas/ContainerBriefDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' identifiers: type: array items: $ref: '#/components/schemas/IdentifierBriefDto' - subsets: - type: array - items: - $ref: '#/components/schemas/IdentifierBriefDto' contact: $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - exchange_name: - type: string - example: dbrepo - exchange_type: - type: string - example: topic - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - preview_image: - type: string - ImageBriefDto: - required: - - default - - id - - jdbc_method - - name - - version - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: mariadb - version: - type: string - example: '10.5' - jdbc_method: - type: string - example: mariadb - default: - type: boolean - example: false - TableBriefDto: - required: - - database_id - - id - - internal_name - - is_public - - is_schema_public - - is_versioned - - name - - owned_by - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - database_id: - type: integer - format: int64 internal_name: type: string example: air_quality - is_versioned: - type: boolean - example: true is_public: type: boolean example: true is_schema_public: type: boolean example: true - owned_by: + owner_id: type: string format: uuid - ViewBriefDto: + preview_image: + type: string + DatabaseAccessDto: required: - - database_id - - id - - internal_name - - name - - query - - query_hash + - type + - user type: object properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - database_id: - type: integer - format: int64 - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - owned_by: + user: + $ref: '#/components/schemas/UserBriefDto' + type: type: string - format: uuid + enum: + - read + - write_own + - write_all UserUpdateDto: required: - language @@ -5430,22 +5333,20 @@ components: required: - attributes - id - - username type: object properties: id: type: string format: uuid example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry name: type: string example: Josiah Carberry attributes: $ref: '#/components/schemas/UserAttributesDto' + last_retrieved: + type: string + format: date-time qualified_name: type: string example: Josiah Carberry — @jcarberry @@ -5747,6 +5648,9 @@ components: - value type: object properties: + id: + type: integer + format: int64 value: type: string example: XOR @@ -6883,10 +6787,8 @@ components: - Other IdentifierDto: required: - - created_by - creators - database_id - - execution - id - owner - publication_year @@ -6936,7 +6838,7 @@ components: type: string example: TU Wien owner: - $ref: '#/components/schemas/UserDto' + $ref: '#/components/schemas/UserBriefDto' language: type: string enum: @@ -7184,9 +7086,6 @@ components: type: integer format: int32 example: 2022 - created_by: - type: string - format: uuid IdentifierFunderDto: required: - funder_name @@ -7318,140 +7217,34 @@ components: is_schema_public: type: boolean example: true - ColumnBriefDto: + ViewColumnDto: required: - - column_type + - auto_generated - database_id - id - internal_name + - is_null_allowed - name - - table_id + - ord + - type type: object properties: id: type: integer format: int64 name: + maxLength: 64 + minLength: 0 type: string - example: date - alias: - type: string - database_id: + example: Date + size: type: integer format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - 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 - ConceptDto: - required: - - columns - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - UnitDto: - required: - - columns - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - ViewColumnDto: - required: - - auto_generated - - column_type - - database_id - - id - - internal_name - - is_null_allowed - - is_public - - name - - ordinal_position - type: object - properties: - id: - type: integer - format: int64 - name: - maxLength: 64 - minLength: 0 - type: string - example: Date - size: - type: integer - format: int64 - example: 255 - d: + example: 255 + d: type: integer format: int64 example: 0 - concept: - $ref: '#/components/schemas/ConceptDto' - unit: - $ref: '#/components/schemas/UnitDto' description: maxLength: 2048 minLength: 0 @@ -7460,7 +7253,7 @@ components: database_id: type: integer format: int64 - ordinal_position: + ord: type: integer format: int32 example: 0 @@ -7478,7 +7271,7 @@ components: length: type: integer format: int64 - column_type: + type: type: string example: string enum: @@ -7512,16 +7305,12 @@ components: - timestamp - time - year - is_public: - type: boolean - example: true is_null_allowed: type: boolean example: false ViewDto: required: - columns - - database - database_id - id - internal_name @@ -7534,8 +7323,6 @@ components: id: type: integer format: int64 - database: - $ref: '#/components/schemas/DatabaseDto' name: type: string example: Air Quality @@ -7552,6 +7339,9 @@ components: type: array items: $ref: '#/components/schemas/ViewColumnDto' + last_retrieved: + type: string + format: date-time database_id: type: integer format: int64 @@ -7588,6 +7378,45 @@ components: is_schema_public: type: boolean example: true + TableBriefDto: + required: + - database_id + - id + - internal_name + - is_public + - is_schema_public + - is_versioned + - name + - owned_by + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality in Austria + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_versioned: + type: boolean + example: true + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + owned_by: + type: string + format: uuid ColumnSemanticsUpdateDto: type: object properties: @@ -7597,27 +7426,28 @@ components: type: string ColumnDto: required: - - column_type - database_id - id - internal_name - is_null_allowed - - is_public - name - - ordinal_position + - ord - table_id + - type type: object properties: id: type: integer format: int64 + example: 1 name: maxLength: 64 minLength: 0 type: string - example: Date + example: Given Name alias: type: string + example: firstname size: type: integer format: int64 @@ -7633,9 +7463,9 @@ components: type: number example: 51 concept: - $ref: '#/components/schemas/ConceptDto' + $ref: '#/components/schemas/ConceptBriefDto' unit: - $ref: '#/components/schemas/UnitDto' + $ref: '#/components/schemas/UnitBriefDto' description: maxLength: 2048 minLength: 0 @@ -7652,10 +7482,12 @@ components: database_id: type: integer format: int64 + example: 2 table_id: type: integer format: int64 - ordinal_position: + example: 3 + ord: type: integer format: int32 example: 0 @@ -7663,16 +7495,18 @@ components: maxLength: 64 minLength: 0 type: string - example: mdb_date + example: given_name index_length: type: integer format: int64 + example: 255 length: type: integer format: int64 - column_type: + example: 255 + type: type: string - example: string + example: varchar enum: - char - varchar @@ -7725,12 +7559,49 @@ components: std_dev: type: number example: 5.32 - is_public: - type: boolean - example: true is_null_allowed: type: boolean example: false + ConceptBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 23 + uri: + type: string + example: 'http://www.wikidata.org/entity/Q202444' + name: + type: string + example: given name + description: + type: string + example: >- + name typically used to differentiate people from the same family, + clan, or other social group who have a common last name + UnitBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 34 + uri: + type: string + example: 'http://www.wikidata.org/entity/Q1422583' + name: + type: string + example: importance + description: + type: string + example: 'subjective magnitude of value, meaning, or purpose' DatabaseTransferDto: required: - id @@ -8163,6 +8034,47 @@ components: is_schema_public: type: boolean example: true + ViewBriefDto: + required: + - database_id + - id + - internal_name + - name + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + owned_by: + type: string + format: uuid ColumnCreateDto: required: - name @@ -8377,12 +8289,10 @@ components: ContainerDto: required: - count - - host - id - image - internal_name - name - - port - quota type: object properties: @@ -8392,11 +8302,6 @@ components: name: type: string example: Air Quality - host: - type: string - port: - type: integer - format: int32 image: $ref: '#/components/schemas/ImageDto' quota: @@ -8407,6 +8312,9 @@ components: type: integer format: int64 example: 10 + last_retrieved: + type: string + format: date-time internal_name: type: string example: data-db @@ -8415,6 +8323,87 @@ components: ui_port: type: integer format: int32 + ColumnBriefDto: + required: + - column_type + - database_id + - id + - internal_name + - name + - table_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: date + alias: + type: string + database_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + internal_name: + type: string + example: mdb_date + column_type: + type: string + example: date + 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 + UnitDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' OntologyBriefDto: required: - id @@ -8470,14 +8459,14 @@ components: type: string resumptionToken: type: string - parametersString: - type: string fromDate: type: string format: date-time untilDate: type: string format: date-time + parametersString: + type: string BannerMessageDto: required: - id @@ -8511,6 +8500,30 @@ components: type: string format: date-time example: '2021-03-12T15:26:21.000Z' + ImageBriefDto: + required: + - default + - id + - jdbc_method + - name + - version + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: mariadb + version: + type: string + example: '10.5' + jdbc_method: + type: string + example: mariadb + default: + type: boolean + example: false LdCreatorDto: required: - '@type' @@ -8707,6 +8720,9 @@ components: $ref: '#/components/schemas/ColumnDto' constraints: $ref: '#/components/schemas/ConstraintsDto' + last_retrieved: + type: string + format: date-time database_id: type: integer format: int64 @@ -8798,6 +8814,59 @@ components: type: integer format: int64 example: 1 + ContainerBriefDto: + required: + - count + - hash + - id + - image + - internal_name + - name + - quota + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 + name: + type: string + example: Air Quality + image: + $ref: '#/components/schemas/ImageBriefDto' + quota: + type: integer + format: int32 + example: 50 + count: + type: integer + format: int32 + example: 10 + internal_name: + type: string + example: air-quality + ConceptDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' IndexDto: properties: results: @@ -8855,12 +8924,3 @@ components: - search_term - field_value_pairs type: object - SearchResultDto: - properties: - results: - items: - type: object - type: array - required: - - results - type: object diff --git a/.docs/.swagger/custom.css b/.docs/.openapi/custom.css similarity index 100% rename from .docs/.swagger/custom.css rename to .docs/.openapi/custom.css diff --git a/.docs/.swagger/swagger-generate.sh b/.docs/.openapi/openapi-generate.sh similarity index 82% rename from .docs/.swagger/swagger-generate.sh rename to .docs/.openapi/openapi-generate.sh index 884c2adfac..edd927d202 100644 --- a/.docs/.swagger/swagger-generate.sh +++ b/.docs/.openapi/openapi-generate.sh @@ -10,10 +10,10 @@ services[9099]=metadata function retrieve () { if [[ "$2" == analyse ]] || [[ "$2" == search ]]; then echo "... retrieve json api from localhost:$1" - curl -sSL "http://localhost:$1/api-$2.json" | yq -p=json > "./.docs/.swagger/api-$2.yaml" + curl -sSL "http://localhost:$1/api-$2.json" | yq -o=json - > "./.docs/.openapi/api-$2.yaml" else echo "... retrieve yaml api from localhost:$1" - curl -sSL "http://localhost:$1/v3/api-docs.yaml" > "./.docs/.swagger/api-$2.yaml" + curl -sSL "http://localhost:$1/v3/api-docs.yaml" > "./.docs/.openapi/api-$2.yaml" fi } diff --git a/.docs/.swagger/openapi-merge.json b/.docs/.openapi/openapi-merge.json similarity index 100% rename from .docs/.swagger/openapi-merge.json rename to .docs/.openapi/openapi-merge.json diff --git a/.docs/.swagger/swagger-ui.html b/.docs/.openapi/swagger-ui.html similarity index 100% rename from .docs/.swagger/swagger-ui.html rename to .docs/.openapi/swagger-ui.html diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dfc73f621d..100e56ff21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,11 +44,11 @@ lint-docker-compose: image: docker.io/alpine:${ALPINE_VERSION} stage: lint variables: - VERSION: 3.3.0 + VERSION: 4.45.1 BINARY: yq_linux_amd64 before_script: - 'apk --no-cache add bash wget' - - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' + - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' script: - "bash .scripts/check-compose.sh" - "yq compare -P docker-compose.yml .docker/docker-compose.yml 'volumes.*'" @@ -116,18 +116,18 @@ lint-metadata-schema: script: - diff dbrepo-metadata-db/1_setup-schema.sql helm/dbrepo/files/01-setup-schema.sql -lint-swagger-version: +lint-open-api-version: image: docker.io/alpine:${ALPINE_VERSION} stage: lint variables: - VERSION: 3.3.0 + VERSION: 4.45.1 BINARY: yq_linux_amd64 before_script: - 'apk --no-cache add bash wget' - - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' + - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' script: - - yq r ./.docs/.swagger/api.base.yaml 'externalDocs.url' | grep "${DOC_VERSION}" - - yq r ./.docs/.swagger/api.base.yaml 'info.version' | grep "${DOC_VERSION}" + - yq r ./.docs/.openapi/api.base.yaml 'externalDocs.url' | grep "${DOC_VERSION}" + - yq r ./.docs/.openapi/api.base.yaml 'info.version' | grep "${DOC_VERSION}" build-metadata-service: image: maven:3-openjdk-${JAVA_VERSION} @@ -483,9 +483,9 @@ release-docs: script: - "make gen-lib-doc gen-docs-doc package-config" - "cp -r ./lib/python/docs/build/html ./final/${DOC_VERSION}/python" # sphinx - - "cp .docs/.swagger/api.yaml ./final/${DOC_VERSION}/rest/api.yaml" # swagger - - "cp .docs/.swagger/swagger-ui.html ./final/${DOC_VERSION}/rest/index.html" # swagger - - "cp .docs/.swagger/custom.css ./final/${DOC_VERSION}/rest/custom.css" # swagger + - "cp .docs/.openapi/api.yaml ./final/${DOC_VERSION}/rest/api.yaml" # openapi + - "cp .docs/.openapi/swagger-ui.html ./final/${DOC_VERSION}/rest/index.html" # openapi + - "cp .docs/.openapi/custom.css ./final/${DOC_VERSION}/rest/custom.css" # openapi - "cp -r ./site/* ./final/${DOC_VERSION}" # mkdocs - "cp .docker/dist.tar.gz ./final/${APP_VERSION}/dist.tar.gz" # dist - "cp .docs/index.html.tpl ./final/index.html" # redirect patch docs 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 1f8d3b046e..465bd3bd1e 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 @@ -25,13 +25,16 @@ import java.util.List; public class ColumnDto { @NotNull + @Schema(example = "1") private Long id; @NotNull + @Schema(example = "2") @JsonProperty("database_id") private Long databaseId; @NotNull + @Schema(example = "3") @JsonProperty("table_id") private Long tableId; @@ -42,27 +45,29 @@ public class ColumnDto { @NotBlank @Size(max = 64) - @Schema(example = "Date") + @Schema(example = "Given Name") private String name; @NotBlank @Size(max = 64) @JsonProperty("internal_name") - @Schema(example = "mdb_date") + @Schema(example = "given_name") private String internalName; - @Schema + @Schema(example = "firstname") private String alias; @JsonProperty("index_length") + @Schema(example = "255") private Long indexLength; @JsonProperty("length") + @Schema(example = "255") private Long length; @NotNull @JsonProperty("type") - @Schema(example = "string") + @Schema(example = "varchar") private ColumnTypeDto columnType; @Schema(example = "255") 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 1e2b36dc66..3cc1231c74 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 @@ -1,5 +1,6 @@ package at.tuwien.api.database.table.columns.concepts; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; @@ -16,13 +17,17 @@ import lombok.extern.jackson.Jacksonized; public class ConceptBriefDto { @NotNull + @Schema(example = "23") private Long id; @NotBlank + @Schema(example = "http://www.wikidata.org/entity/Q202444") private String uri; + @Schema(example = "given name") private String name; + @Schema(example = "name typically used to differentiate people from the same family, clan, or other social group who have a common last name") private String description; } 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 407f3708eb..15d9ae9082 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 @@ -1,5 +1,6 @@ package at.tuwien.api.database.table.columns.concepts; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; @@ -16,12 +17,16 @@ import lombok.extern.jackson.Jacksonized; public class UnitBriefDto { @NotNull + @Schema(example = "34") private Long id; @NotBlank + @Schema(example = "http://www.wikidata.org/entity/Q1422583") private String uri; + @Schema(example = "importance") private String name; + @Schema(example = "subjective magnitude of value, meaning, or purpose") private String description; } diff --git a/lib/python/Pipfile b/lib/python/Pipfile index b54561e5f8..62a93cc02a 100644 --- a/lib/python/Pipfile +++ b/lib/python/Pipfile @@ -13,6 +13,7 @@ pandas = "*" [dev-packages] build = "*" +pyyaml = "*" setuptools = "*" twine = "*" coverage = "*" diff --git a/lib/python/Pipfile.lock b/lib/python/Pipfile.lock index 836140fd7b..52b7202c3e 100644 --- a/lib/python/Pipfile.lock +++ b/lib/python/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "4fc272b993d5091dc8d60aee49575f17cd1de3145d916dc6aa82c09f7cefe4ee" + "sha256": "01e7f752292f6f3d558a9418f7172696f9bd200d00c7eed2745b74d08ef27eb4" }, "pipfile-spec": 6, "requires": { @@ -442,64 +442,64 @@ }, "numpy": { "hashes": [ - "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2", - "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5", - "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60", - "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71", - "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631", - "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8", - "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2", - "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16", - "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa", - "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591", - "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964", - "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821", - "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484", - "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957", - "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800", - "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918", - "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95", - "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0", - "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e", - "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d", - "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73", - "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59", - "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51", - "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355", - "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348", - "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e", - "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440", - "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675", - "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84", - "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046", - "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab", - "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712", - "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308", - "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315", - "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3", - "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008", - "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5", - "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2", - "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e", - "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7", - "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf", - "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab", - "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd", - "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf", - "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8", - "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb", - "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268", - "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d", - "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780", - "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716", - "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e", - "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528", - "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af", - "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7", - "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51" + "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f", + "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0", + "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd", + "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2", + "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4", + "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648", + "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be", + "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb", + "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160", + "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd", + "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a", + "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84", + "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e", + "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748", + "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825", + "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60", + "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957", + "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715", + "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317", + "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e", + "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283", + "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278", + "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9", + "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de", + "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369", + "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb", + "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189", + "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014", + "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323", + "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e", + "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49", + "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50", + "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d", + "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37", + "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39", + "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576", + "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a", + "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba", + "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7", + "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826", + "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467", + "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495", + "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc", + "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391", + "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0", + "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97", + "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c", + "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac", + "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369", + "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8", + "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2", + "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff", + "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a", + "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", + "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], "markers": "python_version == '3.11'", - "version": "==2.2.1" + "version": "==2.2.2" }, "paho-mqtt": { "hashes": [ @@ -655,11 +655,11 @@ }, "pydantic": { "hashes": [ - "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", - "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06" + "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff", + "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53" ], "index": "pypi", - "version": "==2.10.4" + "version": "==2.10.5" }, "pydantic-core": { "hashes": [ @@ -824,11 +824,11 @@ }, "tzdata": { "hashes": [ - "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", - "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd" + "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", + "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639" ], "markers": "python_version >= '2'", - "version": "==2024.2" + "version": "==2025.1" }, "urllib3": { "hashes": [ @@ -1266,6 +1266,14 @@ "index": "pypi", "version": "==2024.8.6" }, + "id": { + "hashes": [ + "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d", + "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658" + ], + "markers": "python_version >= '3.8'", + "version": "==1.5.0" + }, "idna": { "hashes": [ "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", @@ -1284,11 +1292,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7" + "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", + "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580" ], "markers": "python_version < '3.12'", - "version": "==8.5.0" + "version": "==8.6.1" }, "iniconfig": { "hashes": [ @@ -1431,11 +1439,11 @@ }, "more-itertools": { "hashes": [ - "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6" + "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b", + "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89" ], - "markers": "python_version >= '3.8'", - "version": "==10.5.0" + "markers": "python_version >= '3.9'", + "version": "==10.6.0" }, "nh3": { "hashes": [ @@ -1475,14 +1483,6 @@ "markers": "python_version >= '3.8'", "version": "==24.2" }, - "pkginfo": { - "hashes": [ - "sha256:8ad91a0445a036782b9366ef8b8c2c50291f83a553478ba8580c73d3215700cf", - "sha256:dcd589c9be4da8973eceffa247733c144812759aa67eaf4bbf97016a02f39088" - ], - "markers": "python_version >= '3.8'", - "version": "==1.12.0" - }, "pluggy": { "hashes": [ "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", @@ -1501,11 +1501,11 @@ }, "pygments": { "hashes": [ - "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a" + "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", + "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c" ], "markers": "python_version >= '3.8'", - "version": "==2.18.0" + "version": "==2.19.1" }, "pyproject-hooks": { "hashes": [ @@ -1532,6 +1532,65 @@ "index": "pypi", "version": "==0.6" }, + "pyyaml": { + "hashes": [ + "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff", + "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", + "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", + "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", + "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", + "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", + "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", + "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", + "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", + "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", + "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a", + "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", + "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", + "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", + "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", + "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", + "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", + "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a", + "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", + "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", + "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", + "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", + "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", + "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", + "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", + "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", + "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", + "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", + "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", + "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706", + "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", + "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", + "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", + "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083", + "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", + "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", + "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", + "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", + "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", + "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", + "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", + "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", + "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", + "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", + "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5", + "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d", + "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", + "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", + "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", + "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", + "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", + "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", + "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4" + ], + "index": "pypi", + "version": "==6.0.2" + }, "readme-renderer": { "hashes": [ "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", @@ -1590,11 +1649,11 @@ }, "setuptools": { "hashes": [ - "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", - "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d" + "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6", + "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3" ], "index": "pypi", - "version": "==75.6.0" + "version": "==75.8.0" }, "snowballstemmer": { "hashes": [ @@ -1677,11 +1736,11 @@ }, "twine": { "hashes": [ - "sha256:36158b09df5406e1c9c1fb8edb24fc2be387709443e7376689b938531582ee27", - "sha256:9c6025b203b51521d53e200f4a08b116dee7500a38591668c6a6033117bdc218" + "sha256:a47f973caf122930bf0fbbf17f80b83bc1602c9ce393c7845f289a3001dc5384", + "sha256:be324f6272eff91d07ee93f251edf232fc647935dd585ac003539b42404a8dbd" ], "index": "pypi", - "version": "==6.0.1" + "version": "==6.1.0" }, "urllib3": { "hashes": [ diff --git a/lib/python/tests/conftest.py b/lib/python/tests/conftest.py deleted file mode 100644 index 5270a5bfba..0000000000 --- a/lib/python/tests/conftest.py +++ /dev/null @@ -1,37 +0,0 @@ -import logging -import uuid - -import pytest - -from dbrepo.RestClient import RestClient -from dbrepo.api.dto import Database - -logging.basicConfig(level=logging.DEBUG) - - -def pytest_configure(config): - TestKeyValue.username = str(uuid.uuid4()).replace("-", "")[0:10] - TestKeyValue.password = str(uuid.uuid4()).replace("-", "")[0:10] - - -@pytest.fixture(scope='session', name='rest_client') -def user_rest_client() -> RestClient: - TestKeyValue.user_id = RestClient().create_user(username=f'{TestKeyValue.username}', - password=f'{TestKeyValue.password}', - email=f'{TestKeyValue.username}@example.com').id - return RestClient(username=TestKeyValue.username, password=TestKeyValue.password) - - -@pytest.fixture(scope='session', name='database') -def database() -> Database: - name = str(uuid.uuid4()).replace("-", "")[0:10] - return RestClient(username=TestKeyValue.username, - password=TestKeyValue.password).create_database(name=name, container_id=1, is_public=True, - is_schema_public=True) - - -class TestKeyValue: - user_id: str = None - username: str = None - password: str = None - database_name: str = None diff --git a/lib/python/tests/test_dtos.py b/lib/python/tests/test_dtos.py new file mode 100644 index 0000000000..f338c30dcc --- /dev/null +++ b/lib/python/tests/test_dtos.py @@ -0,0 +1,44 @@ +import inspect +import sys +import unittest + +from yaml import safe_load + +from dbrepo.api import dto + + +class AnalyseUnitTest(unittest.TestCase): + schemas = None + models: [()] = [] + found: int = 0 + skipped: int = 0 + + def setUp(self): + with open('../../../.docs/.openapi/api.yaml', 'r') as f: + self.schemas = safe_load(f)['components']['schemas'] + for name, obj in inspect.getmembers(sys.modules[dto.__name__]): + if not inspect.isclass(obj): + self.found += 1 + continue + if f'{name}Dto' not in self.schemas: + self.skipped += 1 + continue + self.models.append((name, obj)) + + def build_model(self, name: str, obj: any, definition: any) -> dict: + model_dict = dict() + for property in definition['properties']: + if 'example' not in definition['properties'][property]: + if '$ref' not in definition['properties'][property]: + self.fail(f'OpenAPI model {name}Dto does not have example for property: {property}') + ref = definition['properties'][property]['$ref'][len('#/components/schemas/'):-3] + # recursive call + model_dict[property] = self.build_model(ref, obj, self.schemas[f'{name}Dto']) + model_dict[property] = definition['properties'][property]['example'] + model = obj(**model_dict) + + def test_dtos_succeeds(self): + for name, obj in self.models: + self.build_model(name, obj, self.schemas[f'{name}Dto']) + + pass diff --git a/lib/python/tests/test_system_database.py b/lib/python/tests/test_system_database.py deleted file mode 100644 index 902b95435b..0000000000 --- a/lib/python/tests/test_system_database.py +++ /dev/null @@ -1,34 +0,0 @@ -import unittest -import uuid - -import pytest - - -class UserUnitTest(unittest.TestCase): - - @pytest.fixture(autouse=True) - def prepare_fixture(self, rest_client, database): - self.rest_client = rest_client - self.database = database - - @pytest.mark.usefixtures("rest_client") - def test_create_database_succeeds(self): - name = str(uuid.uuid4()).replace("-", "")[0:10] - # test - response = self.rest_client.create_database(name=name, container_id=1, - is_public=True, is_schema_public=True) - self.assertEqual(True, response.is_public) - self.assertEqual(True, response.is_schema_public) - self.assertEqual(None, response.description) - - @pytest.mark.usefixtures("rest_client", "database") - def test_update_database_visibility_succeeds(self): - # test - response = self.rest_client.update_database_visibility(database_id=self.database.id, is_public=False, - is_schema_public=False) - self.assertEqual(False, response.is_public) - self.assertEqual(False, response.is_schema_public) - - -if __name__ == "__main__": - unittest.main() diff --git a/lib/python/tests/test_system_user.py b/lib/python/tests/test_system_user.py deleted file mode 100644 index 350b341102..0000000000 --- a/lib/python/tests/test_system_user.py +++ /dev/null @@ -1,42 +0,0 @@ -import unittest -import uuid - -import pytest - -from conftest import TestKeyValue -from dbrepo.RestClient import RestClient - - -class UserUnitTest(unittest.TestCase): - - @pytest.fixture(autouse=True) - def prepare_fixture(self, rest_client): - self.rest_client = rest_client - - def test_get_users_succeeds(self): - # test - response = RestClient().get_users() - - def test_create_user_succeeds(self): - username = str(uuid.uuid4()).replace("-", "")[0:10] - password = str(uuid.uuid4()).replace("-", "")[0:10] - # test - response = RestClient().create_user(username=f'{username}', password=f'{password}', - email=f'{username}@example.com') - self.assertEqual(username, response.username) - - @pytest.mark.usefixtures("rest_client") - def test_update_user_succeeds(self): - # test - response = self.rest_client.update_user(user_id=TestKeyValue.user_id, theme='dark', language='de', - firstname='Foo', lastname='Bar', affiliation='TU Wien', - orcid='https://orcid.org/0000-0003-4216-302X') - self.assertEqual('dark', response.attributes.theme) - self.assertEqual('Foo', response.given_name) - self.assertEqual('Bar', response.family_name) - self.assertEqual('TU Wien', response.attributes.affiliation) - self.assertEqual('https://orcid.org/0000-0003-4216-302X', response.attributes.orcid) - - -if __name__ == "__main__": - unittest.main() diff --git a/lib/python/tests/test_unit_analyse.py b/lib/python/tests/test_unit_analyse.py index a26d7aa844..5ca2b8301c 100644 --- a/lib/python/tests/test_unit_analyse.py +++ b/lib/python/tests/test_unit_analyse.py @@ -1,6 +1,5 @@ import unittest import requests_mock -import dataclasses from dbrepo.RestClient import RestClient diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index eeeea68832..7605809e61 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -24,11 +24,23 @@ class DatabaseUnitTest(unittest.TestCase): DatabaseBrief( id=1, name='test', - owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16', + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), internal_name='test_abcd', is_public=True, - is_schema_public=True) + is_schema_public=True, + container=ContainerBrief( + id=1, + name='MariaDB Galera 11.1.3', + internal_name='mariadb', + image=ImageBrief( + id=1, + name='mariadb', + version='11.2.2', + jdbc_method='mariadb' + ) + ) + ) ] with requests_mock.Mocker() as mock: # mock diff --git a/make/gen.mk b/make/gen.mk index ed10c7e123..308a307b95 100644 --- a/make/gen.mk +++ b/make/gen.mk @@ -1,11 +1,11 @@ ##@ Generate -.PHONY: gen-swagger-doc -gen-swagger-doc: build-images ## Generate Swagger documentation and fetch. +.PHONY: gen-openapi-doc +gen-openapi-doc: build-images ## Generate Swagger documentation and fetch. docker compose up -d - bash .docs/.swagger/swagger-generate.sh + bash .docs/.openapi/openapi-generate.sh docker compose down - openapi-merge-cli --config .docs/.swagger/openapi-merge.json + openapi-merge-cli --config .docs/.openapi/openapi-merge.json .PHONY: gen-helm-doc gen-helm-doc: build-helm ## Generate Helm documentation and schema diff --git a/yq b/yq new file mode 100644 index 0000000000..5578822fb4 --- /dev/null +++ b/yq @@ -0,0 +1,7043 @@ +openapi: 3.0.1 +info: + title: Database Repository Metadata Service API + description: Service that manages the metadata + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.6.2 +externalDocs: + description: Sourcecode Documentation + url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6.2/system-services-metadata/ +servers: +- url: http://localhost + description: Development instance +- url: https://test.dbrepo.tuwien.ac.at + description: Staging instance +paths: + /api/database: + get: + tags: + - database-endpoint + summary: List databases + description: "Lists all databases in the metadata database. Requests with HTTP\ + \ method **GET** return the list of databases, requests with HTTP method **HEAD**\ + \ only the number in the `X-Count` header." + operationId: list + parameters: + - name: internal_name + in: query + required: false + schema: + type: string + responses: + "200": + description: List of databases + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of databases + required: true + style: simple + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DatabaseBriefDto" + post: + tags: + - database-endpoint + summary: Create database + description: Creates a database in the container with id. Requires roles `create-database`. + operationId: create_5 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseCreateDto" + required: true + responses: + "409": + description: Query store could not be created + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Database create query is malformed or image is not supported + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "423": + description: Database quota exceeded + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Database create permission is missing or grant permissions + at broker service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to fin container/user/database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new database + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + head: + tags: + - database-endpoint + summary: List databases + description: "Lists all databases in the metadata database. Requests with HTTP\ + \ method **GET** return the list of databases, requests with HTTP method **HEAD**\ + \ only the number in the `X-Count` header." + operationId: list_1 + parameters: + - name: internal_name + in: query + required: false + schema: + type: string + responses: + "200": + description: List of databases + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of databases + required: true + style: simple + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DatabaseBriefDto" + /api/database/{databaseId}/access/{userId}: + get: + tags: + - access-endpoint + summary: Find/Check access + description: "Finds or checks access of a user with given id to a database with\ + \ given id. Requests with HTTP method **GET** return the access object, requests\ + \ with HTTP method **HEAD** only the status. When the user has at least *READ*\ + \ access, the status 200 is returned, 403 otherwise. Requires role `check-database-access`\ + \ or `check-foreign-database-access`." + operationId: find + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - access-endpoint + summary: Modify access + description: Modifies access of a user with given id to database with given + id. Requires role `update-database-access`. + operationId: update_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateDatabaseAccessDto" + required: true + responses: + "404": + description: Database or user not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Modify access not permitted when no access is granted in the + first place + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be updated in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modified access + "502": + description: Access could not be updated due to connection error in the + data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - access-endpoint + summary: Give access + description: Give a user with given id access to some database with given id. + Requires role `create-database-access`. + operationId: create_8 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateDatabaseAccessDto" + required: true + responses: + "404": + description: Database or user not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be created in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Failed giving access + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Granting access succeeded + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + "400": + description: Granting access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Access could not be created due to connection error + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - access-endpoint + summary: Delete access + description: Delete access of a user with id to a database with id. Requires + role `delete-database-access`. + operationId: revoke + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: Revoke of access not permitted as no access was found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted access + "502": + description: Access could not be created due to connection error + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "User, database with access was not found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Access could not be revoked in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify access query or database connection is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + head: + tags: + - access-endpoint + summary: Find/Check access + description: "Finds or checks access of a user with given id to a database with\ + \ given id. Requests with HTTP method **GET** return the access object, requests\ + \ with HTTP method **HEAD** only the status. When the user has at least *READ*\ + \ access, the status 200 is returned, 403 otherwise. Requires role `check-database-access`\ + \ or `check-foreign-database-access`." + operationId: find_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/{userId}: + get: + tags: + - user-endpoint + summary: Get user + description: Gets own user information from the metadata database. Requires + authentication. Foreign user information can only be obtained if additional + role `find-foreign-user` is present. Finding information about internal users + results in a 404 error. + operationId: find_2 + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + responses: + "404": + description: User was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found user + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "403": + description: Find user is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - user-endpoint + summary: Update user + description: Updates user with id. Requires role `modify-user-information`. + operationId: modify + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserUpdateDto" + required: true + responses: + "202": + description: Modified user information + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "404": + description: Failed to find database/user in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Modify user query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to modify user metadata + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/{userId}/password: + put: + tags: + - user-endpoint + summary: Update user password + description: Updates password of user with id. Requires authentication. + operationId: password + parameters: + - name: userId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserPasswordDto" + required: true + responses: + "400": + description: Invalid password payload + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modified user password + "403": + description: Not allowed to change foreign user password + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to get user in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/user in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user/token: + put: + tags: + - user-endpoint + summary: Refresh token + description: Refreshes user token by refresh token. + operationId: refreshToken + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RefreshTokenRequestDto" + required: true + responses: + "202": + description: Refreshed user token + content: + application/json: + schema: + $ref: "#/components/schemas/TokenDto" + "403": + description: Not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid refresh token + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + post: + tags: + - user-endpoint + summary: Create token + description: Creates a user token via the Auth Service. + operationId: getToken + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LoginRequestDto" + required: true + responses: + "400": + description: Invalid login request + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to get token + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find user in auth database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to get user in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Obtained user token + content: + application/json: + schema: + $ref: "#/components/schemas/TokenDto" + "428": + description: Account is not fully setup in auth service (requires password + change?) + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to auth service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/ontology/{ontologyId}: + get: + tags: + - ontology-endpoint + summary: Find ontology + description: Finds an ontology with id in the metadata database. + operationId: find_3 + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Find one ontology + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + put: + tags: + - ontology-endpoint + summary: Update ontology + description: Updates an ontology with id. Requires role `update-ontology`. + operationId: update + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyModifyDto" + required: true + responses: + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated ontology successfully + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - ontology-endpoint + summary: Delete ontology + description: Deletes an ontology with given id. Requires role `delete-ontology`. + operationId: delete + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "202": + description: Deleted ontology successfully + content: + application/json: {} + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/message/{messageId}: + put: + tags: + - message-endpoint + summary: Update message + description: Updates a message with id. Requires role `update-maintenance-message`. + operationId: update_1 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageUpdateDto" + required: true + responses: + "202": + description: Updated message + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageBriefDto" + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - message-endpoint + summary: Delete message + description: Deletes a message with id. Requires role `delete-maintenance-message`. + operationId: delete_1 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted message + content: + application/json: {} + security: + - bearerAuth: [] + - basicAuth: [] + /api/image/{imageId}: + get: + tags: + - image-endpoint + summary: Find image + description: Finds a container image in the metadata database. + operationId: findById + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found image + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + put: + tags: + - image-endpoint + summary: Update image + description: Updates container image in the metadata database. Requires role + `modify-image`. + operationId: update_2 + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ImageChangeDto" + required: true + responses: + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated image successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - image-endpoint + summary: Delete image + description: Deletes a container image in the metadata database. Requires role + `delete-image`. + operationId: delete_2 + parameters: + - name: imageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "202": + description: Deleted image successfully + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier/{identifierId}: + get: + tags: + - identifier-endpoint + summary: Find identifier + description: Finds an identifier with id. The response format depends on the + HTTP `Accept` header set on the request. + operationId: find_6 + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + - name: Accept + in: header + required: true + schema: + type: string + responses: + "200": + description: Found identifier successfully + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + application/ld+json: + schema: + $ref: "#/components/schemas/LdDatasetDto" + text/csv: {} + text/xml: {} + text/bibliography: {} + text/bibliography; style=apa: {} + text/bibliography; style=ieee: {} + text/bibliography; style=bibtex: {} + "502": + description: Connection to data service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Exported resource was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "410": + description: Failed to retrieve from S3 endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Identifier could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "406": + description: Failed to find acceptable representation + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to find in data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + put: + tags: + - identifier-endpoint + summary: Save identifier + description: Saves an identifier with id as a draft identifier. Identifiers + can only be created for objects the user has at least *READ* access in the + associated database (requires role `create-identifier`) or for any object + in any database (requires role `create-foreign-identifier`). + operationId: save + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierSaveDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Saved identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - identifier-endpoint + summary: Delete identifier + description: Deletes an identifier with id. Requires role `delete-identifier`. + operationId: delete_3 + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to delete in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Identifier or database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted identifier + "403": + description: Deleting identifier not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier/{identifierId}/publish: + put: + tags: + - identifier-endpoint + summary: Publish identifier + description: Publishes an identifier with id. A published identifier cannot + be changed anymore. Requires role `publish-identifier`. + operationId: publish + parameters: + - name: identifierId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Published identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/visibility: + put: + tags: + - database-endpoint + summary: Update database visibility + description: Updates the database with id on the visibility. Only the database + owner can perform this operation. Requires role `modify-database-visibility`. + operationId: visibility + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseModifyVisibilityDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Visibility modified successfully + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "400": + description: The visibility payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Visibility modification is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/view/{viewId}: + get: + tags: + - view-endpoint + summary: Get view + description: Gets a view with id in the metadata database. + operationId: find_7 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: Find view is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Find view successfully + headers: + X-Username: + description: The authentication username + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Type: + description: The JDBC connection type + style: simple + X-View: + description: The view internal name + style: simple + X-Database: + description: The database internal name + style: simple + X-Password: + description: The authentication password + style: simple + X-Host: + description: The database hostname + style: simple + X-Port: + description: The database port number + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/ViewDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - view-endpoint + summary: Update view + description: Updates a view with id. This can only be performed by the view + owner or database owner. Requires role `create-database-view`. + operationId: update_3 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ViewUpdateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or View could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Update not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Update view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Update view successfully + content: + '*/*': + schema: + $ref: "#/components/schemas/ViewDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - view-endpoint + summary: Delete view + description: Deletes a view with id. Requires role `delete-database-view`. + operationId: delete_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: viewId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "423": + description: Delete view resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Delete view successfully + content: + '*/*': + schema: + type: object + "400": + description: Delete view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Deletion not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}: + get: + tags: + - table-endpoint + summary: Find table + description: "Finds a table with id. When a table is hidden (i.e. when `is_public`\ + \ is `false`), then the user needs to have at least read access and the role\ + \ `find-table`. When the `system` role is present, the endpoint responds with\ + \ additional connection metadata in the header." + operationId: findById_2 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Find table successfully + headers: + X-Username: + description: The authentication username + style: simple + X-Table: + description: The table internal name + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Type: + description: The JDBC connection type + style: simple + X-Database: + description: The database internal name + style: simple + X-Password: + description: The authentication password + style: simple + X-Host: + description: The database hostname + style: simple + X-Port: + description: The database port number + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/TableDto" + "503": + description: Failed to obtain queue information from broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Failed to establish connection with broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Table, database or container could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - table-endpoint + summary: Update table + description: Updates a table in the database with id. Requires role `update-table`. + operationId: update_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TableUpdateDto" + required: true + responses: + "403": + description: Update table visibility not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Table could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated the table + content: + application/json: + schema: + $ref: "#/components/schemas/TableBriefDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Update table visibility payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + delete: + tags: + - table-endpoint + summary: Delete table + description: Deletes a table with id. Only the owner of a table can perform + this action (requires role `delete-table`) or anyone can delete a table (requires + role `delete-foreign-table`). + operationId: delete_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Delete table successfully + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Delete table query resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Table, database or container could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/statistic: + put: + tags: + - table-endpoint + summary: Update statistics + description: "Updates basic statistical properties (min, max, mean, median,\ + \ std.dev) for numerical columns in a table with id. This action can only\ + \ be performed by the table owner. Requires role `update-table-statistic`." + operationId: updateStatistic + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Failed to map column statistic to known columns + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not the owner + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated table statistics successfully + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/column/{columnId}: + put: + tags: + - table-endpoint + summary: Update semantics + description: Updates column semantics of a table column with id. Only the table + owner with at least *READ* access to the associated database can update the + column semantics (requires role `modify-table-column-semantics`) or foreign + table columns if role `modify-foreign-table-column-semantics`. + operationId: updateColumn + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: columnId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ColumnSemanticsUpdateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find user/table/database/ontology in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated column semantics successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ColumnDto" + "400": + description: Update semantic concept query is malformed or update unit of + measurement query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/owner: + put: + tags: + - database-endpoint + summary: Update database owner + description: Updates the database with id on the owner. Only the database owner + can perform this operation. Requires role `modify-database-owner`. + operationId: transfer + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseTransferDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Transfer of ownership was successful + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Transfer of ownership is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Owner payload is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/metadata/view: + put: + tags: + - database-endpoint + summary: Update database view schemas + description: Updates the database with id with generated metadata from view + that are not yet known to the database. Only the database owner can perform + this operation. Requires role `find-database`. + operationId: refreshViewMetadata + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Refreshed database views metadata + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Refresh view metadata is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/metadata/table: + put: + tags: + - database-endpoint + summary: Update database table schemas + description: Updates the database with id with generated metadata from tables + that are not yet known to the database. Only the database owner can perform + this operation. Requires role `find-database`. + operationId: refreshTableMetadata + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: Not allowed to refresh table metadata + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to fin user/database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Refreshed database tables metadata + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "400": + description: Failed to parse payload at search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/image: + get: + tags: + - database-endpoint + summary: Get database preview image + description: Gets the database with id on the preview image. + operationId: findPreviewImage + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: View of image was successful + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + security: + - bearerAuth: [] + - basicAuth: [] + put: + tags: + - database-endpoint + summary: Update database preview image + description: Updates the database with id on the preview image. Only the database + owner can perform this operation. Requires role `modify-database-image`. + operationId: modifyImage + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseModifyImageDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modify of image was successful + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "410": + description: File was not found in the Storage Service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Modify of image is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/user: + get: + tags: + - user-endpoint + summary: List users + description: "Lists users known to the metadata database. Internal users are\ + \ omitted from the result list. If the optional query parameter `username`\ + \ is present, the result list can be filtered by matching this exact username." + operationId: findAll + parameters: + - name: username + in: query + required: false + schema: + type: string + responses: + "200": + description: List users + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/UserBriefDto" + post: + tags: + - user-endpoint + summary: Create user + description: Creates a user in the auth service and metadata database. Requires + that no credentials are sent in the request. + operationId: create + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SignupRequestDto" + required: true + responses: + "403": + description: Internal authentication to the auth service is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Parameters are not well-formed (likely email) + content: + application/json: {} + "409": + description: User with username already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: User with e-mail already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to create in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created user + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "502": + description: Failed to create in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Default role not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/ontology: + get: + tags: + - ontology-endpoint + summary: List ontologies + description: Lists all ontologies known to the metadata database. + operationId: findAll_2 + responses: + "200": + description: List ontologies + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/OntologyBriefDto" + post: + tags: + - ontology-endpoint + summary: Create ontology + description: Creates an ontology in the metadata database. Requires role `create-ontology`. + operationId: create_1 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyCreateDto" + required: true + responses: + "201": + description: Registered ontology successfully + content: + application/json: + schema: + $ref: "#/components/schemas/OntologyDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/message: + get: + tags: + - message-endpoint + summary: List messages + description: "Lists messages known to the metadata database. Messages can be\ + \ filtered be filtered with the optional `active` parameter. If set to *true*,\ + \ only active messages (that is, messages whose end time has not been reached)\ + \ will be returned. Otherwise only inactive messages are returned. If not\ + \ set, active and inactive messages are returned." + operationId: list_2 + parameters: + - name: active + in: query + required: false + schema: + type: boolean + responses: + "200": + description: List messages + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/BannerMessageDto" + post: + tags: + - message-endpoint + summary: Create message + description: Creates a message in the metadata database. Requires role `create-maintenance-message`. + operationId: create_2 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageCreateDto" + required: true + responses: + "201": + description: Created message + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/image: + get: + tags: + - image-endpoint + summary: List images + description: Lists all container images known to the metadata database. + operationId: findAll_3 + responses: + "200": + description: List images + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ImageBriefDto" + post: + tags: + - image-endpoint + summary: Create image + description: Creates a container image in the metadata database. Requires role + `create-image`. + operationId: create_3 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ImageCreateDto" + required: true + responses: + "409": + description: Image already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Image specification is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created image + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/identifier: + get: + tags: + - identifier-endpoint + summary: List identifiers + description: Lists all identifiers known to the metadata database + operationId: findAll_4 + parameters: + - name: dbid + in: query + required: false + schema: + type: integer + format: int64 + - name: qid + in: query + required: false + schema: + type: integer + format: int64 + - name: vid + in: query + required: false + schema: + type: integer + format: int64 + - name: tid + in: query + required: false + schema: + type: integer + format: int64 + - name: Accept + in: header + required: true + schema: + type: string + responses: + "200": + description: Found identifiers successfully + content: + application/json: + schema: + type: array + items: + type: string + application/ld+json: + schema: + type: array + items: + $ref: "#/components/schemas/LdDatasetDto" + "406": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + post: + tags: + - identifier-endpoint + summary: Create identifier + description: Create an identifier with id to create a draft identifier. Identifiers + can only be created for objects the user has at least *READ* access in the + associated database (requires role `create-identifier`) or for any object + in any database (requires role `create-foreign-identifier`). + operationId: create_4 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierCreateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Drafted identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/view: + get: + tags: + - view-endpoint + summary: List views + description: Lists views known to the metadata database. + operationId: findAll_5 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Find views successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ViewBriefDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - view-endpoint + summary: Create view + description: Creates a view. This can only be performed by the database owner. + Requires role `create-database-view`. + operationId: create_6 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ViewCreateDto" + required: true + responses: + "423": + description: Create view resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Create view successfully + content: + application/json: + schema: + $ref: "#/components/schemas/ViewBriefDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Credentials missing + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/user in metadata database. + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Create view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table: + get: + tags: + - table-endpoint + summary: List tables + description: "Lists all tables known to the metadata database. When a database\ + \ has a hidden schema (i.e. when `is_schema_public` is `false`), then the\ + \ user needs to have at least read access and the role `list-tables`." + operationId: list_4 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "403": + description: List tables not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: List tables + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableBriefDto" + security: + - bearerAuth: [] + - basicAuth: [] + post: + tags: + - table-endpoint + summary: Create table + description: Creates a table in the database with id. Requires role `create-table`. + operationId: create_7 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TableCreateDto" + required: true + responses: + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Create table not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new table + content: + application/json: + schema: + $ref: "#/components/schemas/TableBriefDto" + "409": + description: Create table conflicts with existing table name + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, container or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Create table query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/container: + get: + tags: + - container-endpoint + summary: List containers + description: List all containers in the metadata database. + operationId: findAll_6 + parameters: + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + responses: + "200": + description: List containers + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ContainerBriefDto" + post: + tags: + - container-endpoint + summary: Create container + description: Creates a container in the metadata database. Requires role `create-container`. + operationId: create_9 + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerCreateDto" + required: true + responses: + "400": + description: Container payload malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Container image or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Container name already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "201": + description: Created a new container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "403": + description: "Create container not permitted, need authority `create-container`" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/unit: + get: + tags: + - unit-endpoint + summary: List units + description: Lists units known to the metadata database. + operationId: findAll_1 + responses: + "200": + description: Find all semantic units + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/UnitDto" + /api/ontology/{ontologyId}/entity: + get: + tags: + - ontology-endpoint + summary: Find entities + description: Finds semantic entities by label or uri in an ontology with id. + Requires role `execute-semantic-query`. + operationId: find_4 + parameters: + - name: ontologyId + in: path + required: true + schema: + type: integer + format: int64 + - name: label + in: query + required: false + schema: + type: string + - name: uri + in: query + required: false + schema: + type: string + responses: + "400": + description: Filter params are invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found entities + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: Generated query or uri is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/oai: + get: + tags: + - metadata-endpoint + summary: Get record + operationId: identify_1_1_1_1 + parameters: + - name: verb + in: query + - name: parameters + in: query + required: true + schema: + $ref: "#/components/schemas/OaiListIdentifiersParameters" + responses: + "200": + description: List containers + content: + text/xml: {} + /api/message/message/{messageId}: + get: + tags: + - message-endpoint + summary: Find message + description: Finds a message with id in the metadata database. + operationId: find_5 + parameters: + - name: messageId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Get messages + content: + application/json: + schema: + $ref: "#/components/schemas/BannerMessageDto" + "404": + description: Could not find message + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/license: + get: + tags: + - license-endpoint + summary: List licenses + description: Lists licenses known to the metadata database. + operationId: list_3 + responses: + "200": + description: List of licenses + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + /api/identifier/retrieve: + get: + tags: + - identifier-endpoint + summary: Retrieve PID metadata + description: "Retrieves Persistent Identifier (PID) metadata from external endpoints.\ + \ Supported PIDs are: ORCID, ROR, DOI." + operationId: retrieve + parameters: + - name: url + in: query + required: true + schema: + type: string + responses: + "200": + description: Retrieved metadata from identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + "404": + description: Failed to find metadata for identifier + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + /api/database/{databaseId}: + get: + tags: + - database-endpoint + summary: Find database + description: Finds a database with id. + operationId: findById_1 + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "503": + description: Failed to find queue information in broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to the broker service could not be established + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Database found successfully + headers: + X-Username: + description: The authentication username + style: simple + Access-Control-Expose-Headers: + description: Expose custom headers + style: simple + X-Password: + description: The authentication password + style: simple + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Not allowed to view database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, user or exchange could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/suggest: + get: + tags: + - table-endpoint + summary: Suggest semantics + description: Suggests semantic concepts for a table. This action can only be + performed by the table owner. Requires role `table-semantic-analyse`. + operationId: analyseTable + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "417": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Failed to parse statistic in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not the table owner. + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Suggested table semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/database/{databaseId}/table/{tableId}/column/{columnId}/suggest: + get: + tags: + - table-endpoint + summary: Suggest semantics + description: Suggests column semantics. Requires role `table-semantic-analyse`. + operationId: analyseTableColumn + parameters: + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: columnId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Suggested table column semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableColumnEntityDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/container/{containerId}: + get: + tags: + - container-endpoint + summary: Find container + description: Finds a container in the metadata database. + operationId: findById_3 + parameters: + - name: containerId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: Found container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "404": + description: Container image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + delete: + tags: + - container-endpoint + summary: Delete container + description: Deletes a container in the metadata database. Requires role `delete-container`. + operationId: delete_6 + parameters: + - name: containerId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Container not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted container + "403": + description: "Create container not permitted, need authority `delete-container`" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + security: + - bearerAuth: [] + - basicAuth: [] + /api/concept: + get: + tags: + - concept-endpoint + summary: List concepts + description: List all semantic concepts known to the metadata database + operationId: findAll_7 + responses: + "200": + description: List concepts + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ConceptDto" +components: + schemas: + DatabaseBriefDto: + required: + - contact + - id + - internal_name + - is_public + - is_schema_public + - name + - owner_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierBriefDto" + contact: + $ref: "#/components/schemas/UserBriefDto" + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + owner_id: + type: string + format: uuid + preview_image: + type: string + IdentifierBriefDto: + required: + - created_by + - database_id + - id + - publication_year + - publisher + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierTitleDto" + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + status: + type: string + enum: + - draft + - published + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + view_id: + type: integer + format: int64 + example: 1 + publication_year: + type: integer + format: int32 + example: 2022 + created_by: + type: string + format: uuid + IdentifierTitleDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + title: + type: string + example: Airquality Demonstrator + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + enum: + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + UserBriefDto: + required: + - id + - username + type: object + properties: + id: + type: string + format: uuid + example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 + username: + type: string + description: Only contains lowercase characters + example: jcarberry + name: + type: string + example: Josiah Carberry + orcid: + type: string + example: 0000-0002-1825-0097 + qualified_name: + type: string + example: Josiah Carberry — @jcarberry + given_name: + type: string + example: Josiah + family_name: + type: string + example: Carberry + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + example: NOT_FOUND + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 EARLY_HINTS + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + example: Error message + code: + type: string + example: error.service.code + DatabaseAccessDto: + required: + - type + - user + type: object + properties: + user: + $ref: "#/components/schemas/UserBriefDto" + type: + type: string + enum: + - read + - write_own + - write_all + UserUpdateDto: + required: + - language + - theme + type: object + properties: + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Brown University + orcid: + type: string + example: 0000-0002-1825-0097 + theme: + type: string + example: dark + language: + type: string + example: en + UserAttributesDto: + required: + - language + - theme + type: object + properties: + theme: + type: string + example: light + orcid: + type: string + example: https://orcid.org/0000-0002-1825-0097 + affiliation: + type: string + example: Brown University + language: + type: string + example: en + UserDto: + required: + - attributes + - id + type: object + properties: + id: + type: string + format: uuid + example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 + name: + type: string + example: Josiah Carberry + attributes: + $ref: "#/components/schemas/UserAttributesDto" + last_retrieved: + type: string + format: date-time + qualified_name: + type: string + example: Josiah Carberry — @jcarberry + given_name: + type: string + example: Josiah + family_name: + type: string + example: Carberry + UserPasswordDto: + required: + - password + type: object + properties: + password: + type: string + RefreshTokenRequestDto: + required: + - refresh_token + type: object + properties: + refresh_token: + type: string + example: refresh_token + TokenDto: + required: + - access_token + - expires_in + - id_token + - not-before-policy + - refresh_expires_in + - refresh_token + - scope + - session_state + - token_type + type: object + properties: + scope: + type: string + access_token: + type: string + expires_in: + type: integer + format: int64 + refresh_token: + type: string + refresh_expires_in: + type: integer + format: int64 + id_token: + type: string + session_state: + type: string + token_type: + type: string + not-before-policy: + type: integer + format: int64 + OntologyModifyDto: + required: + - prefix + - uri + type: object + properties: + uri: + type: string + example: Ontology URI + prefix: + type: string + example: Ontology prefix + sparql_endpoint: + type: string + example: Ontology SPARQL endpoint + rdf_path: + type: string + example: rdf/om-2.0.rdf + OntologyDto: + required: + - id + - prefix + - rdf + - sparql + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + example: http://www.wikidata.org/ + prefix: + type: string + example: wd + sparql: + type: boolean + example: true + rdf: + type: boolean + example: false + uri_pattern: + type: string + example: http://www.wikidata.org/entity/.* + sparql_endpoint: + type: string + example: https://query.wikidata.org/sparql + rdf_path: + type: string + example: rdf/om-2.0.rdf + BannerMessageUpdateDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + BannerMessageBriefDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + ImageChangeDto: + required: + - dialect + - driver_class + - jdbc_method + - registry + type: object + properties: + registry: + type: string + example: docker.io/library + defaultPort: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + example: 5432 + dialect: + type: string + example: Postgres + driver_class: + type: string + example: org.postgresql.Driver + jdbc_method: + type: string + example: postgresql + DataTypeDto: + required: + - display_name + - documentation + - is_buildable + - is_quoted + - value + type: object + properties: + value: + type: string + example: time + documentation: + type: string + example: https://mariadb.com/kb/en/time/ + display_name: + type: string + example: TIME(fsp) + size_min: + type: integer + format: int32 + example: 0 + size_max: + type: integer + format: int32 + example: 6 + size_default: + type: integer + format: int32 + example: 0 + size_required: + type: boolean + example: false + d_min: + type: integer + format: int32 + d_max: + type: integer + format: int32 + d_default: + type: integer + format: int32 + d_required: + type: boolean + data_hint: + type: string + example: "e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S" + type_hint: + type: string + example: "fsp=microsecond precision, min. 0, max. 6" + is_quoted: + type: boolean + description: frontend needs to quote this data type + example: false + is_buildable: + type: boolean + description: frontend can build this data type + example: true + ImageDto: + required: + - data_types + - default + - default_port + - dialect + - driver_class + - id + - jdbc_method + - name + - operators + - registry + - version + type: object + properties: + id: + type: integer + format: int64 + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + dialect: + type: string + example: org.hibernate.dialect.MariaDBDialect + operators: + type: array + items: + $ref: "#/components/schemas/OperatorDto" + driver_class: + type: string + example: org.mariadb.jdbc.Driver + jdbc_method: + type: string + example: mariadb + default: + type: boolean + example: false + default_port: + type: integer + format: int32 + example: 3306 + data_types: + type: array + items: + $ref: "#/components/schemas/DataTypeDto" + OperatorDto: + required: + - display_name + - documentation + - value + type: object + properties: + id: + type: integer + format: int64 + value: + type: string + example: XOR + documentation: + type: string + example: https://mariadb.com/kb/en/xor/ + display_name: + type: string + example: XOR + CreatorSaveDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Wesleyan University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/04d836q62 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + IdentifierFunderSaveDto: + required: + - funder_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + IdentifierSaveDescriptionDto: + required: + - description + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + IdentifierSaveDto: + required: + - creators + - database_id + - id + - publication_year + - publisher + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + example: 1 + type: + type: string + example: database + enum: + - database + - subset + - table + - view + doi: + type: string + example: 10.1111/11111111 + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderSaveDto" + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + publisher: + type: string + example: TU Wien + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + creators: + type: array + items: + $ref: "#/components/schemas/CreatorSaveDto" + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierSaveDto" + IdentifierSaveTitleDto: + required: + - id + - title + type: object + properties: + id: + type: integer + format: int64 + example: 1 + title: + type: string + example: Airquality Demonstrator + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Subtitle + enum: + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + LicenseDto: + required: + - identifier + - uri + type: object + properties: + identifier: + type: string + example: MIT + uri: + type: string + example: https://opensource.org/licenses/MIT + description: + type: string + example: "A short and simple permissive license with conditions only requiring\ + \ preservation of copyright and license notices. Licensed works, modifications,\ + \ and larger works may be distributed under different terms and without\ + \ source code." + RelatedIdentifierSaveDto: + required: + - id + - relation + - type + - value + type: object + properties: + id: + type: integer + format: int64 + example: 1 + value: + type: string + example: 10.70124/dc4zh-9ce78 + type: + type: string + example: DOI + enum: + - DOI + - URL + - URN + - ARK + - arXiv + - bibcode + - EAN13 + - EISSN + - Handle + - IGSN + - ISBN + - ISTC + - LISSN + - LSID + - PMID + - PURL + - UPC + - w3id + relation: + type: string + example: Cites + enum: + - IsCitedBy + - Cites + - IsSupplementTo + - IsSupplementedBy + - IsContinuedBy + - Continues + - IsDescribedBy + - Describes + - HasMetadata + - IsMetadataFor + - HasVersion + - IsVersionOf + - IsNewVersionOf + - IsPreviousVersionOf + - IsPartOf + - HasPart + - IsPublishedIn + - IsReferencedBy + - References + - IsDocumentedBy + - Documents + - IsCompiledBy + - Compiles + - IsVariantFormOf + - IsOriginalFormOf + - IsIdenticalTo + - IsReviewedBy + - Reviews + - IsDerivedFrom + - IsSourceOf + - IsRequiredBy + - Requires + - IsObsoletedBy + - Obsoletes + CreatorDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + name_identifier_scheme_uri: + type: string + example: https://orcid.org/ + affiliation_identifier: + type: string + example: https://ror.org/05gq02987 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + affiliation_identifier_scheme_uri: + type: string + example: https://ror.org/ + IdentifierDescriptionDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + IdentifierDto: + required: + - creators + - database_id + - id + - owner + - publication_year + - publisher + - query + - query_hash + - query_normalized + - titles + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderDto" + query: + type: string + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + execution: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + owner: + $ref: "#/components/schemas/UserBriefDto" + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + creators: + type: array + items: + $ref: "#/components/schemas/CreatorDto" + status: + type: string + enum: + - draft + - published + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + view_id: + type: integer + format: int64 + example: 1 + query_normalized: + type: string + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierDto" + query_hash: + type: string + description: query hash in sha512 + result_hash: + type: string + example: 34fe82cda2c53f13f8d90cfd7a3469e3a939ff311add50dce30d9136397bf8e5 + result_number: + type: integer + format: int64 + example: 1 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + IdentifierFunderDto: + required: + - funder_name + - id + type: object + properties: + id: + type: integer + format: int64 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + RelatedIdentifierDto: + required: + - id + - relation + - type + - value + type: object + properties: + id: + type: integer + format: int64 + value: + type: string + example: 10.70124/dc4zh-9ce78 + type: + type: string + example: DOI + enum: + - DOI + - URL + - URN + - ARK + - arXiv + - bibcode + - EAN13 + - EISSN + - Handle + - IGSN + - ISBN + - ISTC + - LISSN + - LSID + - PMID + - PURL + - UPC + - w3id + relation: + type: string + example: Cites + enum: + - IsCitedBy + - Cites + - IsSupplementTo + - IsSupplementedBy + - IsContinuedBy + - Continues + - IsDescribedBy + - Describes + - HasMetadata + - IsMetadataFor + - HasVersion + - IsVersionOf + - IsNewVersionOf + - IsPreviousVersionOf + - IsPartOf + - HasPart + - IsPublishedIn + - IsReferencedBy + - References + - IsDocumentedBy + - Documents + - IsCompiledBy + - Compiles + - IsVariantFormOf + - IsOriginalFormOf + - IsIdenticalTo + - IsReviewedBy + - Reviews + - IsDerivedFrom + - IsSourceOf + - IsRequiredBy + - Requires + - IsObsoletedBy + - Obsoletes + DatabaseModifyVisibilityDto: + required: + - is_public + - is_schema_public + type: object + properties: + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewUpdateDto: + required: + - is_public + - is_schema_public + type: object + properties: + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewColumnDto: + required: + - auto_generated + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - type + type: object + properties: + id: + type: integer + format: int64 + name: + maxLength: 64 + minLength: 0 + type: string + example: Date + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + database_id: + type: integer + format: int64 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: mdb_date + auto_generated: + type: boolean + example: false + index_length: + type: integer + format: int64 + length: + type: integer + format: int64 + type: + type: string + example: string + 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 + is_null_allowed: + type: boolean + example: false + ViewDto: + required: + - columns + - database_id + - id + - internal_name + - name + - owner + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + owner: + $ref: "#/components/schemas/UserBriefDto" + columns: + type: array + items: + $ref: "#/components/schemas/ViewColumnDto" + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + TableUpdateDto: + required: + - is_public + - is_schema_public + type: object + properties: + description: + maxLength: 180 + minLength: 0 + type: string + example: Air Quality in Austria + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + TableBriefDto: + required: + - database_id + - id + - internal_name + - is_public + - is_schema_public + - is_versioned + - name + - owned_by + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality in Austria + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_versioned: + type: boolean + example: true + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + owned_by: + type: string + format: uuid + ColumnSemanticsUpdateDto: + type: object + properties: + concept_uri: + type: string + unit_uri: + type: string + ColumnDto: + required: + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - table_id + - type + type: object + properties: + id: + type: integer + format: int64 + example: 1 + name: + maxLength: 64 + minLength: 0 + type: string + example: Given Name + alias: + type: string + example: firstname + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + mean: + type: number + example: 45.4 + median: + type: number + example: 51 + concept: + $ref: "#/components/schemas/ConceptBriefDto" + unit: + $ref: "#/components/schemas/UnitBriefDto" + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + enums: + type: array + items: + type: string + sets: + type: array + items: + type: string + database_id: + type: integer + format: int64 + example: 2 + table_id: + type: integer + format: int64 + example: 3 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: given_name + index_length: + type: integer + format: int64 + example: 255 + length: + type: integer + format: int64 + example: 255 + type: + type: string + example: varchar + 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 + data_length: + type: integer + format: int64 + example: 34300 + max_data_length: + type: integer + format: int64 + example: 34300 + num_rows: + type: integer + format: int64 + example: 32 + val_min: + type: number + example: 0 + val_max: + type: number + example: 100 + std_dev: + type: number + example: 5.32 + is_null_allowed: + type: boolean + example: false + ConceptBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 23 + uri: + type: string + example: http://www.wikidata.org/entity/Q202444 + name: + type: string + example: given name + description: + type: string + example: "name typically used to differentiate people from the same family,\ + \ clan, or other social group who have a common last name" + UnitBriefDto: + required: + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + example: 34 + uri: + type: string + example: http://www.wikidata.org/entity/Q1422583 + name: + type: string + example: importance + description: + type: string + example: "subjective magnitude of value, meaning, or purpose" + DatabaseTransferDto: + required: + - id + type: object + properties: + id: + type: string + format: uuid + DatabaseModifyImageDto: + type: object + properties: + key: + type: string + UpdateDatabaseAccessDto: + required: + - type + type: object + properties: + type: + type: string + enum: + - read + - write_own + - write_all + SignupRequestDto: + required: + - email + - password + - username + type: object + properties: + username: + pattern: "^[a-z0-9]{3,}$" + type: string + example: user + email: + type: string + example: user@example.com + password: + type: string + LoginRequestDto: + required: + - password + - username + type: object + properties: + username: + type: string + example: user + password: + type: string + OntologyCreateDto: + required: + - prefix + - uri + type: object + properties: + uri: + type: string + example: Ontology URI + prefix: + type: string + example: Ontology prefix + sparql_endpoint: + type: string + example: Ontology SPARQL endpoint + BannerMessageCreateDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageCreateDto: + required: + - default_port + - dialect + - driver_class + - is_default + - jdbc_method + - name + - registry + - version + type: object + properties: + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + dialect: + type: string + is_default: + type: boolean + example: false + driver_class: + type: string + jdbc_method: + type: string + default_port: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + IdentifierCreateDto: + required: + - creators + - database_id + - publication_year + - publisher + - titles + - type + type: object + properties: + type: + type: string + example: database + enum: + - database + - subset + - table + - view + doi: + type: string + example: 10.1111/11111111 + titles: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/IdentifierSaveDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/IdentifierFunderSaveDto" + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + publisher: + type: string + example: TU Wien + language: + type: string + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar + - an + - hy + - as + - av + - ae + - ay + - az + - bm + - ba + - eu + - be + - bn + - bh + - bi + - bs + - br + - bg + - my + - ca + - km + - ch + - ce + - ny + - zh + - cu + - cv + - kw + - co + - cr + - hr + - cs + - da + - dv + - nl + - dz + - en + - eo + - et + - ee + - fo + - fj + - fi + - fr + - ff + - gd + - gl + - lg + - ka + - de + - ki + - el + - kl + - gn + - gu + - ht + - ha + - he + - hz + - hi + - ho + - hu + - is + - io + - ig + - id + - ia + - ie + - iu + - ik + - ga + - it + - ja + - jv + - kn + - kr + - ks + - kk + - rw + - kv + - kg + - ko + - kj + - ku + - ky + - lo + - la + - lv + - lb + - li + - ln + - lt + - lu + - mk + - mg + - ms + - ml + - mt + - gv + - mi + - mr + - mh + - ro + - mn + - na + - nv + - nd + - ng + - ne + - se + - "no" + - nb + - nn + - ii + - oc + - oj + - or + - om + - os + - pi + - pa + - ps + - fa + - pl + - pt + - qu + - rm + - rn + - ru + - sm + - sg + - sa + - sc + - sr + - sn + - sd + - si + - sk + - sl + - so + - st + - nr + - es + - su + - sw + - ss + - sv + - tl + - ty + - tg + - ta + - tt + - te + - th + - bo + - ti + - to + - ts + - tn + - tr + - tk + - tw + - ug + - uk + - ur + - uz + - ve + - vi + - vo + - wa + - cy + - fy + - wo + - xh + - yi + - yo + - za + - zu + creators: + type: array + items: + $ref: "#/components/schemas/CreatorSaveDto" + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: "#/components/schemas/RelatedIdentifierSaveDto" + DatabaseCreateDto: + required: + - container_id + - is_public + - is_schema_public + - name + type: object + properties: + name: + type: string + example: Air Quality + container_id: + type: integer + format: int64 + example: 1 + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewCreateDto: + required: + - is_public + - is_schema_public + - name + - query + type: object + properties: + name: + maxLength: 63 + minLength: 1 + type: string + example: Air Quality + query: + type: string + example: SELECT `id` FROM `air_quality` + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ViewBriefDto: + required: + - database_id + - id + - internal_name + - name + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + owned_by: + type: string + format: uuid + ColumnCreateDto: + required: + - name + - null_allowed + - type + type: object + properties: + name: + type: string + example: Date + type: + type: string + example: string + 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 + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Formatted as YYYY-MM-dd + enums: + type: array + description: "enum values, only considered when type = ENUM" + items: + type: string + description: "enum values, only considered when type = ENUM" + sets: + type: array + description: "set values, only considered when type = SET" + items: + type: string + description: "set values, only considered when type = SET" + index_length: + type: integer + format: int64 + null_allowed: + type: boolean + example: true + concept_uri: + type: string + unit_uri: + type: string + ConstraintsCreateDto: + required: + - checks + - foreign_keys + - primary_key + - uniques + type: object + properties: + uniques: + type: array + items: + type: array + items: + type: string + checks: + uniqueItems: true + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: "#/components/schemas/ForeignKeyCreateDto" + primary_key: + uniqueItems: true + type: array + items: + type: string + ForeignKeyCreateDto: + required: + - columns + - referenced_columns + - referenced_table + type: object + properties: + columns: + type: array + items: + type: string + referenced_table: + type: string + referenced_columns: + type: array + items: + type: string + on_update: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + TableCreateDto: + required: + - columns + - constraints + - is_public + - is_schema_public + - name + type: object + properties: + name: + maxLength: 64 + minLength: 1 + type: string + example: Air Quality + description: + maxLength: 180 + minLength: 0 + type: string + example: Air Quality in Austria + columns: + type: array + items: + $ref: "#/components/schemas/ColumnCreateDto" + constraints: + $ref: "#/components/schemas/ConstraintsCreateDto" + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + ContainerCreateDto: + required: + - host + - image_id + - name + - privileged_password + - privileged_username + - quota + type: object + properties: + name: + type: string + example: Air Quality + host: + type: string + description: Hostname of container + port: + type: integer + description: Port of container + format: int32 + quota: + type: integer + format: int64 + example: 50 + image_id: + type: integer + description: Image ID + format: int64 + ui_host: + type: string + ui_port: + type: integer + format: int32 + privileged_username: + type: string + description: Username of privileged user + example: root + privileged_password: + type: string + description: Password of privileged user + ContainerDto: + required: + - count + - id + - image + - internal_name + - name + - quota + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + image: + $ref: "#/components/schemas/ImageDto" + quota: + type: integer + format: int64 + example: 50 + count: + type: integer + format: int64 + example: 10 + last_retrieved: + type: string + format: date-time + internal_name: + type: string + example: data-db + ui_host: + type: string + ui_port: + type: integer + format: int32 + ColumnBriefDto: + required: + - column_type + - database_id + - id + - internal_name + - name + - table_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: date + alias: + type: string + database_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + internal_name: + type: string + example: mdb_date + column_type: + type: string + example: date + 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 + UnitDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: "#/components/schemas/ColumnBriefDto" + OntologyBriefDto: + required: + - id + - prefix + - rdf + - sparql + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + example: http://www.wikidata.org/ + prefix: + type: string + example: wd + sparql: + type: boolean + example: true + rdf: + type: boolean + example: false + uri_pattern: + type: string + example: http://www.wikidata.org/entity/.* + EntityDto: + required: + - label + - uri + type: object + properties: + uri: + type: string + example: https://www.wikidata.org/entity/Q1686799 + label: + type: string + example: Apache Jena + description: + type: string + example: open source semantic web framework for Java + OaiListIdentifiersParameters: + type: object + properties: + metadataPrefix: + type: string + from: + type: string + until: + type: string + set: + type: string + resumptionToken: + type: string + fromDate: + type: string + format: date-time + untilDate: + type: string + format: date-time + parametersString: + type: string + BannerMessageDto: + required: + - id + - message + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageBriefDto: + required: + - default + - id + - jdbc_method + - name + - version + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + jdbc_method: + type: string + example: mariadb + default: + type: boolean + example: false + LdCreatorDto: + required: + - '@type' + - name + type: object + properties: + name: + type: string + sameAs: + type: string + givenName: + type: string + familyName: + type: string + '@type': + type: string + LdDatasetDto: + required: + - '@context' + - '@type' + - citation + - creator + - description + - hasPart + - identifier + - name + - temporalCoverage + - url + - version + type: object + properties: + name: + type: string + description: + type: string + url: + type: string + identifier: + type: array + items: + type: string + license: + type: string + creator: + type: array + items: + $ref: "#/components/schemas/LdCreatorDto" + citation: + type: string + hasPart: + type: array + items: + $ref: "#/components/schemas/LdDatasetDto" + temporalCoverage: + type: string + version: + type: string + format: date-time + '@context': + type: string + '@type': + type: string + ConstraintsDto: + type: object + properties: + uniques: + type: array + items: + $ref: "#/components/schemas/UniqueDto" + checks: + uniqueItems: true + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: "#/components/schemas/ForeignKeyDto" + primary_key: + uniqueItems: true + type: array + items: + $ref: "#/components/schemas/PrimaryKeyDto" + ForeignKeyBriefDto: + type: object + properties: + id: + type: integer + format: int64 + ForeignKeyDto: + required: + - name + - referenced_table + - references + - table + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + references: + type: array + items: + $ref: "#/components/schemas/ForeignKeyReferenceDto" + table: + $ref: "#/components/schemas/TableBriefDto" + referenced_table: + $ref: "#/components/schemas/TableBriefDto" + on_update: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + ForeignKeyReferenceDto: + required: + - column + - foreign_key + - referenced_column + type: object + properties: + id: + type: integer + format: int64 + column: + $ref: "#/components/schemas/ColumnBriefDto" + foreign_key: + $ref: "#/components/schemas/ForeignKeyBriefDto" + referenced_column: + $ref: "#/components/schemas/ColumnBriefDto" + PrimaryKeyDto: + required: + - column + - table + type: object + properties: + id: + type: integer + format: int64 + table: + $ref: "#/components/schemas/TableBriefDto" + column: + $ref: "#/components/schemas/ColumnBriefDto" + TableDto: + required: + - columns + - constraints + - database_id + - id + - internal_name + - is_public + - is_schema_public + - is_versioned + - name + - owner + - queue_name + - routing_key + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + alias: + type: string + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + owner: + $ref: "#/components/schemas/UserBriefDto" + description: + maxLength: 2048 + minLength: 0 + type: string + example: Air Quality in Austria + columns: + type: array + items: + $ref: "#/components/schemas/ColumnDto" + constraints: + $ref: "#/components/schemas/ConstraintsDto" + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + internal_name: + type: string + example: air_quality + is_versioned: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + queue_name: + type: string + example: air_quality + queue_type: + type: string + example: quorum + routing_key: + type: string + example: dbrepo.1.2 + is_public: + type: boolean + example: true + num_rows: + type: integer + format: int64 + example: 5 + data_length: + type: integer + description: in bytes + format: int64 + example: 16384 + max_data_length: + type: integer + description: in bytes + format: int64 + example: 0 + avg_row_length: + type: integer + description: in bytes + format: int64 + example: 3276 + UniqueDto: + required: + - columns + - id + - name + - table + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + table: + $ref: "#/components/schemas/TableBriefDto" + columns: + type: array + items: + $ref: "#/components/schemas/ColumnDto" + TableColumnEntityDto: + required: + - column_id + - database_id + - table_id + - uri + type: object + properties: + uri: + type: string + example: https://www.wikidata.org/entity/Q1686799 + label: + type: string + example: Apache Jena + description: + type: string + example: open source semantic web framework for Java + database_id: + type: integer + format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 + column_id: + type: integer + format: int64 + example: 1 + ContainerBriefDto: + required: + - count + - hash + - id + - image + - internal_name + - name + - quota + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 + name: + type: string + example: Air Quality + image: + $ref: "#/components/schemas/ImageBriefDto" + quota: + type: integer + format: int32 + example: 50 + count: + type: integer + format: int32 + example: 10 + internal_name: + type: string + example: air-quality + ConceptDto: + required: + - columns + - id + - uri + type: object + properties: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: + type: string + columns: + type: array + items: + $ref: "#/components/schemas/ColumnBriefDto" + securitySchemes: + basicAuth: + type: http + scheme: basic + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT -- GitLab From e975e9200051c70f8cb5d137512c84aa466c9ee7 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 22 Jan 2025 18:50:50 +0100 Subject: [PATCH 08/52] Updated syntax Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab-ci.yml | 8 ++++---- .scripts/check-service.sh | 23 ++++++++++++++--------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 100e56ff21..4e4c751bf4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,9 +51,9 @@ lint-docker-compose: - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' script: - "bash .scripts/check-compose.sh" - - "yq compare -P docker-compose.yml .docker/docker-compose.yml 'volumes.*'" + - "diff <(yq '.volumes' docker-compose.yml) <(yq '.volumes' .docker/docker-compose.yml)" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-analyse-service'" - - "bash .scripts/check-service.sh 'dbrepo-auth-db'" + - "IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-auth-db'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-auth-service'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-broker-service'" - "IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-dashboard-service'" @@ -126,8 +126,8 @@ lint-open-api-version: - 'apk --no-cache add bash wget' - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq' script: - - yq r ./.docs/.openapi/api.base.yaml 'externalDocs.url' | grep "${DOC_VERSION}" - - yq r ./.docs/.openapi/api.base.yaml 'info.version' | grep "${DOC_VERSION}" + - yq '.externalDocs.url' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}" + - yq '.info.version' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}" build-metadata-service: image: maven:3-openjdk-${JAVA_VERSION} diff --git a/.scripts/check-service.sh b/.scripts/check-service.sh index decc22312b..1af6d7eea1 100755 --- a/.scripts/check-service.sh +++ b/.scripts/check-service.sh @@ -1,16 +1,21 @@ #!/bin/bash -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.restart" -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.container_name" -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.hostname" +function compare () { + diff <(yq ".$1" docker-compose.yml) <(yq ".$1" .docker/docker-compose.yml) +} + +compare "services.$1.restart" +compare "services.$1.container_name" +compare "services.$1.hostname" +compare "services.$1.environment" +compare "services.$1.healthcheck" +compare "services.$1.logging" + if [ -z "$IGNORE_IMAGE" ]; then - yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.image" + compare "services.$1.image" fi if [ -z "$IGNORE_VOLUMES" ]; then - yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.volumes" + compare "services.$1.volumes" fi if [ -z "$IGNORE_PORTS" ]; then - yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.ports" + compare "services.$1.ports" fi -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.environment" -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.healthcheck" -yq compare -P docker-compose.yml .docker/docker-compose.yml "services.$1.logging" \ No newline at end of file -- GitLab From 37f04e4035d9649a7d50e328823d066e8ebee8fb Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 23 Jan 2025 16:11:46 +0100 Subject: [PATCH 09/52] Re-added paging, ref #487 Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/.openapi/api-data.yaml | 445 ++++--- .docs/.openapi/api-metadata.yaml | 1129 ++++++++++------- .docs/.openapi/api.yaml | 246 +++- .../at/tuwien/endpoints/AccessEndpoint.java | 6 +- .../at/tuwien/endpoints/TableEndpoint.java | 2 +- .../java/at/tuwien/mapper/DataMapper.java | 5 +- .../main/java/at/tuwien/api/CacheableDto.java | 12 +- .../api/container/ContainerBriefDto.java | 1 + .../at/tuwien/api/container/ContainerDto.java | 28 +- ...CreateDto.java => CreateContainerDto.java} | 14 +- .../api/container/image/ImageBriefDto.java | 1 + .../tuwien/api/container/image/ImageDto.java | 1 + .../at/tuwien/api/database/AccessTypeDto.java | 2 + ...aseAccessDto.java => CreateAccessDto.java} | 4 +- .../api/database/DatabaseAccessDto.java | 2 + .../tuwien/api/database/DatabaseBriefDto.java | 3 + .../at/tuwien/api/database/DatabaseDto.java | 17 +- .../at/tuwien/api/database/ViewBriefDto.java | 5 +- .../at/tuwien/api/database/ViewColumnDto.java | 17 +- .../java/at/tuwien/api/database/ViewDto.java | 14 +- .../tuwien/api/database/query/ImportDto.java | 2 +- .../tuwien/api/database/query/QueryDto.java | 2 + .../api/database/query/QueryTypeDto.java | 2 + .../api/database/table/TableBriefDto.java | 3 + .../tuwien/api/database/table/TableDto.java | 15 +- .../api/database/table/TupleDeleteDto.java | 2 + .../tuwien/api/database/table/TupleDto.java | 2 + .../api/database/table/TupleUpdateDto.java | 3 + .../table/columns/ColumnBriefDto.java | 20 +- .../api/database/table/columns/ColumnDto.java | 8 +- .../database/table/columns/ColumnTypeDto.java | 2 + .../table/constraints/ConstraintsDto.java | 2 + .../foreign/ForeignKeyBriefDto.java | 3 + .../constraints/foreign/ForeignKeyDto.java | 5 + .../foreign/ForeignKeyReferenceDto.java | 2 + .../constraints/primary/PrimaryKeyDto.java | 2 + .../table/constraints/unique/UniqueDto.java | 10 +- .../api/identifier/CreatorBriefDto.java | 53 + .../at/tuwien/api/identifier/CreatorDto.java | 1 + .../api/identifier/IdentifierBriefDto.java | 12 +- .../identifier/IdentifierDescriptionDto.java | 1 + .../tuwien/api/identifier/IdentifierDto.java | 8 + .../api/identifier/IdentifierFunderDto.java | 1 + .../api/identifier/IdentifierTitleDto.java | 1 + .../api/identifier/RelatedIdentifierDto.java | 1 + .../main/java/at/tuwien/api/user/UserDto.java | 35 +- .../java/at/tuwien/mapper/MetadataMapper.java | 16 +- .../at/tuwien/endpoints/AccessEndpoint.java | 6 +- .../tuwien/endpoints/ContainerEndpoint.java | 4 +- .../src/main/resources/application.yml | 4 +- .../endpoints/ContainerEndpointUnitTest.java | 10 +- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 7 +- .../service/ContainerServiceUnitTest.java | 8 +- .../gateway/impl/DataServiceGatewayImpl.java | 4 +- .../at/tuwien/service/ContainerService.java | 6 +- .../service/impl/ContainerServiceImpl.java | 4 +- .../main/java/at/tuwien/test/BaseTest.java | 33 +- dbrepo-ui/components/identifier/Citation.vue | 2 +- dbrepo-ui/composables/identifier-service.ts | 2 +- dbrepo-ui/nuxt.config.ts | 30 +- .../[database_id]/table/[table_id]/data.vue | 1 + lib/python/dbrepo/RestClient.py | 6 +- lib/python/dbrepo/api/dto.py | 88 +- lib/python/tests/test_dtos.py | 72 +- 64 files changed, 1587 insertions(+), 868 deletions(-) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/{ContainerCreateDto.java => CreateContainerDto.java} (68%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/{UpdateDatabaseAccessDto.java => CreateAccessDto.java} (72%) create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java diff --git a/.docs/.openapi/api-data.yaml b/.docs/.openapi/api-data.yaml index 7be3a4039a..f61466dc6b 100644 --- a/.docs/.openapi/api-data.yaml +++ b/.docs/.openapi/api-data.yaml @@ -59,18 +59,6 @@ paths: type: string format: date-time responses: - "400": - description: Request pagination is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve view data - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved view data headers: @@ -86,8 +74,8 @@ paths: application/json: schema: type: string - "409": - description: View schema could not be mapped + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: @@ -98,8 +86,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "409": + description: View schema could not be mapped + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve view data content: application/json: schema: @@ -147,18 +147,6 @@ paths: type: string format: date-time responses: - "400": - description: Request pagination is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve view data - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved view data headers: @@ -174,8 +162,8 @@ paths: application/json: schema: type: string - "409": - description: View schema could not be mapped + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: @@ -186,8 +174,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "409": + description: View schema could not be mapped + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Request pagination is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve view data content: application/json: schema: @@ -237,14 +237,14 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find table in metadata database + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: @@ -264,14 +264,14 @@ paths: application/json: schema: type: string - "403": - description: Not allowed to get table data + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "403": + description: Not allowed to get table data content: application/json: schema: @@ -312,32 +312,32 @@ paths: $ref: "#/components/schemas/TupleUpdateDto" required: true responses: - "404": - description: Failed to find table in metadata database + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Updated table data "403": description: Update table data not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Updated table data security: - basicAuth: [] - bearerAuth: [] @@ -374,30 +374,30 @@ paths: $ref: "#/components/schemas/TupleDto" required: true responses: - "503": - description: Failed to establish connection with the metadata service or - storage service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Create table data not allowed + "404": + description: Failed to find table in metadata database or blob in storage + service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "201": description: Created table data - "404": - description: Failed to find table in metadata database or blob in storage - service + "503": + description: Failed to establish connection with the metadata service or + storage service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Create table data not allowed content: application/json: schema: @@ -438,28 +438,28 @@ paths: $ref: "#/components/schemas/TupleDeleteDto" required: true responses: - "404": - description: Failed to find table in metadata database + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Delete table data not allowed + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Deleted table data - "503": - description: Failed to establish connection with the metadata service + "403": + description: Delete table data not allowed content: application/json: schema: @@ -508,14 +508,14 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find table in metadata database + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: @@ -535,14 +535,14 @@ paths: application/json: schema: type: string - "403": - description: Not allowed to get table data + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "403": + description: Not allowed to get table data content: application/json: schema: @@ -586,9 +586,8 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "503": + description: Failed to communicate with database content: application/json: schema: @@ -599,12 +598,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved subset data headers: @@ -626,8 +619,15 @@ paths: application/json: schema: type: string - "503": - description: Failed to communicate with database + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid pagination content: application/json: schema: @@ -670,9 +670,8 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "503": + description: Failed to communicate with database content: application/json: schema: @@ -683,12 +682,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved subset data headers: @@ -710,8 +703,15 @@ paths: application/json: schema: type: string - "503": - description: Failed to communicate with database + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid pagination content: application/json: schema: @@ -746,13 +746,6 @@ paths: $ref: "#/components/schemas/QueryPersistDto" required: true responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Persisted subset content: @@ -765,8 +758,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "503": + description: Failed to communicate with database content: application/json: schema: @@ -777,8 +770,15 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to communicate with database + "400": + description: Malformed select query + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -823,8 +823,8 @@ paths: responses: "202": description: Imported dataset successfully - "403": - description: Import table dataset not allowed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: @@ -835,14 +835,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Dataset and/or query are malformed + "403": + description: Import table dataset not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "400": + description: Dataset and/or query are malformed content: application/json: schema: @@ -874,8 +874,16 @@ paths: schema: type: boolean responses: - "403": - description: Not allowed to find subsets + "200": + description: Found subsets + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/QueryDto" + "503": + description: Failed to communicate with database content: application/json: schema: @@ -887,16 +895,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Found subsets - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/QueryDto" - "503": - description: Failed to communicate with database + "403": + description: Not allowed to find subsets content: application/json: schema: @@ -945,33 +945,32 @@ paths: $ref: "#/components/schemas/ExecuteStatementDto" required: true responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "403": + description: Not allowed to find subset content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "501": + description: Failed to execute query as it contains non-supported keywords content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "501": - description: Failed to execute query as it contains non-supported keywords + "503": + description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: Failed to insert query into query store of data database + "400": + description: Malformed select query content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to communicate with database + "417": + description: Failed to insert query into query store of data database content: application/json: schema: @@ -982,8 +981,9 @@ paths: application/json: schema: type: string - "403": - description: Not allowed to find subset + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -1020,12 +1020,6 @@ paths: type: string format: date-time responses: - "403": - description: Export view data not allowed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: Request pagination or view data select query is malformed content: @@ -1039,6 +1033,12 @@ paths: schema: type: string format: binary + "403": + description: Export view data not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Failed to find view in metadata database or export dataset content: @@ -1089,8 +1089,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Find table history not allowed + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find table history in data database content: application/json: schema: @@ -1103,14 +1109,8 @@ paths: type: array items: $ref: "#/components/schemas/TableHistoryDto" - "404": - description: Failed to find table history in data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "403": + description: Find table history not allowed content: application/json: schema: @@ -1147,12 +1147,24 @@ paths: type: string format: date-time responses: + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Export table data not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to establish connection with the metadata service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Failed to find table in metadata database content: @@ -1166,18 +1178,6 @@ paths: schema: type: string format: binary - "400": - description: Request pagination or table data select query is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - basicAuth: [] - bearerAuth: [] @@ -1217,22 +1217,14 @@ paths: type: string format: date-time responses: - "200": - description: Found subset - content: - application/json: - schema: - $ref: "#/components/schemas/QueryDto" - text/csv: {} - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "403": + description: Not allowed to find subset content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "406": + description: Failed to find acceptable representation content: application/json: schema: @@ -1243,14 +1235,22 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to find subset + "400": + description: Malformed select query content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "406": - description: Failed to find acceptable representation + "200": + description: Found subset + content: + application/json: + schema: + $ref: "#/components/schemas/QueryDto" + text/csv: {} + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -1356,10 +1356,18 @@ components: type: object additionalProperties: type: object + example: + key: value + example: + key: value keys: type: object additionalProperties: type: object + example: + id: 1 + example: + id: 1 QueryPersistDto: required: - persist @@ -1368,13 +1376,58 @@ components: persist: type: boolean example: true + CreatorBriefDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 11 + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/05gq02987 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI IdentifierBriefDto: required: - - created_by + - creators - database_id - id + - owned_by - publication_year - publisher + - status - titles - type type: object @@ -1382,13 +1435,19 @@ components: id: type: integer format: int64 + example: 2 type: type: string + example: database enum: - database - subset - table - view + creators: + type: array + items: + $ref: "#/components/schemas/CreatorBriefDto" titles: type: array items: @@ -1401,6 +1460,7 @@ components: example: TU Wien status: type: string + example: draft enum: - draft - published @@ -1424,9 +1484,10 @@ components: type: integer format: int32 example: 2022 - created_by: + owned_by: type: string format: uuid + example: 2f45ef7a-7f9b-4667-9156-152c87fe1ca5 IdentifierTitleDto: required: - id @@ -1435,6 +1496,7 @@ components: id: type: integer format: int64 + example: 4 title: type: string example: Airquality Demonstrator @@ -1649,6 +1711,7 @@ components: id: type: integer format: int64 + example: 4 owner: $ref: "#/components/schemas/UserBriefDto" execution: @@ -1671,6 +1734,7 @@ components: database_id: type: integer format: int64 + example: 1 query_normalized: type: string example: SELECT `id` FROM `air_quality` @@ -1725,6 +1789,10 @@ components: type: object additionalProperties: type: object + example: + key: value + example: + key: value ImportDto: required: - header @@ -1739,6 +1807,7 @@ components: type: boolean description: "If true, the first line contains the column names, otherwise\ \ it contains only data" + example: true separator: type: string example: "," @@ -1782,6 +1851,10 @@ components: type: object additionalProperties: type: object + example: + id: 1 + example: + id: 1 securitySchemes: basicAuth: type: http diff --git a/.docs/.openapi/api-metadata.yaml b/.docs/.openapi/api-metadata.yaml index 5578822fb4..2696cecd0c 100644 --- a/.docs/.openapi/api-metadata.yaml +++ b/.docs/.openapi/api-metadata.yaml @@ -64,8 +64,8 @@ paths: $ref: "#/components/schemas/DatabaseCreateDto" required: true responses: - "409": - description: Query store could not be created + "503": + description: Failed to save in search service content: application/json: schema: @@ -95,24 +95,24 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "201": + description: Created a new database content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to fin container/user/database in metadata database + $ref: "#/components/schemas/DatabaseBriefDto" + "409": + description: Query store could not be created content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new database + "404": + description: Failed to fin container/user/database in metadata database content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -173,12 +173,6 @@ paths: type: string format: uuid responses: - "403": - description: No access to this database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: Database not found content: @@ -191,6 +185,12 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseAccessDto" + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -218,7 +218,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateDatabaseAccessDto" + $ref: "#/components/schemas/CreateAccessDto" required: true responses: "404": @@ -227,9 +227,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Modify access not permitted when no access is granted in the - first place + "502": + description: Access could not be updated due to connection error in the + data service content: application/json: schema: @@ -242,15 +242,15 @@ paths: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified access - "502": - description: Access could not be updated due to connection error in the - data service + "400": + description: Modify access query or database connection is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Modify access query or database connection is malformed + "403": + description: Modify access not permitted when no access is granted in the + first place content: application/json: schema: @@ -282,41 +282,41 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateDatabaseAccessDto" + $ref: "#/components/schemas/CreateAccessDto" required: true responses: - "404": - description: Database or user not found + "400": + description: Granting access query or database connection is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Access could not be created in the data service + "403": + description: Failed giving access content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Failed giving access + "404": + description: Database or user not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Granting access succeeded + "502": + description: Access could not be created due to connection error content: application/json: schema: - $ref: "#/components/schemas/DatabaseAccessDto" - "400": - description: Granting access query or database connection is malformed + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Granting access succeeded content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Access could not be created due to connection error + $ref: "#/components/schemas/DatabaseAccessDto" + "503": + description: Access could not be created in the data service content: application/json: schema: @@ -345,6 +345,12 @@ paths: type: string format: uuid responses: + "503": + description: Access could not be revoked in the data service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Revoke of access not permitted as no access was found content: @@ -365,12 +371,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Access could not be revoked in the data service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: Modify access query or database connection is malformed content: @@ -404,12 +404,6 @@ paths: type: string format: uuid responses: - "403": - description: No access to this database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: Database not found content: @@ -422,6 +416,12 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseAccessDto" + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -443,6 +443,12 @@ paths: type: string format: uuid responses: + "403": + description: Find user is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: User was not found content: @@ -455,12 +461,6 @@ paths: application/json: schema: $ref: "#/components/schemas/UserDto" - "403": - description: Find user is not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -484,14 +484,8 @@ paths: $ref: "#/components/schemas/UserUpdateDto" required: true responses: - "202": - description: Modified user information - content: - application/json: - schema: - $ref: "#/components/schemas/UserDto" - "404": - description: Failed to find database/user in metadata database + "403": + description: Not allowed to modify user metadata content: application/json: schema: @@ -502,8 +496,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to modify user metadata + "202": + description: Modified user information + content: + application/json: + schema: + $ref: "#/components/schemas/UserDto" + "404": + description: Failed to find database/user in metadata database content: application/json: schema: @@ -540,14 +540,14 @@ paths: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified user password - "403": - description: Not allowed to change foreign user password + "502": + description: Connection to auth service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to get user in auth service + "403": + description: Not allowed to change foreign user password content: application/json: schema: @@ -558,8 +558,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to auth service failed + "503": + description: Failed to get user in auth service content: application/json: schema: @@ -581,24 +581,24 @@ paths: $ref: "#/components/schemas/RefreshTokenRequestDto" required: true responses: - "202": - description: Refreshed user token + "400": + description: Invalid refresh token content: application/json: schema: - $ref: "#/components/schemas/TokenDto" + $ref: "#/components/schemas/ApiErrorDto" "403": description: Not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid refresh token + "202": + description: Refreshed user token content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/TokenDto" "502": description: Connection to auth service failed content: @@ -618,8 +618,9 @@ paths: $ref: "#/components/schemas/LoginRequestDto" required: true responses: - "400": - description: Invalid login request + "428": + description: Account is not fully setup in auth service (requires password + change?) content: application/json: schema: @@ -630,33 +631,32 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find user in auth database + "202": + description: Obtained user token content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to get user in auth service + $ref: "#/components/schemas/TokenDto" + "404": + description: Failed to find user in auth database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Obtained user token + "502": + description: Connection to auth service failed content: application/json: schema: - $ref: "#/components/schemas/TokenDto" - "428": - description: Account is not fully setup in auth service (requires password - change?) + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Invalid login request content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to auth service failed + "503": + description: Failed to get user in auth service content: application/json: schema: @@ -737,16 +737,16 @@ paths: type: integer format: int64 responses: - "202": - description: Deleted ontology successfully - content: - application/json: {} "404": description: Could not find ontology content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted ontology successfully + content: + application/json: {} security: - bearerAuth: [] - basicAuth: [] @@ -828,18 +828,18 @@ paths: type: integer format: int64 responses: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found image content: application/json: schema: $ref: "#/components/schemas/ImageDto" + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" put: tags: - image-endpoint @@ -891,14 +891,14 @@ paths: type: integer format: int64 responses: - "202": - description: Deleted image successfully "404": description: Image could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted image successfully security: - bearerAuth: [] - basicAuth: [] @@ -923,27 +923,6 @@ paths: schema: type: string responses: - "200": - description: Found identifier successfully - content: - application/json: - schema: - $ref: "#/components/schemas/IdentifierDto" - application/ld+json: - schema: - $ref: "#/components/schemas/LdDatasetDto" - text/csv: {} - text/xml: {} - text/bibliography: {} - text/bibliography; style=apa: {} - text/bibliography; style=ieee: {} - text/bibliography; style=bibtex: {} - "502": - description: Connection to data service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: "Identifier could not be exported, the requested style is not\ \ known" @@ -957,39 +936,60 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "410": - description: Failed to retrieve from S3 endpoint + "406": + description: Failed to find acceptable representation content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Identifier could not be found + "502": + description: Connection to data service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "406": - description: Failed to find acceptable representation + "503": + description: Failed to find in data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to find in data service + "404": + description: Identifier could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - put: - tags: - - identifier-endpoint - summary: Save identifier - description: Saves an identifier with id as a draft identifier. Identifiers - can only be created for objects the user has at least *READ* access in the - associated database (requires role `create-identifier`) or for any object - in any database (requires role `create-foreign-identifier`). - operationId: save + "200": + description: Found identifier successfully + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" + application/ld+json: + schema: + $ref: "#/components/schemas/LdDatasetDto" + text/csv: {} + text/xml: {} + text/bibliography: {} + text/bibliography; style=apa: {} + text/bibliography; style=ieee: {} + text/bibliography; style=bibtex: {} + "410": + description: Failed to retrieve from S3 endpoint + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + put: + tags: + - identifier-endpoint + summary: Save identifier + description: Saves an identifier with id as a draft identifier. Identifiers + can only be created for objects the user has at least *READ* access in the + associated database (requires role `create-identifier`) or for any object + in any database (requires role `create-foreign-identifier`). + operationId: save parameters: - name: identifierId in: path @@ -1004,38 +1004,38 @@ paths: $ref: "#/components/schemas/IdentifierSaveDto" required: true responses: - "502": - description: Connection to search service failed + "202": + description: Saved identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" + $ref: "#/components/schemas/IdentifierDto" + "403": + description: Insufficient access rights or authorities content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Identifier form contains invalid request data + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Saved identifier + "404": + description: "Failed to find database, table or view" content: application/json: schema: - $ref: "#/components/schemas/IdentifierDto" - "403": - description: Insufficient access rights or authorities + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Identifier form contains invalid request data content: application/json: schema: @@ -1069,16 +1069,16 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Identifier or database could not be found + "403": + description: Deleting identifier not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Deleted identifier - "403": - description: Deleting identifier not permitted + "404": + description: Identifier or database could not be found content: application/json: schema: @@ -1102,38 +1102,38 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed + "202": + description: Published identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" + $ref: "#/components/schemas/IdentifierDto" + "403": + description: Insufficient access rights or authorities content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Published identifier + "503": + description: Failed to save in search service content: application/json: schema: - $ref: "#/components/schemas/IdentifierDto" - "400": - description: Identifier form contains invalid request data + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "404": + description: "Failed to find database, table or view" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Insufficient access rights or authorities + "400": + description: Identifier form contains invalid request data content: application/json: schema: @@ -1163,32 +1163,32 @@ paths: $ref: "#/components/schemas/DatabaseModifyVisibilityDto" required: true responses: - "502": - description: Connection to search service failed + "202": + description: Visibility modified successfully content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database + $ref: "#/components/schemas/DatabaseBriefDto" + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Visibility modified successfully + "502": + description: Connection to search service failed content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" + $ref: "#/components/schemas/ApiErrorDto" "400": description: The visibility payload is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "404": + description: Failed to find database in metadata database content: application/json: schema: @@ -1223,12 +1223,6 @@ paths: type: integer format: int64 responses: - "403": - description: Find view is not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: "Database, view or user could not be found" content: @@ -1266,6 +1260,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ViewDto" + "403": + description: Find view is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1296,18 +1296,6 @@ paths: $ref: "#/components/schemas/ViewUpdateDto" required: true responses: - "502": - description: Connection to search service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database or View could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "403": description: Update not allowed content: @@ -1320,8 +1308,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Update view query is malformed + "502": + description: Connection to search service failed content: application/json: schema: @@ -1332,6 +1320,18 @@ paths: '*/*': schema: $ref: "#/components/schemas/ViewDto" + "400": + description: Update view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or View could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1355,20 +1355,20 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed + "400": + description: Delete view query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "423": - description: Delete view resulted in an invalid query statement + "403": + description: Deletion not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, view or user could not be found" + "503": + description: Failed to save in search service content: application/json: schema: @@ -1379,20 +1379,20 @@ paths: '*/*': schema: type: object - "400": - description: Delete view query is malformed + "423": + description: Delete view resulted in an invalid query statement content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Deletion not allowed + "404": + description: "Database, view or user could not be found" content: application/json: schema: @@ -1455,14 +1455,14 @@ paths: application/json: schema: $ref: "#/components/schemas/TableDto" - "503": - description: Failed to obtain queue information from broker service + "404": + description: "Table, database or container could not be found" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden + "503": + description: Failed to obtain queue information from broker service content: application/json: schema: @@ -1473,8 +1473,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Table, database or container could not be found" + "403": + description: Access to the database is forbidden content: application/json: schema: @@ -1508,8 +1508,8 @@ paths: $ref: "#/components/schemas/TableUpdateDto" required: true responses: - "403": - description: Update table visibility not permitted + "503": + description: Failed to save in search service content: application/json: schema: @@ -1520,26 +1520,26 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Table could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Updated the table content: application/json: schema: $ref: "#/components/schemas/TableBriefDto" - "503": - description: Failed to save in search service + "400": + description: Update table visibility payload is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Update table visibility payload is malformed + "403": + description: Update table visibility not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Table could not be found content: application/json: schema: @@ -1569,34 +1569,34 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed + "404": + description: "Table, database or container could not be found" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Delete table successfully - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Delete table successfully "400": description: Delete table query resulted in an invalid query statement content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Table, database or container could not be found" + "403": + description: Access to the database is forbidden content: application/json: schema: @@ -1627,32 +1627,32 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed + "403": + description: Not the owner content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "404": + description: Failed to find database/table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to map column statistic to known columns + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database/table in metadata database + "400": + description: Failed to map column statistic to known columns content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not the owner + "502": + description: Connection to search service failed content: application/json: schema: @@ -1698,26 +1698,27 @@ paths: $ref: "#/components/schemas/ColumnSemanticsUpdateDto" required: true responses: - "502": - description: Connection to search service failed + "404": + description: Failed to find user/table/database/ontology in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden + "400": + description: Update semantic concept query is malformed or update unit of + measurement query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find user/table/database/ontology in metadata database + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: @@ -1728,9 +1729,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ColumnDto" - "400": - description: Update semantic concept query is malformed or update unit of - measurement query is malformed + "403": + description: Access to the database is forbidden content: application/json: schema: @@ -1760,14 +1760,20 @@ paths: $ref: "#/components/schemas/DatabaseTransferDto" required: true responses: + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "502": description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "403": + description: Transfer of ownership is not permitted content: application/json: schema: @@ -1778,12 +1784,6 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "403": - description: Transfer of ownership is not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: Database or user could not be found content: @@ -1816,36 +1816,36 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed + "403": + description: Refresh view metadata is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Refreshed database views metadata + "404": + description: Failed to find database in metadata database content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "403": - description: Refresh view metadata is not permitted + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Refreshed database views metadata content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/DatabaseBriefDto" security: - bearerAuth: [] - basicAuth: [] @@ -1866,8 +1866,8 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to refresh table metadata + "503": + description: Failed to save in search service content: application/json: schema: @@ -1878,14 +1878,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to fin user/database in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "400": + description: Failed to parse payload at search service content: application/json: schema: @@ -1896,8 +1890,14 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "400": - description: Failed to parse payload at search service + "403": + description: Not allowed to refresh table metadata + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to fin user/database in metadata database content: application/json: schema: @@ -1920,12 +1920,6 @@ paths: type: integer format: int64 responses: - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: View of image was successful content: @@ -1935,6 +1929,12 @@ paths: items: type: string format: byte + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1959,38 +1959,38 @@ paths: $ref: "#/components/schemas/DatabaseModifyImageDto" required: true responses: - "502": - description: Connection to search service failed + "404": + description: Database could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Modify of image was successful + "503": + description: Failed to save in search service content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "410": - description: File was not found in the Storage Service + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database could not be found + "403": + description: Modify of image is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "202": + description: Modify of image was successful content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Modify of image is not permitted + $ref: "#/components/schemas/DatabaseBriefDto" + "410": + description: File was not found in the Storage Service content: application/json: schema: @@ -2036,30 +2036,32 @@ paths: $ref: "#/components/schemas/SignupRequestDto" required: true responses: - "403": - description: Internal authentication to the auth service is invalid + "502": + description: Failed to create in auth service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Parameters are not well-formed (likely email) - content: - application/json: {} "409": description: User with username already exists content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: User with e-mail already exists + "404": + description: Default role not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to create in auth service + "403": + description: Internal authentication to the auth service is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: User with e-mail already exists content: application/json: schema: @@ -2070,18 +2072,16 @@ paths: application/json: schema: $ref: "#/components/schemas/UserDto" - "502": + "503": description: Failed to create in auth service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Default role not found + "400": + description: Parameters are not well-formed (likely email) content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" + application/json: {} /api/ontology: get: tags: @@ -2204,18 +2204,18 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Image specification is invalid - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Created image content: application/json: schema: $ref: "#/components/schemas/ImageDto" + "400": + description: Image specification is invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2257,6 +2257,13 @@ paths: schema: type: string responses: + "406": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Found identifiers successfully content: @@ -2270,13 +2277,6 @@ paths: type: array items: $ref: "#/components/schemas/LdDatasetDto" - "406": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" post: tags: - identifier-endpoint @@ -2293,42 +2293,42 @@ paths: $ref: "#/components/schemas/IdentifierCreateDto" required: true responses: - "502": - description: Connection to search service failed + "403": + description: Insufficient access rights or authorities content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Drafted identifier + "503": + description: Failed to save in search service content: application/json: schema: - $ref: "#/components/schemas/IdentifierDto" - "404": - description: "Failed to find database, table or view" + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Identifier form contains invalid request data + "404": + description: "Failed to find database, table or view" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "400": + description: Identifier form contains invalid request data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Insufficient access rights or authorities + "201": + description: Drafted identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/IdentifierDto" security: - bearerAuth: [] - basicAuth: [] @@ -2385,14 +2385,8 @@ paths: $ref: "#/components/schemas/ViewCreateDto" required: true responses: - "423": - description: Create view resulted in an invalid query statement - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "503": + description: Failed to save in search service content: application/json: schema: @@ -2403,14 +2397,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ViewBriefDto" - "503": - description: Failed to save in search service + "423": + description: Create view resulted in an invalid query statement content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Credentials missing + "502": + description: Connection to search service failed content: application/json: schema: @@ -2427,6 +2421,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Credentials missing + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2447,12 +2447,6 @@ paths: type: integer format: int64 responses: - "403": - description: List tables not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: Database could not be found content: @@ -2467,6 +2461,12 @@ paths: type: array items: $ref: "#/components/schemas/TableBriefDto" + "403": + description: List tables not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2490,42 +2490,42 @@ paths: $ref: "#/components/schemas/TableCreateDto" required: true responses: - "502": - description: Connection to search service failed + "404": + description: "Database, container or user could not be found" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Create table not permitted + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new table + "403": + description: Create table not permitted content: application/json: schema: - $ref: "#/components/schemas/TableBriefDto" - "409": - description: Create table conflicts with existing table name + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, container or user could not be found" + "409": + description: Create table conflicts with existing table name content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "201": + description: Created a new table content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/TableBriefDto" "400": description: Create table query is malformed content: @@ -2568,7 +2568,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ContainerCreateDto" + $ref: "#/components/schemas/CreateContainerDto" required: true responses: "400": @@ -2577,8 +2577,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Container image or user could not be found + "201": + description: Created a new container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "403": + description: "Create container not permitted, need authority `create-container`" content: application/json: schema: @@ -2589,14 +2595,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new container - content: - application/json: - schema: - $ref: "#/components/schemas/ContainerDto" - "403": - description: "Create container not permitted, need authority `create-container`" + "404": + description: Container image or user could not be found content: application/json: schema: @@ -2646,20 +2646,6 @@ paths: schema: type: string responses: - "400": - description: Filter params are invalid - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Found entities - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/EntityDto" "404": description: Could not find ontology content: @@ -2678,6 +2664,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Filter params are invalid + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found entities + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" security: - bearerAuth: [] - basicAuth: [] @@ -2785,14 +2785,20 @@ paths: type: integer format: int64 responses: - "503": - description: Failed to find queue information in broker service + "403": + description: Not allowed to view database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to the broker service could not be established + "404": + description: "Database, user or exchange could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to find queue information in broker service content: application/json: schema: @@ -2813,14 +2819,8 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "403": - description: Not allowed to view database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, user or exchange could not be found" + "502": + description: Connection to the broker service could not be established content: application/json: schema: @@ -2850,20 +2850,22 @@ paths: type: integer format: int64 responses: - "417": - description: Generated query is malformed + "404": + description: Failed to find database/table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "422": - description: Ontology does not have rdf or sparql endpoint + "200": + description: Suggested table semantics successfully content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to parse statistic in search service + type: array + items: + $ref: "#/components/schemas/EntityDto" + "422": + description: Ontology does not have rdf or sparql endpoint content: application/json: schema: @@ -2874,20 +2876,18 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database/table in metadata database + "417": + description: Generated query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Suggested table semantics successfully + "400": + description: Failed to parse statistic in search service content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/EntityDto" + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2918,8 +2918,8 @@ paths: type: integer format: int64 responses: - "400": - description: Generated query is malformed + "404": + description: Failed to find database/table in metadata database content: application/json: schema: @@ -2930,6 +2930,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Suggested table column semantics successfully content: @@ -2938,12 +2944,6 @@ paths: type: array items: $ref: "#/components/schemas/TableColumnEntityDto" - "404": - description: Failed to find database/table in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -3023,10 +3023,54 @@ paths: $ref: "#/components/schemas/ConceptDto" components: schemas: + CreatorBriefDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 11 + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/05gq02987 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI DatabaseBriefDto: required: - contact - id + - identifiers - internal_name - is_public - is_schema_public @@ -3037,6 +3081,7 @@ components: id: type: integer format: int64 + example: 3 name: type: string example: Air Quality @@ -3061,15 +3106,18 @@ components: owner_id: type: string format: uuid + example: 2f45ef7a-7f9b-4667-9156-152c87fe1ca5 preview_image: type: string IdentifierBriefDto: required: - - created_by + - creators - database_id - id + - owned_by - publication_year - publisher + - status - titles - type type: object @@ -3077,13 +3125,19 @@ components: id: type: integer format: int64 + example: 2 type: type: string + example: database enum: - database - subset - table - view + creators: + type: array + items: + $ref: "#/components/schemas/CreatorBriefDto" titles: type: array items: @@ -3096,6 +3150,7 @@ components: example: TU Wien status: type: string + example: draft enum: - draft - published @@ -3119,9 +3174,10 @@ components: type: integer format: int32 example: 2022 - created_by: + owned_by: type: string format: uuid + example: 2f45ef7a-7f9b-4667-9156-152c87fe1ca5 IdentifierTitleDto: required: - id @@ -3130,6 +3186,7 @@ components: id: type: integer format: int64 + example: 4 title: type: string example: Airquality Demonstrator @@ -3453,6 +3510,7 @@ components: $ref: "#/components/schemas/UserBriefDto" type: type: string + example: read enum: - read - write_own @@ -3505,6 +3563,22 @@ components: - id type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: string format: uuid @@ -3778,6 +3852,7 @@ components: id: type: integer format: int64 + example: 1 registry: type: string example: docker.io/library @@ -4700,6 +4775,7 @@ components: id: type: integer format: int64 + example: 11 firstname: type: string example: Josiah @@ -4753,6 +4829,7 @@ components: id: type: integer format: int64 + example: 3 description: type: string example: "Air quality reports at Stephansplatz, Vienna" @@ -4958,13 +5035,18 @@ components: required: - creators - database_id + - descriptions + - funders - id + - language + - licenses - owner - publication_year - publisher - query - query_hash - query_normalized + - status - titles - type type: object @@ -4972,8 +5054,10 @@ components: id: type: integer format: int64 + example: 2 type: type: string + example: database enum: - database - subset @@ -5204,6 +5288,7 @@ components: $ref: "#/components/schemas/CreatorDto" status: type: string + example: draft enum: - draft - published @@ -5262,6 +5347,7 @@ components: id: type: integer format: int64 + example: 2 funder_name: type: string example: European Commission @@ -5297,6 +5383,7 @@ components: id: type: integer format: int64 + example: 8 value: type: string example: 10.70124/dc4zh-9ce78 @@ -5386,7 +5473,6 @@ components: example: true ViewColumnDto: required: - - auto_generated - database_id - id - internal_name @@ -5399,11 +5485,12 @@ components: id: type: integer format: int64 + example: 12 name: maxLength: 64 minLength: 0 type: string - example: Date + example: Given Name size: type: integer format: int64 @@ -5420,6 +5507,7 @@ components: database_id: type: integer format: int64 + example: 1 ord: type: integer format: int32 @@ -5428,19 +5516,18 @@ components: maxLength: 64 minLength: 0 type: string - example: mdb_date - auto_generated: - type: boolean - example: false + example: given_name index_length: type: integer format: int64 + example: 255 length: type: integer format: int64 + example: 255 type: type: string - example: string + example: varchar enum: - char - varchar @@ -5480,6 +5567,7 @@ components: - columns - database_id - id + - identifiers - internal_name - name - owner @@ -5487,9 +5575,26 @@ components: - query_hash type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -5512,6 +5617,7 @@ components: database_id: type: integer format: int64 + example: 1 internal_name: type: string example: air_quality @@ -5560,6 +5666,7 @@ components: id: type: integer format: int64 + example: 3 name: type: string example: Air Quality @@ -5569,6 +5676,7 @@ components: database_id: type: integer format: int64 + example: 2 internal_name: type: string example: air_quality @@ -5584,6 +5692,7 @@ components: owned_by: type: string format: uuid + example: 78337b80-5699-45db-8111-cec86439ab6b ColumnSemanticsUpdateDto: type: object properties: @@ -5640,12 +5749,18 @@ components: example: Column comment enums: type: array + example: + - val1 items: type: string + example: "[\"val1\"]" sets: type: array + example: + - val1 items: type: string + example: "[\"val1\"]" database_id: type: integer format: int64 @@ -5781,13 +5896,14 @@ components: properties: key: type: string - UpdateDatabaseAccessDto: + CreateAccessDto: required: - type type: object properties: type: type: string + example: read enum: - read - write_own @@ -6213,6 +6329,7 @@ components: id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -6222,6 +6339,7 @@ components: database_id: type: integer format: int64 + example: 1 internal_name: type: string example: air_quality @@ -6241,6 +6359,7 @@ components: owned_by: type: string format: uuid + example: ac750fcf-ea02-4fce-85ac-d73857e18b35 ColumnCreateDto: required: - name @@ -6412,7 +6531,7 @@ components: is_schema_public: type: boolean example: true - ContainerCreateDto: + CreateContainerDto: required: - host - image_id @@ -6428,10 +6547,12 @@ components: host: type: string description: Hostname of container + example: data-db2 port: type: integer description: Port of container format: int32 + example: 3306 quota: type: integer format: int64 @@ -6440,11 +6561,14 @@ components: type: integer description: Image ID format: int64 + example: 1 ui_host: type: string + example: example.com ui_port: type: integer format: int32 + example: 3306 privileged_username: type: string description: Username of privileged user @@ -6452,6 +6576,7 @@ components: privileged_password: type: string description: Password of privileged user + example: dbrepo ContainerDto: required: - count @@ -6462,9 +6587,26 @@ components: - quota type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -6483,42 +6625,52 @@ components: format: date-time internal_name: type: string - example: data-db + example: air_quality ui_host: type: string + example: example.com ui_port: type: integer format: int32 + example: 3306 ColumnBriefDto: required: - - column_type - database_id - id - internal_name - name - table_id + - type type: object properties: id: type: integer format: int64 + example: 1 name: + maxLength: 64 + minLength: 0 type: string - example: date + example: Given Name alias: type: string + example: firstname database_id: type: integer format: int64 + example: 2 table_id: type: integer format: int64 + example: 3 internal_name: + maxLength: 64 + minLength: 0 type: string - example: mdb_date - column_type: + example: given_name + type: type: string - example: date + example: varchar enum: - char - varchar @@ -6678,6 +6830,7 @@ components: id: type: integer format: int64 + example: 5 name: type: string example: mariadb @@ -6762,8 +6915,11 @@ components: checks: uniqueItems: true type: array + example: + - value > 1 items: type: string + example: "[\"value > 1\"]" foreign_keys: type: array items: @@ -6779,6 +6935,7 @@ components: id: type: integer format: int64 + example: 8 ForeignKeyDto: required: - name @@ -6790,8 +6947,10 @@ components: id: type: integer format: int64 + example: 4 name: type: string + example: fk_name references: type: array items: @@ -6802,6 +6961,7 @@ components: $ref: "#/components/schemas/TableBriefDto" on_update: type: string + example: restrict enum: - restrict - cascade @@ -6810,6 +6970,7 @@ components: - set_default on_delete: type: string + example: restrict enum: - restrict - cascade @@ -6826,6 +6987,7 @@ components: id: type: integer format: int64 + example: 8 column: $ref: "#/components/schemas/ColumnBriefDto" foreign_key: @@ -6841,6 +7003,7 @@ components: id: type: integer format: int64 + example: 8 table: $ref: "#/components/schemas/TableBriefDto" column: @@ -6861,14 +7024,32 @@ components: - routing_key type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 3 name: type: string example: Air Quality alias: type: string + example: a identifiers: type: array items: @@ -6892,6 +7073,7 @@ components: database_id: type: integer format: int64 + example: 2 internal_name: type: string example: air_quality @@ -6943,14 +7125,16 @@ components: id: type: integer format: int64 + example: 5 name: type: string + example: uk_name table: $ref: "#/components/schemas/TableBriefDto" columns: type: array items: - $ref: "#/components/schemas/ColumnDto" + $ref: "#/components/schemas/ColumnBriefDto" TableColumnEntityDto: required: - column_id @@ -6994,6 +7178,7 @@ components: id: type: integer format: int64 + example: 4 hash: type: string example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 diff --git a/.docs/.openapi/api.yaml b/.docs/.openapi/api.yaml index ef55c74ae9..3338c9d6a2 100644 --- a/.docs/.openapi/api.yaml +++ b/.docs/.openapi/api.yaml @@ -1617,7 +1617,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateDatabaseAccessDto' + $ref: '#/components/schemas/CreateAccessDto' required: true responses: '202': @@ -1684,7 +1684,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateDatabaseAccessDto' + $ref: '#/components/schemas/CreateAccessDto' required: true responses: '202': @@ -4002,7 +4002,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ContainerCreateDto' + $ref: '#/components/schemas/CreateContainerDto' required: true responses: '201': @@ -4806,10 +4806,18 @@ components: type: object additionalProperties: type: object + example: + key: value + example: + key: value keys: type: object additionalProperties: type: object + example: + id: 1 + example: + id: 1 QueryPersistDto: required: - persist @@ -4818,13 +4826,58 @@ components: persist: type: boolean example: true + CreatorBriefDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + example: 11 + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: 'Carberry, Josiah' + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: 'https://ror.org/05gq02987' + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI IdentifierBriefDto: required: - - created_by + - creators - database_id - id + - owned_by - publication_year - publisher + - status - titles - type type: object @@ -4832,13 +4885,19 @@ components: id: type: integer format: int64 + example: 2 type: type: string + example: database enum: - database - subset - table - view + creators: + type: array + items: + $ref: '#/components/schemas/CreatorBriefDto' titles: type: array items: @@ -4851,6 +4910,7 @@ components: example: TU Wien status: type: string + example: draft enum: - draft - published @@ -4874,9 +4934,10 @@ components: type: integer format: int32 example: 2022 - created_by: + owned_by: type: string format: uuid + example: 2f45ef7a-7f9b-4667-9156-152c87fe1ca5 IdentifierTitleDto: required: - id @@ -4885,6 +4946,7 @@ components: id: type: integer format: int64 + example: 4 title: type: string example: Airquality Demonstrator @@ -5099,6 +5161,7 @@ components: id: type: integer format: int64 + example: 4 owner: $ref: '#/components/schemas/UserBriefDto' execution: @@ -5121,6 +5184,7 @@ components: database_id: type: integer format: int64 + example: 1 query_normalized: type: string example: SELECT `id` FROM `air_quality` @@ -5175,6 +5239,10 @@ components: type: object additionalProperties: type: object + example: + key: value + example: + key: value ImportDto: required: - header @@ -5190,6 +5258,7 @@ components: description: >- If true, the first line contains the column names, otherwise it contains only data + example: true separator: type: string example: ',' @@ -5233,10 +5302,15 @@ components: type: object additionalProperties: type: object + example: + id: 1 + example: + id: 1 DatabaseBriefDto: required: - contact - id + - identifiers - internal_name - is_public - is_schema_public @@ -5247,6 +5321,7 @@ components: id: type: integer format: int64 + example: 3 name: type: string example: Air Quality @@ -5271,6 +5346,7 @@ components: owner_id: type: string format: uuid + example: 2f45ef7a-7f9b-4667-9156-152c87fe1ca5 preview_image: type: string DatabaseAccessDto: @@ -5283,6 +5359,7 @@ components: $ref: '#/components/schemas/UserBriefDto' type: type: string + example: read enum: - read - write_own @@ -5335,6 +5412,22 @@ components: - id type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: string format: uuid @@ -5608,6 +5701,7 @@ components: id: type: integer format: int64 + example: 1 registry: type: string example: docker.io/library @@ -6531,6 +6625,7 @@ components: id: type: integer format: int64 + example: 11 firstname: type: string example: Josiah @@ -6584,6 +6679,7 @@ components: id: type: integer format: int64 + example: 3 description: type: string example: 'Air quality reports at Stephansplatz, Vienna' @@ -6789,13 +6885,18 @@ components: required: - creators - database_id + - descriptions + - funders - id + - language + - licenses - owner - publication_year - publisher - query - query_hash - query_normalized + - status - titles - type type: object @@ -6803,8 +6904,10 @@ components: id: type: integer format: int64 + example: 2 type: type: string + example: database enum: - database - subset @@ -7036,6 +7139,7 @@ components: $ref: '#/components/schemas/CreatorDto' status: type: string + example: draft enum: - draft - published @@ -7095,6 +7199,7 @@ components: id: type: integer format: int64 + example: 2 funder_name: type: string example: European Commission @@ -7130,6 +7235,7 @@ components: id: type: integer format: int64 + example: 8 value: type: string example: 10.70124/dc4zh-9ce78 @@ -7219,7 +7325,6 @@ components: example: true ViewColumnDto: required: - - auto_generated - database_id - id - internal_name @@ -7232,11 +7337,12 @@ components: id: type: integer format: int64 + example: 12 name: maxLength: 64 minLength: 0 type: string - example: Date + example: Given Name size: type: integer format: int64 @@ -7253,6 +7359,7 @@ components: database_id: type: integer format: int64 + example: 1 ord: type: integer format: int32 @@ -7261,19 +7368,18 @@ components: maxLength: 64 minLength: 0 type: string - example: mdb_date - auto_generated: - type: boolean - example: false + example: given_name index_length: type: integer format: int64 + example: 255 length: type: integer format: int64 + example: 255 type: type: string - example: string + example: varchar enum: - char - varchar @@ -7313,6 +7419,7 @@ components: - columns - database_id - id + - identifiers - internal_name - name - owner @@ -7320,9 +7427,26 @@ components: - query_hash type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -7345,6 +7469,7 @@ components: database_id: type: integer format: int64 + example: 1 internal_name: type: string example: air_quality @@ -7393,6 +7518,7 @@ components: id: type: integer format: int64 + example: 3 name: type: string example: Air Quality @@ -7402,6 +7528,7 @@ components: database_id: type: integer format: int64 + example: 2 internal_name: type: string example: air_quality @@ -7417,6 +7544,7 @@ components: owned_by: type: string format: uuid + example: 78337b80-5699-45db-8111-cec86439ab6b ColumnSemanticsUpdateDto: type: object properties: @@ -7473,12 +7601,18 @@ components: example: Column comment enums: type: array + example: + - val1 items: type: string + example: '["val1"]' sets: type: array + example: + - val1 items: type: string + example: '["val1"]' database_id: type: integer format: int64 @@ -7615,13 +7749,14 @@ components: properties: key: type: string - UpdateDatabaseAccessDto: + CreateAccessDto: required: - type type: object properties: type: type: string + example: read enum: - read - write_own @@ -8047,6 +8182,7 @@ components: id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -8056,6 +8192,7 @@ components: database_id: type: integer format: int64 + example: 1 internal_name: type: string example: air_quality @@ -8075,6 +8212,7 @@ components: owned_by: type: string format: uuid + example: ac750fcf-ea02-4fce-85ac-d73857e18b35 ColumnCreateDto: required: - name @@ -8246,7 +8384,7 @@ components: is_schema_public: type: boolean example: true - ContainerCreateDto: + CreateContainerDto: required: - host - image_id @@ -8262,10 +8400,12 @@ components: host: type: string description: Hostname of container + example: data-db2 port: type: integer description: Port of container format: int32 + example: 3306 quota: type: integer format: int64 @@ -8274,11 +8414,14 @@ components: type: integer description: Image ID format: int64 + example: 1 ui_host: type: string + example: example.com ui_port: type: integer format: int32 + example: 3306 privileged_username: type: string description: Username of privileged user @@ -8286,6 +8429,7 @@ components: privileged_password: type: string description: Password of privileged user + example: dbrepo ContainerDto: required: - count @@ -8296,9 +8440,26 @@ components: - quota type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 4 name: type: string example: Air Quality @@ -8317,42 +8478,52 @@ components: format: date-time internal_name: type: string - example: data-db + example: air_quality ui_host: type: string + example: example.com ui_port: type: integer format: int32 + example: 3306 ColumnBriefDto: required: - - column_type - database_id - id - internal_name - name - table_id + - type type: object properties: id: type: integer format: int64 + example: 1 name: + maxLength: 64 + minLength: 0 type: string - example: date + example: Given Name alias: type: string + example: firstname database_id: type: integer format: int64 + example: 2 table_id: type: integer format: int64 + example: 3 internal_name: + maxLength: 64 + minLength: 0 type: string - example: mdb_date - column_type: + example: given_name + type: type: string - example: date + example: varchar enum: - char - varchar @@ -8512,6 +8683,7 @@ components: id: type: integer format: int64 + example: 5 name: type: string example: mariadb @@ -8596,8 +8768,11 @@ components: checks: uniqueItems: true type: array + example: + - value > 1 items: type: string + example: '["value > 1"]' foreign_keys: type: array items: @@ -8613,6 +8788,7 @@ components: id: type: integer format: int64 + example: 8 ForeignKeyDto: required: - name @@ -8624,8 +8800,10 @@ components: id: type: integer format: int64 + example: 4 name: type: string + example: fk_name references: type: array items: @@ -8636,6 +8814,7 @@ components: $ref: '#/components/schemas/TableBriefDto' on_update: type: string + example: restrict enum: - restrict - cascade @@ -8644,6 +8823,7 @@ components: - set_default on_delete: type: string + example: restrict enum: - restrict - cascade @@ -8660,6 +8840,7 @@ components: id: type: integer format: int64 + example: 8 column: $ref: '#/components/schemas/ColumnBriefDto' foreign_key: @@ -8675,6 +8856,7 @@ components: id: type: integer format: int64 + example: 8 table: $ref: '#/components/schemas/TableBriefDto' column: @@ -8695,14 +8877,32 @@ components: - routing_key type: object properties: + jdbcMethod: + type: string + example: mariadb + host: + type: string + example: data-db + port: + type: integer + format: int32 + example: 3306 + username: + type: string + example: username + database: + type: string + example: air_quality id: type: integer format: int64 + example: 3 name: type: string example: Air Quality alias: type: string + example: a identifiers: type: array items: @@ -8726,6 +8926,7 @@ components: database_id: type: integer format: int64 + example: 2 internal_name: type: string example: air_quality @@ -8777,14 +8978,16 @@ components: id: type: integer format: int64 + example: 5 name: type: string + example: uk_name table: $ref: '#/components/schemas/TableBriefDto' columns: type: array items: - $ref: '#/components/schemas/ColumnDto' + $ref: '#/components/schemas/ColumnBriefDto' TableColumnEntityDto: required: - column_id @@ -8828,6 +9031,7 @@ components: id: type: integer format: int64 + example: 4 hash: type: string example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 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 99df658030..4d3803a1e1 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; +import at.tuwien.api.database.CreateAccessDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.UpdateDatabaseAccessDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.api.user.UserDto; import at.tuwien.exception.*; @@ -76,7 +76,7 @@ public class AccessEndpoint extends RestEndpoint { }) public ResponseEntity<Void> create(@NotNull @PathVariable("databaseId") Long databaseId, @PathVariable("userId") UUID userId, - @Valid @RequestBody UpdateDatabaseAccessDto data) + @Valid @RequestBody CreateAccessDto data) throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseMalformedException, MetadataServiceException { log.debug("endpoint give access to database, databaseId={}, userId={}", databaseId, userId); @@ -132,7 +132,7 @@ public class AccessEndpoint extends RestEndpoint { }) public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId, @PathVariable("userId") UUID userId, - @Valid @RequestBody UpdateDatabaseAccessDto access) throws NotAllowedException, + @Valid @RequestBody CreateAccessDto access) throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseMalformedException, MetadataServiceException { log.debug("endpoint modify access to database, databaseId={}, userId={}, access.type={}", databaseId, userId, 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 077ec5b819..35c6466747 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 @@ -288,7 +288,7 @@ public class TableEndpoint extends RestEndpoint { headers.set("Access-Control-Expose-Headers", "X-Headers"); headers.set("X-Headers", String.join(",", table.getColumns().stream().map(ColumnDto::getInternalName).toList())); final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(table.getTdbid()), - table.getInternalName(), timestamp, null, null, null, null); + table.getInternalName(), timestamp, page, size, null, null); metricsService.countTableGetData(databaseId, tableId); return ResponseEntity.ok() .headers(headers) 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 5b96a5934b..e287cd9d9c 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 @@ -176,7 +176,6 @@ public interface DataMapper { default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view, QueryConfig queryConfig) throws SQLException { final ViewColumnDto column = ViewColumnDto.builder() .ordinalPosition(resultSet.getInt(1) - 1) /* start at zero */ - .autoGenerated(resultSet.getString(2) != null && resultSet.getString(2).startsWith("nextval")) .isNullAllowed(resultSet.getString(3).equals("YES")) .columnType(ColumnTypeDto.valueOf(resultSet.getString(4).toUpperCase())) .d(resultSet.getString(7) != null ? resultSet.getLong(7) : null) @@ -256,7 +255,7 @@ public interface DataMapper { if (optional2.isPresent()) { optional2.get() .getColumns() - .add(column); + .add(columnDtoToColumnBriefDto(column)); return table; } if (type.equals("UNIQUE")) { @@ -264,7 +263,7 @@ public interface DataMapper { .getUniques() .add(UniqueDto.builder() .name(name) - .columns(new LinkedList<>(List.of(column))) + .columns(new LinkedList<>(List.of(columnDtoToColumnBriefDto(column)))) .build()); return table; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java index 66de637504..4ff6f699d6 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java @@ -2,6 +2,7 @@ package at.tuwien.api; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @@ -16,22 +17,23 @@ import java.time.Instant; public abstract class CacheableDto { @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; @ToString.Exclude - @JsonIgnore + @Schema(example = "mariadb") private String jdbcMethod; @ToString.Exclude - @JsonIgnore + @Schema(example = "data-db") private String host; @ToString.Exclude - @JsonIgnore + @Schema(example = "3306") private Integer port; @ToString.Exclude - @JsonIgnore + @Schema(example = "username") private String username; @ToString.Exclude @@ -39,7 +41,7 @@ public abstract class CacheableDto { private String password; @ToString.Exclude - @JsonIgnore + @Schema(example = "air_quality") private String database; } 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 9b1f8fcd47..71e7601b16 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 @@ -22,6 +22,7 @@ import java.time.Instant; public class ContainerBriefDto { @NotNull + @Schema(example = "4") private Long id; @NotNull 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 da782c2bb7..56d0df315f 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 @@ -2,7 +2,6 @@ package at.tuwien.api.container; import at.tuwien.api.CacheableDto; import at.tuwien.api.container.image.ImageDto; -import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -16,6 +15,7 @@ import java.time.Instant; @Getter @Setter @Builder +@EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Jacksonized @@ -23,6 +23,7 @@ import java.time.Instant; public class ContainerDto extends CacheableDto { @NotNull + @Schema(example = "4") private Long id; @NotBlank @@ -31,19 +32,15 @@ public class ContainerDto extends CacheableDto { @NotBlank @JsonProperty("internal_name") - @Schema(example = "data-db") + @Schema(example = "air_quality") private String internalName; - @NotBlank - private String host; - - @NotNull - private Integer port; - @JsonProperty("ui_host") + @Schema(example = "example.com") private String uiHost; @JsonProperty("ui_port") + @Schema(example = "3306") private Integer uiPort; @NotNull @@ -60,14 +57,23 @@ public class ContainerDto extends CacheableDto { /* lombok limitations prevent from convenient builder functions */ @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; @ToString.Exclude - @JsonIgnore + @Schema(example = "mariadb") private String jdbcMethod; @ToString.Exclude - @JsonIgnore + @Schema(example = "data-db") + private String host; + + @ToString.Exclude + @Schema(example = "3306") + private Integer port; + + @ToString.Exclude + @Schema(example = "username") private String username; @ToString.Exclude @@ -75,7 +81,7 @@ public class ContainerDto extends CacheableDto { private String password; @ToString.Exclude - @JsonIgnore + @Schema(example = "air_quality") private String database; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java similarity index 68% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java index 86b50bea70..23062ffd90 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java @@ -14,7 +14,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class ContainerCreateDto { +public class CreateContainerDto { @NotBlank @Schema(example = "Air Quality") @@ -22,20 +22,22 @@ public class ContainerCreateDto { @NotNull @JsonProperty("image_id") - @Schema(description = "Image ID") + @Schema(example = "1", description = "Image ID") private Long imageId; @NotBlank - @Schema(description = "Hostname of container") + @Schema(example = "data-db2", description = "Hostname of container") private String host; - @Schema(description = "Port of container") + @Schema(example = "3306", description = "Port of container") private Integer port; @JsonProperty("ui_host") + @Schema(example = "example.com") private String uiHost; @JsonProperty("ui_port") + @Schema(example = "3306") private Integer uiPort; @NotNull @@ -44,11 +46,11 @@ public class ContainerCreateDto { @NotBlank @JsonProperty("privileged_username") - @Schema(description = "Username of privileged user", example = "root") + @Schema(example = "root", description = "Username of privileged user") private String privilegedUsername; @NotBlank @JsonProperty("privileged_password") - @Schema(description = "Password of privileged user") + @Schema(example = "dbrepo", description = "Password of privileged user") private String privilegedPassword; } 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 880db11fbd..6a9a970c0f 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 @@ -18,6 +18,7 @@ import lombok.extern.jackson.Jacksonized; public class ImageBriefDto { @NotNull + @Schema(example = "5") private Long id; @NotBlank 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 3baa76171b..a9c37fb848 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 @@ -20,6 +20,7 @@ import java.util.List; public class ImageDto { @NotNull + @Schema(example = "1") private Long id; @NotBlank diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java index a93e89ec96..fa0f6fea49 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java @@ -1,9 +1,11 @@ package at.tuwien.api.database; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @Getter +@Schema public enum AccessTypeDto { @JsonProperty("read") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/UpdateDatabaseAccessDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateAccessDto.java similarity index 72% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/UpdateDatabaseAccessDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateAccessDto.java index 32084c865f..965e10afd5 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/UpdateDatabaseAccessDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateAccessDto.java @@ -1,5 +1,6 @@ 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; @@ -12,9 +13,10 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class UpdateDatabaseAccessDto { +public class CreateAccessDto { @NotNull + @Schema(example = "read") private AccessTypeDto type; 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 7e929eb748..d065a5892a 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 @@ -3,6 +3,7 @@ package at.tuwien.api.database; import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -31,6 +32,7 @@ public class DatabaseAccessDto { private UserBriefDto user; @NotNull + @Schema(example = "read") private AccessTypeDto type; } 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 7b47a617ec..4cff48db18 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,6 +23,7 @@ import java.util.UUID; public class DatabaseBriefDto { @NotNull + @Schema(example = "3") private Long id; @NotBlank @@ -47,6 +48,7 @@ public class DatabaseBriefDto { @Schema(example = "true") private Boolean isSchemaPublic; + @NotNull private List<IdentifierBriefDto> identifiers; @NotNull @@ -54,6 +56,7 @@ public class DatabaseBriefDto { @NotNull @JsonProperty("owner_id") + @Schema(example = "2f45ef7a-7f9b-4667-9156-152c87fe1ca5") private UUID ownerId; @JsonProperty("preview_image") 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 044e52df38..c6866c494b 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 @@ -27,6 +27,7 @@ import java.util.List; public class DatabaseDto extends CacheableDto { @NotNull + @Schema(example = "3") private Long id; @NotBlank @@ -50,8 +51,10 @@ public class DatabaseDto extends CacheableDto { @Schema(example = "Air Quality") private String description; + @NotNull private List<TableDto> tables; + @NotNull private List<ViewDto> views; @NotNull @@ -67,10 +70,13 @@ public class DatabaseDto extends CacheableDto { @NotNull private ContainerDto container; + @NotNull private List<DatabaseAccessDto> accesses; + @NotNull private List<IdentifierDto> identifiers; + @NotNull private List<IdentifierDto> subsets; @NotNull @@ -85,22 +91,23 @@ public class DatabaseDto extends CacheableDto { /* lombok limitations prevent from convenient builder functions */ @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; @ToString.Exclude - @JsonIgnore + @Schema(example = "mariadb") private String jdbcMethod; @ToString.Exclude - @JsonIgnore + @Schema(example = "data-db") private String host; @ToString.Exclude - @JsonIgnore + @Schema(example = "3306") private Integer port; @ToString.Exclude - @JsonIgnore + @Schema(example = "username") private String username; @ToString.Exclude @@ -108,7 +115,7 @@ public class DatabaseDto extends CacheableDto { private String password; @ToString.Exclude - @JsonIgnore + @Schema(example = "air_quality") private String database; } 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 9b7c9fca89..f68067e8a8 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,10 +20,12 @@ import java.util.UUID; public class ViewBriefDto { @NotNull + @Schema(example = "4") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "1") private Long vdbid; @NotBlank @@ -31,8 +33,8 @@ public class ViewBriefDto { private String name; @NotBlank - @JsonProperty("internal_name") @Schema(example = "air_quality") + @JsonProperty("internal_name") private String internalName; @JsonProperty("is_public") @@ -57,6 +59,7 @@ public class ViewBriefDto { private String queryHash; @JsonProperty("owned_by") + @Schema(example = "ac750fcf-ea02-4fce-85ac-d73857e18b35") private UUID ownedBy; } 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 4005433afe..24cca8e4cc 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 @@ -20,42 +20,41 @@ import lombok.extern.jackson.Jacksonized; public class ViewColumnDto { @NotNull + @Schema(example = "12") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "1") private Long databaseId; @NotNull - @Schema(example = "0") @JsonProperty("ord") + @Schema(example = "0") private Integer ordinalPosition; @NotBlank @Size(max = 64) - @Schema(example = "Date") + @Schema(example = "Given Name") private String name; @NotBlank @Size(max = 64) @JsonProperty("internal_name") - @Schema(example = "mdb_date") + @Schema(example = "given_name") private String internalName; - @NotNull - @JsonProperty("auto_generated") - @Schema(example = "false") - private Boolean autoGenerated; - @JsonProperty("index_length") + @Schema(example = "255") private Long indexLength; @JsonProperty("length") + @Schema(example = "255") private Long length; @NotNull @JsonProperty("type") - @Schema(example = "string") + @Schema(example = "varchar") private ColumnTypeDto columnType; @Schema(example = "255") 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 13e64911f5..2785cf7107 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 @@ -25,16 +25,19 @@ import java.util.List; public class ViewDto extends CacheableDto { @NotNull + @Schema(example = "4") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "1") private Long vdbid; @NotBlank @Schema(example = "Air Quality") private String name; + @NotNull private List<IdentifierDto> identifiers; @NotBlank @@ -72,22 +75,23 @@ public class ViewDto extends CacheableDto { /* lombok limitations prevent from convenient builder functions */ @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; @ToString.Exclude - @JsonIgnore + @Schema(example = "mariadb") private String jdbcMethod; @ToString.Exclude - @JsonIgnore + @Schema(example = "data-db") private String host; @ToString.Exclude - @JsonIgnore + @Schema(example = "3306") private Integer port; @ToString.Exclude - @JsonIgnore + @Schema(example = "username") private String username; @ToString.Exclude @@ -95,7 +99,7 @@ public class ViewDto extends CacheableDto { private String password; @ToString.Exclude - @JsonIgnore + @Schema(example = "air_quality") private String database; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ImportDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ImportDto.java index 39cb6683a1..20817e0176 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ImportDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ImportDto.java @@ -22,7 +22,7 @@ public class ImportDto { private String location; @NotNull - @Schema(description = "If true, the first line contains the column names, otherwise it contains only data") + @Schema(example = "true", description = "If true, the first line contains the column names, otherwise it contains only data") private Boolean header; @NotNull 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 cd1659e73c..41cb641a5d 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 @@ -24,10 +24,12 @@ import java.util.List; public class QueryDto { @NotNull + @Schema(example = "4") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "1") private Long databaseId; @NotNull diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java index afc03ab97f..4df28733cd 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.database.query; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +@Schema public enum QueryTypeDto { @JsonProperty("query") 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 29531012f1..98932f30a2 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,10 +20,12 @@ import java.util.UUID; public class TableBriefDto { @NotNull + @Schema(example = "3") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "2") private Long databaseId; @NotBlank @@ -55,5 +57,6 @@ public class TableBriefDto { @NotNull @JsonProperty("owned_by") + @Schema(example = "78337b80-5699-45db-8111-cec86439ab6b") private UUID ownedBy; } 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 cf18e321a4..ba80f473b8 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 @@ -28,10 +28,12 @@ import java.util.List; public class TableDto extends CacheableDto { @NotNull + @Schema(example = "3") private Long id; @NotNull @JsonProperty("database_id") + @Schema(example = "2") private Long tdbid; @NotBlank @@ -43,7 +45,7 @@ public class TableDto extends CacheableDto { @Schema(example = "air_quality") private String internalName; - @Schema + @Schema(example = "a") private String alias; private List<IdentifierDto> identifiers; @@ -109,22 +111,23 @@ public class TableDto extends CacheableDto { /* lombok limitations prevent from convenient builder functions */ @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; @ToString.Exclude - @JsonIgnore + @Schema(example = "mariadb") private String jdbcMethod; @ToString.Exclude - @JsonIgnore + @Schema(example = "data-db") private String host; @ToString.Exclude - @JsonIgnore + @Schema(example = "3306") private Integer port; @ToString.Exclude - @JsonIgnore + @Schema(example = "username") private String username; @ToString.Exclude @@ -132,7 +135,7 @@ public class TableDto extends CacheableDto { private String password; @ToString.Exclude - @JsonIgnore + @Schema(example = "air_quality") private String database; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDeleteDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDeleteDto.java index 6c3a946e12..f74ffb3d89 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDeleteDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDeleteDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.database.table; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -17,6 +18,7 @@ import java.util.Map; public class TupleDeleteDto { @NotNull + @Schema(example = "{\"id\": 1}") private Map<String, Object> keys; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDto.java index 62f57434b6..13dc2b9723 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.database.table; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -17,6 +18,7 @@ import java.util.Map; public class TupleDto { @NotNull + @Schema(example = "{\"key\": \"value\"}") private Map<String, Object> data; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleUpdateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleUpdateDto.java index be50791b94..ab3f1ae875 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleUpdateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TupleUpdateDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.database.table; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -17,9 +18,11 @@ import java.util.Map; public class TupleUpdateDto { @NotNull + @Schema(example = "{\"key\": \"value\"}") private Map<String, Object> data; @NotNull + @Schema(example = "{\"id\": 1}") private Map<String, Object> keys; } \ No newline at end of file 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 4dee5f0837..bc13700bdd 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 @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -18,31 +19,36 @@ import lombok.extern.jackson.Jacksonized; public class ColumnBriefDto { @NotNull + @Schema(example = "1") private Long id; - @JsonProperty("database_id") @NotNull + @Schema(example = "2") + @JsonProperty("database_id") private Long databaseId; - @JsonProperty("table_id") @NotNull + @Schema(example = "3") + @JsonProperty("table_id") private Long tableId; @NotBlank - @Schema(example = "date") + @Size(max = 64) + @Schema(example = "Given Name") private String name; @NotBlank + @Size(max = 64) @JsonProperty("internal_name") - @Schema(example = "mdb_date") + @Schema(example = "given_name") private String internalName; - @Schema + @Schema(example = "firstname") private String alias; @NotNull - @JsonProperty("column_type") - @Schema(example = "date") + @JsonProperty("type") + @Schema(example = "varchar") private ColumnTypeDto columnType; } 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 465bd3bd1e..462821b53c 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 @@ -29,18 +29,18 @@ public class ColumnDto { private Long id; @NotNull - @Schema(example = "2") @JsonProperty("database_id") + @Schema(example = "2") private Long databaseId; @NotNull - @Schema(example = "3") @JsonProperty("table_id") + @Schema(example = "3") private Long tableId; @NotNull - @Schema(example = "0") @JsonProperty("ord") + @Schema(example = "0") private Integer ordinalPosition; @NotBlank @@ -119,9 +119,11 @@ public class ColumnDto { @Schema(example = "false") private Boolean isNullAllowed; + @Schema(example = "[\"val1\"]") @Parameter(description = "enum values, only considered when type = ENUM") private List<String> enums; + @Schema(example = "[\"val1\"]") @Parameter(description = "enum values, only considered when type = ENUM") private List<String> sets; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java index d44b25b84e..a963370829 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java @@ -1,10 +1,12 @@ package at.tuwien.api.database.table.columns; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; /* MYSQL 8 */ @Getter +@Schema public enum ColumnTypeDto { @JsonProperty("char") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java index 3cd36f6d68..b9288b659b 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java @@ -4,6 +4,7 @@ import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -24,6 +25,7 @@ public class ConstraintsDto { @JsonProperty("foreign_keys") private List<ForeignKeyDto> foreignKeys; + @Schema(example = "[\"value > 1\"]") private Set<String> checks; @JsonProperty("primary_key") 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 58a4d5b245..a22b8749ae 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 @@ -1,5 +1,6 @@ package at.tuwien.api.database.table.constraints.foreign; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -12,5 +13,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ForeignKeyBriefDto { + @NonNull + @Schema(example = "8") private Long 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 8016de9131..254666f9eb 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 @@ -4,6 +4,7 @@ import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnDto; 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; @@ -19,9 +20,11 @@ import java.util.List; @ToString public class ForeignKeyDto { + @Schema(example = "4") private Long id; @NotNull + @Schema(example = "fk_name") private String name; @NotNull @@ -35,8 +38,10 @@ public class ForeignKeyDto { private TableBriefDto referencedTable; @JsonProperty("on_update") + @Schema(example = "restrict") private ReferenceTypeDto onUpdate; @JsonProperty("on_delete") + @Schema(example = "restrict") private ReferenceTypeDto onDelete; } 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 55fcc46ecf..f0d5b249cd 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 @@ -2,6 +2,7 @@ package at.tuwien.api.database.table.constraints.foreign; import at.tuwien.api.database.table.columns.ColumnBriefDto; 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; @@ -15,6 +16,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ForeignKeyReferenceDto { + @Schema(example = "8") private Long id; @NotNull 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 80df5d443b..86d1d49960 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 @@ -2,6 +2,7 @@ package at.tuwien.api.database.table.constraints.primary; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.columns.ColumnBriefDto; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -15,6 +16,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class PrimaryKeyDto { + @Schema(example = "8") private Long id; @NotNull 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 2bcc9d6cf4..755f3a31b7 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 @@ -1,13 +1,11 @@ - package at.tuwien.api.database.table.constraints.unique; import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.database.table.columns.ColumnBriefDto; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.annotation.Id; import java.util.List; @@ -21,14 +19,16 @@ import java.util.List; public class UniqueDto { @NotNull + @Schema(example = "5") private Long id; @NotNull + @Schema(example = "uk_name") private String name; @NotNull private TableBriefDto table; @NotNull - private List<ColumnDto> columns; + private List<ColumnBriefDto> columns; } 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 new file mode 100644 index 0000000000..8265a1106b --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java @@ -0,0 +1,53 @@ +package at.tuwien.api.identifier; + +import com.fasterxml.jackson.annotation.JsonProperty; +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 CreatorBriefDto { + + @NotNull + @Schema(example = "11") + private Long id; + + @NotBlank + @JsonProperty("creator_name") + @Schema(example = "Carberry, Josiah") + private String creatorName; + + @JsonProperty("name_type") + @Schema(example = "Personal") + private NameTypeDto nameType; + + @JsonProperty("name_identifier") + @Schema(example = "0000-0002-1825-0097") + private String nameIdentifier; + + @JsonProperty("name_identifier_scheme") + @Schema(example = "ORCID") + private NameIdentifierSchemeTypeDto nameIdentifierScheme; + + @Schema(example = "Brown University") + private String affiliation; + + @JsonProperty("affiliation_identifier") + @Schema(example = "https://ror.org/05gq02987") + private String affiliationIdentifier; + + @JsonProperty("affiliation_identifier_scheme") + @Schema(example = "ROR") + private AffiliationIdentifierSchemeTypeDto affiliationIdentifierScheme; + +} 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 9c166f869c..a3a2976901 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 @@ -21,6 +21,7 @@ import org.springframework.data.annotation.Id; public class CreatorDto { @NotNull + @Schema(example = "11") private Long id; @Schema(example = "Josiah") 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 82ff3b0fe7..97f3502674 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,6 +20,7 @@ import java.util.UUID; public class IdentifierBriefDto { @NotNull + @Schema(example = "2") private Long id; @NotNull @@ -40,8 +41,12 @@ public class IdentifierBriefDto { private Long viewId; @NotNull + @Schema(example = "database") private IdentifierTypeDto type; + @NotNull + private List<CreatorBriefDto> creators; + @NotNull private List<IdentifierTitleDto> titles; @@ -57,10 +62,13 @@ public class IdentifierBriefDto { @Schema(example = "2022") private Integer publicationYear; + @NotNull + @Schema(example = "draft") private IdentifierStatusTypeDto status; @NotNull - @JsonProperty("created_by") - private UUID createdBy; + @JsonProperty("owned_by") + @Schema(example = "2f45ef7a-7f9b-4667-9156-152c87fe1ca5") + private UUID ownedBy; } 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 55e6ff7621..fbcbb3afe7 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 @@ -19,6 +19,7 @@ import org.springframework.data.annotation.Id; public class IdentifierDescriptionDto { @NotNull + @Schema(example = "3") private Long id; @Schema(example = "Air quality reports at Stephansplatz, Vienna") 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 87baf48706..53d40ecd78 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 @@ -25,6 +25,7 @@ import java.util.List; public class IdentifierDto { @NotNull + @Schema(example = "2") private Long id; @NotNull @@ -45,13 +46,16 @@ public class IdentifierDto { private Long viewId; @NotNull + @Schema(example = "database") private IdentifierTypeDto type; @NotNull private List<IdentifierTitleDto> titles; + @NotNull private List<IdentifierDescriptionDto> descriptions; + @NotNull private List<IdentifierFunderDto> funders; @NotBlank @@ -106,13 +110,17 @@ public class IdentifierDto { @Schema(example = "2022") private Integer publicationYear; + @NotNull private LanguageTypeDto language; + @NotNull private List<LicenseDto> licenses; @NotNull private List<CreatorDto> creators; + @NotNull + @Schema(example = "draft") private IdentifierStatusTypeDto status; } 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 921ba3eb98..93084d2d17 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 @@ -19,6 +19,7 @@ import org.springframework.data.annotation.Id; public class IdentifierFunderDto { @NotNull + @Schema(example = "2") private Long id; @NotBlank 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 9333a05ce9..27e3b323ea 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 @@ -19,6 +19,7 @@ import org.springframework.data.annotation.Id; public class IdentifierTitleDto { @NotNull + @Schema(example = "4") private Long id; @Schema(example = "Airquality Demonstrator") 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 74525bf711..6ff5d9aed1 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 @@ -24,6 +24,7 @@ import java.time.Instant; public class RelatedIdentifierDto { @NotNull + @Schema(example = "8") private Long id; @NotNull diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java index 43fb10201b..26192f460f 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -25,10 +25,6 @@ public class UserDto extends CacheableDto { @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4") private UUID id; - @NotNull - @Schema(example = "jcarberry", description = "Only contains lowercase characters") - private String username; - @Schema(example = "Josiah Carberry") private String name; @@ -44,14 +40,37 @@ public class UserDto extends CacheableDto { @Schema(example = "Carberry") private String lastname; - @ToString.Exclude - @JsonIgnore - private String password; - @NotNull private UserAttributesDto attributes; + /* lombok limitations prevent from convenient builder functions */ + @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; + @ToString.Exclude + @Schema(example = "mariadb") + private String jdbcMethod; + + @ToString.Exclude + @Schema(example = "data-db") + private String host; + + @ToString.Exclude + @Schema(example = "3306") + private Integer port; + + @ToString.Exclude + @Schema(example = "username") + private String username; + + @ToString.Exclude + @JsonIgnore + private String password; + + @ToString.Exclude + @Schema(example = "air_quality") + private String database; + } 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 ab13affe7e..75f589e4c5 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 @@ -2,7 +2,7 @@ package at.tuwien.mapper; import at.tuwien.api.auth.SignupRequestDto; import at.tuwien.api.container.ContainerBriefDto; -import at.tuwien.api.container.ContainerCreateDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.DataTypeDto; import at.tuwien.api.container.image.ImageBriefDto; @@ -12,6 +12,7 @@ import at.tuwien.api.crossref.CrossrefDto; import at.tuwien.api.database.*; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; +import at.tuwien.api.database.table.columns.ColumnBriefDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.concepts.ConceptDto; @@ -109,7 +110,7 @@ public interface MetadataMapper { @Mappings({ @Mapping(target = "internalName", source = "name", qualifiedByName = "internalMapping") }) - Container containerCreateRequestDtoToContainer(ContainerCreateDto data); + Container containerCreateRequestDtoToContainer(CreateContainerDto data); ContainerDto containerToContainerDto(Container data); @@ -302,7 +303,8 @@ public interface MetadataMapper { IdentifierDto identifierToIdentifierDto(Identifier data); @Mappings({ - @Mapping(target = "databaseId", source = "database.id") + @Mapping(target = "databaseId", source = "database.id"), + @Mapping(target = "ownedBy", source = "owner.id") }) IdentifierBriefDto identifierToIdentifierBriefDto(Identifier data); @@ -492,7 +494,7 @@ public interface MetadataMapper { .name(data.getName()) .columns(data.getColumns() .stream() - .map(this::tableColumnToColumnDto) + .map(this::tableColumnToColumnBriefDto) .toList()) .table(tableToTableBriefDto(data.getTable())) .build(); @@ -726,6 +728,12 @@ public interface MetadataMapper { }) ColumnDto tableColumnToColumnDto(TableColumn data); + @Mappings({ + @Mapping(target = "tableId", source = "table.id"), + @Mapping(target = "databaseId", source = "table.database.id") + }) + ColumnBriefDto tableColumnToColumnBriefDto(TableColumn data); + @Mappings({ @Mapping(target = "id", expression = "java(null)"), @Mapping(target = "columnType", source = "data.type"), 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 f184ffc337..9c109c87d6 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.UpdateDatabaseAccessDto; +import at.tuwien.api.database.CreateAccessDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; @@ -91,7 +91,7 @@ public class AccessEndpoint extends AbstractEndpoint { }) public ResponseEntity<DatabaseAccessDto> create(@NotNull @PathVariable("databaseId") Long databaseId, @PathVariable("userId") UUID userId, - @Valid @RequestBody UpdateDatabaseAccessDto data, + @Valid @RequestBody CreateAccessDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, SearchServiceException, SearchServiceConnectionException { @@ -153,7 +153,7 @@ public class AccessEndpoint extends AbstractEndpoint { }) public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId, @PathVariable("userId") UUID userId, - @Valid @RequestBody UpdateDatabaseAccessDto data, + @Valid @RequestBody CreateAccessDto data, @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, SearchServiceException, SearchServiceConnectionException { 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 3c506cfd0a..b5d153318c 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,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.container.ContainerBriefDto; -import at.tuwien.api.container.ContainerCreateDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.container.Container; @@ -105,7 +105,7 @@ public class ContainerEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ContainerDto> create(@Valid @RequestBody ContainerCreateDto data) + public ResponseEntity<ContainerDto> create(@Valid @RequestBody CreateContainerDto data) throws ImageNotFoundException, ContainerAlreadyExistsException { log.debug("endpoint create container, data={}", data); return ResponseEntity.status(HttpStatus.CREATED) diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml index 290864eea9..01d2de7d8a 100644 --- a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml @@ -3,7 +3,7 @@ application: version: '@project.version@' spring: datasource: - url: "jdbc:mariadb://${METADATA_HOST:metadata-db}:${METADATA_PORT:3306}/${METADATA_DB:dbrepo}${METADATA_JDBC_EXTRA_ARGS}" + url: "jdbc:mariadb://${METADATA_HOST:localhost}:${METADATA_PORT:3306}/${METADATA_DB:dbrepo}${METADATA_JDBC_EXTRA_ARGS:}" driver-class-name: org.mariadb.jdbc.Driver username: "${METADATA_USERNAME:root}" password: "${METADATA_DB_PASSWORD:dbrepo}" @@ -18,7 +18,7 @@ spring: application: name: metadata-service rabbitmq: - host: "${BROKER_HOST:broker-service}" + host: "${BROKER_HOST:localhost}" virtual-host: "${BROKER_VIRTUALHOST:dbrepo}" username: "${BROKER_USERNAME:admin}" password: "${BROKER_PASSWORD:admin}" 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 ab3f4485b2..98ece39e1e 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 @@ -1,8 +1,8 @@ package at.tuwien.endpoints; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.container.ContainerBriefDto; -import at.tuwien.api.container.ContainerCreateDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.entities.container.Container; import at.tuwien.exception.*; @@ -122,7 +122,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void create_anonymous_fails() { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .name(CONTAINER_1_NAME) .imageId(IMAGE_1_ID) .build(); @@ -136,7 +136,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"create-container"}) public void create_hasRole_succeeds() throws ContainerAlreadyExistsException, ImageNotFoundException { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .name(CONTAINER_1_NAME) .imageId(IMAGE_1_ID) .build(); @@ -148,7 +148,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_4_USERNAME) public void create_noRole_fails() { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .name(CONTAINER_1_NAME) .imageId(IMAGE_1_ID) .build(); @@ -221,7 +221,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { assertEquals(CONTAINER_2_INTERNALNAME, container2.getInternalName()); } - public void create_generic(ContainerCreateDto data) throws ContainerAlreadyExistsException, ImageNotFoundException { + public void create_generic(CreateContainerDto data) throws ContainerAlreadyExistsException, ImageNotFoundException { /* mock */ when(containerService.create(data)) 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 5ae4aad018..dc41121b90 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 @@ -1,11 +1,8 @@ package at.tuwien.mvc; import at.tuwien.api.auth.RefreshTokenRequestDto; -import at.tuwien.api.database.table.TableStatisticDto; -import at.tuwien.api.database.table.columns.ColumnStatisticDto; -import at.tuwien.api.semantics.TableColumnEntityDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.test.AbstractUnitTest; -import at.tuwien.api.container.ContainerCreateDto; import at.tuwien.api.database.*; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.config.MetricsConfig; @@ -173,7 +170,7 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* ignore */ } try { - containerEndpoint.create(ContainerCreateDto.builder().name(CONTAINER_1_NAME).imageId(IMAGE_1_ID).build()); + containerEndpoint.create(CreateContainerDto.builder().name(CONTAINER_1_NAME).imageId(IMAGE_1_ID).build()); } catch (Exception e) { /* ignore */ } 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 a4f0676893..bb19a404dd 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,7 +1,7 @@ package at.tuwien.service; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.test.AbstractUnitTest; -import at.tuwien.api.container.ContainerCreateDto; import at.tuwien.entities.container.Container; import at.tuwien.exception.*; import at.tuwien.repository.ContainerRepository; @@ -48,7 +48,7 @@ public class ContainerServiceUnitTest extends AbstractUnitTest { @Test public void create_succeeds() throws ContainerAlreadyExistsException, ImageNotFoundException { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .imageId(IMAGE_1_ID) .name(CONTAINER_1_NAME) .build(); @@ -68,7 +68,7 @@ public class ContainerServiceUnitTest extends AbstractUnitTest { @Test public void create_containerExists_fails() { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .imageId(IMAGE_1_ID) .name(CONTAINER_1_NAME) .build(); @@ -85,7 +85,7 @@ public class ContainerServiceUnitTest extends AbstractUnitTest { @Test public void create_imageNotFound_fails() { - final ContainerCreateDto request = ContainerCreateDto.builder() + final CreateContainerDto request = CreateContainerDto.builder() .name(CONTAINER_3_NAME) .imageId(9999L) .build(); 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 2b0cd72dda..191f42fea3 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 @@ -48,7 +48,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { log.trace("create access at endpoint {} with path {}", gatewayConfig.getDataEndpoint(), path); try { response = restTemplate.exchange(path, HttpMethod.POST, - new HttpEntity<>(UpdateDatabaseAccessDto.builder().type(access).build()), Void.class); + new HttpEntity<>(CreateAccessDto.builder().type(access).build()), Void.class); } catch (HttpServerErrorException e) { log.error("Failed to create access: {}", e.getMessage()); throw new DataServiceConnectionException("Failed to create access: " + e.getMessage(), e); @@ -73,7 +73,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { log.trace("update access at endpoint {} with path {}", gatewayConfig.getDataEndpoint(), path); try { response = restTemplate.exchange(path, HttpMethod.PUT, - new HttpEntity<>(UpdateDatabaseAccessDto.builder().type(access).build()), Void.class); + new HttpEntity<>(CreateAccessDto.builder().type(access).build()), Void.class); } catch (HttpServerErrorException e) { log.error("Failed to update access: {}", e.getMessage()); throw new DataServiceConnectionException("Failed to update access: " + e.getMessage(), e); 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 aa5a3295c4..9aa2dc6c89 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 @@ -1,11 +1,9 @@ package at.tuwien.service; -import at.tuwien.api.container.ContainerCreateDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.entities.container.Container; -import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import java.security.Principal; import java.util.List; public interface ContainerService { @@ -18,7 +16,7 @@ public interface ContainerService { * @throws ImageNotFoundException The image of the container was not found in the metadata database. * @throws ContainerAlreadyExistsException A container with this name already exists. */ - Container create(ContainerCreateDto createDto) throws ImageNotFoundException, + Container create(CreateContainerDto createDto) throws ImageNotFoundException, ContainerAlreadyExistsException; /** 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 91db7736db..2a3c321536 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 @@ -1,6 +1,6 @@ package at.tuwien.service.impl; -import at.tuwien.api.container.ContainerCreateDto; +import at.tuwien.api.container.CreateContainerDto; import at.tuwien.entities.container.Container; import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.ContainerAlreadyExistsException; @@ -38,7 +38,7 @@ public class ContainerServiceImpl implements ContainerService { @Override @Transactional - public Container create(ContainerCreateDto data) throws ImageNotFoundException, + public Container create(CreateContainerDto data) throws ImageNotFoundException, ContainerAlreadyExistsException { final String containerName = "dbrepo-userdb-" + metadataMapper.nameToInternalName(data.getName()); /* check */ 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 12dbd35efc..bab95a366b 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 @@ -262,15 +262,15 @@ public abstract class BaseTest { public final static String ROLE_DEFAULT_RESEARCHER_ROLES_NAME = "default-researcher-roles"; public final static UUID ROLE_DEFAULT_RESEARCHER_ROLES_REALM_ID = REALM_DBREPO_ID; - public final static UpdateDatabaseAccessDto UPDATE_DATABASE_ACCESS_READ_DTO = UpdateDatabaseAccessDto.builder() + public final static CreateAccessDto UPDATE_DATABASE_ACCESS_READ_DTO = CreateAccessDto.builder() .type(AccessTypeDto.READ) .build(); - public final static UpdateDatabaseAccessDto UPDATE_DATABASE_ACCESS_WRITE_OWN_DTO = UpdateDatabaseAccessDto.builder() + public final static CreateAccessDto UPDATE_DATABASE_ACCESS_WRITE_OWN_DTO = CreateAccessDto.builder() .type(AccessTypeDto.WRITE_OWN) .build(); - public final static UpdateDatabaseAccessDto UPDATE_DATABASE_ACCESS_WRITE_ALL_DTO = UpdateDatabaseAccessDto.builder() + public final static CreateAccessDto UPDATE_DATABASE_ACCESS_WRITE_ALL_DTO = CreateAccessDto.builder() .type(AccessTypeDto.WRITE_ALL) .build(); @@ -3373,6 +3373,31 @@ public abstract class BaseTest { .sets(null) .build()); + public final static List<ColumnBriefDto> TABLE_2_COLUMNS_BRIEF_DTO = List.of(ColumnBriefDto.builder() + .id(COLUMN_2_1_ID) + .tableId(TABLE_2_ID) + .databaseId(DATABASE_1_ID) + .name("location") + .internalName("location") + .columnType(ColumnTypeDto.VARCHAR) + .build(), + ColumnBriefDto.builder() + .id(COLUMN_2_2_ID) + .tableId(TABLE_2_ID) + .databaseId(DATABASE_1_ID) + .name("lat") + .internalName("lat") + .columnType(ColumnTypeDto.DOUBLE) + .build(), + ColumnBriefDto.builder() + .id(COLUMN_2_3_ID) + .tableId(TABLE_2_ID) + .databaseId(DATABASE_1_ID) + .name("lng") + .internalName("lng") + .columnType(ColumnTypeDto.DOUBLE) + .build()); + public final static Long COLUMN_3_1_ID = 9L; public final static Long COLUMN_3_2_ID = 10L; @@ -8104,7 +8129,7 @@ public abstract class BaseTest { .id(1L) .table(TABLE_2_BRIEF_DTO) .name("uk_1") - .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS_DTO.get(1)))) + .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS_BRIEF_DTO.get(1)))) .build()))) .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() .table(TABLE_2_BRIEF_DTO) diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue index 5722351f0a..9ee434c943 100644 --- a/dbrepo-ui/components/identifier/Citation.vue +++ b/dbrepo-ui/components/identifier/Citation.vue @@ -4,7 +4,7 @@ <v-col v-if="!loading" md="10"> - <pre>{{ citation }}</pre> + {{ citation }} </v-col> <v-col v-if="!$vuetify.display.mdAndDown" diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts index 3853d9df75..3ae194ff2f 100644 --- a/dbrepo-ui/composables/identifier-service.ts +++ b/dbrepo-ui/composables/identifier-service.ts @@ -103,7 +103,7 @@ export const useIdentifierService = (): any => { }) } - function identifierToCreators(identifier: IdentifierDto) { + function identifierToCreators(identifier: IdentifierDto): string | null { if (!identifier) { return null } diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 4bce6ec5c5..70084f3cca 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -3,19 +3,19 @@ import vuetify from 'vite-plugin-vuetify' const proxy: any = {} -/* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ -if (process.env.NODE_ENV === 'development') { - const api = 'http://localhost' - proxy['/api'] = api - proxy['/pid'] = { - target: api + '/api', - changeOrigin: true, - pathRewrite: { - '^/pid': '/pid' - } - } - process.env.NUXT_PUBLIC_API_SERVER = api -} +// /* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ +// if (process.env.NODE_ENV === 'development') { +// const api = 'http://localhost' +// proxy['/api'] = api +// proxy['/pid'] = { +// target: api + '/api', +// changeOrigin: true, +// pathRewrite: { +// '^/pid': '/pid' +// } +// } +// process.env.NUXT_PUBLIC_API_SERVER = api +// } /** * https://nuxt.com/docs/guide/concepts/rendering#hybrid-rendering @@ -75,8 +75,8 @@ export default defineNuxtConfig({ } }, api: { - client: 'http://localhost', - server: 'http://gateway-service', + client: 'https://dbrepo1.ec.tuwien.ac.at', + server: 'https://dbrepo1.ec.tuwien.ac.at', }, upload: { client: 'http://localhost/api/upload/files', 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 2e76d4ebd4..2eea6a69bf 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 @@ -127,6 +127,7 @@ export default { data () { return { loading: true, + error: true, loadingData: false, loadingCount: false, loadingDelete: false, diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index bc6940b7d0..1f9f778a84 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -1091,7 +1091,7 @@ class RestClient: :raises ResponseCodeError: If something went wrong with the insert. """ url = f'/api/database/{database_id}/table/{table_id}/data' - response = self._wrapper(method="post", url=url, force_auth=True, payload=CreateData(data=data)) + response = self._wrapper(method="post", url=url, force_auth=True, payload=Tuple(data=data)) if response.status_code == 201: return if response.status_code == 400: @@ -1279,7 +1279,7 @@ class RestClient: :raises ResponseCodeError: If something went wrong with the update. """ url = f'/api/database/{database_id}/table/{table_id}/data' - response = self._wrapper(method="put", url=url, force_auth=True, payload=UpdateData(data=data, keys=keys)) + response = self._wrapper(method="put", url=url, force_auth=True, payload=TupleUpdate(data=data, keys=keys)) if response.status_code == 202: return if response.status_code == 400: @@ -1309,7 +1309,7 @@ class RestClient: :raises ResponseCodeError: If something went wrong with the deletion. """ url = f'/api/database/{database_id}/table/{table_id}/data' - response = self._wrapper(method="delete", url=url, force_auth=True, payload=DeleteData(keys=keys)) + response = self._wrapper(method="delete", url=url, force_auth=True, payload=TupleDelete(keys=keys)) if response.status_code == 202: return if response.status_code == 400: diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index a8518ec79e..76f6d37a3a 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -463,16 +463,16 @@ class License(BaseModel): description: str -class CreateData(BaseModel): +class Tuple(BaseModel): data: dict -class UpdateData(BaseModel): +class TupleUpdate(BaseModel): data: dict keys: dict -class DeleteData(BaseModel): +class TupleDelete(BaseModel): keys: dict @@ -528,7 +528,26 @@ class CreateTableConstraints(BaseModel): foreign_keys: List[CreateForeignKey] = field(default_factory=list) -class IdentifierCreator(BaseModel): +class NameIdentifierSchemeType(str, Enum): + """ + Enumeration of name identifier scheme types. + """ + ORCID = "ORCID" + ROR = "ROR" + ISNI = "ISNI" + GRID = "GRID" + + +class AffiliationIdentifierSchemeType(str, Enum): + """ + Enumeration of affiliation identifier scheme types. + """ + ROR = "ROR" + ISNI = "ISNI" + GRID = "GRID" + + +class Creator(BaseModel): id: int creator_name: str firstname: Optional[str] = None @@ -536,13 +555,24 @@ class IdentifierCreator(BaseModel): affiliation: Optional[str] = None name_type: Optional[str] = None name_identifier: Optional[str] = None - name_identifier_scheme: Optional[str] = None + name_identifier_scheme: Optional[NameIdentifierSchemeType] = None name_identifier_scheme_uri: Optional[str] = None affiliation_identifier: Optional[str] = None affiliation_identifier_scheme: Optional[str] = None affiliation_identifier_scheme_uri: Optional[str] = None +class CreatorBrief(BaseModel): + id: int + creator_name: str + affiliation: Optional[str] = None + name_type: Optional[str] = None + name_identifier: Optional[str] = None + name_identifier_scheme: Optional[NameIdentifierSchemeType] = None + affiliation_identifier: Optional[str] = None + affiliation_identifier_scheme: Optional[str] = None + + class CreateIdentifierCreator(BaseModel): creator_name: str firstname: Optional[str] = None @@ -603,7 +633,7 @@ class Identifier(BaseModel): status: IdentifierStatusType publication_year: int publisher: str - creators: List[IdentifierCreator] + creators: List[Creator] titles: List[IdentifierTitle] descriptions: List[IdentifierDescription] funders: Optional[List[IdentifierFunder]] = field(default_factory=list) @@ -627,7 +657,7 @@ class IdentifierBrief(BaseModel): id: int database_id: int type: IdentifierType - created_by: str + owned_by: str status: IdentifierStatusType publication_year: int publisher: str @@ -872,7 +902,7 @@ class Query(BaseModel): result_hash: str query_normalized: str result_number: Optional[int] = None - identifiers: List[Identifier] = field(default_factory=list) + identifiers: List[IdentifierBrief] = field(default_factory=list) class UpdateQuery(BaseModel): @@ -966,36 +996,17 @@ class Table(BaseModel): avg_row_length: Optional[int] = None -class TableMinimal(BaseModel): - id: int - database_id: int - - -class ColumnMinimal(BaseModel): - id: int - table_id: int - database_id: int - - class DatabaseBrief(BaseModel): id: int name: str - owner: UserBrief contact: UserBrief - exchange_name: str + owner_id: str internal_name: str is_public: bool is_schema_public: bool - container: ContainerBrief identifiers: Optional[List[IdentifierBrief]] = field(default_factory=list) - subsets: Optional[List[IdentifierBrief]] = field(default_factory=list) preview_image: Optional[str] = None description: Optional[str] = None - tables: Optional[List[TableBrief]] = field(default_factory=list) - views: Optional[List[ViewBrief]] = field(default_factory=list) - image: Optional[str] = None - accesses: Optional[List[DatabaseAccess]] = field(default_factory=list) - exchange_name: Optional[str] = None class Database(BaseModel): @@ -1014,22 +1025,21 @@ class Database(BaseModel): description: Optional[str] = None tables: Optional[List[Table]] = field(default_factory=list) views: Optional[List[View]] = field(default_factory=list) - image: Optional[str] = None accesses: Optional[List[DatabaseAccess]] = field(default_factory=list) exchange_name: Optional[str] = None class Unique(BaseModel): id: int - table: TableMinimal - columns: List[ColumnMinimal] + table: TableBrief + columns: List[ColumnBrief] class ForeignKeyReference(BaseModel): id: int - foreign_key: ForeignKeyMinimal - column: ColumnMinimal - referenced_column: ColumnMinimal + foreign_key: ForeignKeyBrief + column: ColumnBrief + referenced_column: ColumnBrief class ReferenceType(str, Enum): @@ -1043,7 +1053,7 @@ class ReferenceType(str, Enum): SET_DEFAULT = "set_default" -class ForeignKeyMinimal(BaseModel): +class ForeignKeyBrief(BaseModel): id: int @@ -1051,8 +1061,8 @@ class ForeignKey(BaseModel): id: int name: str references: List[ForeignKeyReference] - table: TableMinimal - referenced_table: TableMinimal + table: TableBrief + referenced_table: TableBrief on_update: Optional[ReferenceType] = None on_delete: Optional[ReferenceType] = None @@ -1067,8 +1077,8 @@ class CreateForeignKey(BaseModel): class PrimaryKey(BaseModel): id: int - table: TableMinimal - column: ColumnMinimal + table: TableBrief + column: ColumnBrief class Constraints(BaseModel): diff --git a/lib/python/tests/test_dtos.py b/lib/python/tests/test_dtos.py index f338c30dcc..54208a1d9a 100644 --- a/lib/python/tests/test_dtos.py +++ b/lib/python/tests/test_dtos.py @@ -1,44 +1,94 @@ import inspect +import logging import sys import unittest +from logging.config import dictConfig +from math import floor from yaml import safe_load from dbrepo.api import dto +logging.addLevelName(level=logging.NOTSET, levelName='TRACE') +logging.basicConfig(level=logging.DEBUG) + +# logging configuration +dictConfig({ + 'version': 1, + 'formatters': { + 'default': { + 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s', + }, + 'simple': { + 'format': '[%(asctime)s] %(levelname)s: %(message)s', + }, + }, + 'handlers': {'console': { + 'class': 'logging.StreamHandler', + 'stream': 'ext://sys.stdout', + 'formatter': 'simple' # default + }}, + 'root': { + 'level': 'DEBUG', + 'handlers': ['console'] + } +}) + class AnalyseUnitTest(unittest.TestCase): schemas = None models: [()] = [] found: int = 0 - skipped: int = 0 + skipped: [str] = [] def setUp(self): with open('../../../.docs/.openapi/api.yaml', 'r') as f: self.schemas = safe_load(f)['components']['schemas'] for name, obj in inspect.getmembers(sys.modules[dto.__name__]): + self.found += 1 if not inspect.isclass(obj): - self.found += 1 continue if f'{name}Dto' not in self.schemas: - self.skipped += 1 + logging.debug(f'skip model {name}: OpenAPI schema definition {name}Dto not found') + self.skipped.append(f'{name}Dto') continue self.models.append((name, obj)) def build_model(self, name: str, obj: any, definition: any) -> dict: model_dict = dict() for property in definition['properties']: - if 'example' not in definition['properties'][property]: + if 'example' in definition['properties'][property]: if '$ref' not in definition['properties'][property]: - self.fail(f'OpenAPI model {name}Dto does not have example for property: {property}') + model_dict[property] = definition['properties'][property]['example'] + continue + ref = definition['properties'][property]['$ref'][len('#/components/schemas/'):-3] + # recursive call + model_dict[property] = self.build_model(ref, self.get_model(ref), self.schemas[f'{ref}Dto']) + continue + if 'items' in definition['properties'][property]: + if '$ref' not in definition['properties'][property]['items']: + continue + ref = definition['properties'][property]['items']['$ref'][len('#/components/schemas/'):-3] + # recursive call + model_dict[property] = [self.build_model(ref, self.get_model(ref), self.schemas[f'{ref}Dto'])] + continue + if '$ref' in definition['properties'][property]: ref = definition['properties'][property]['$ref'][len('#/components/schemas/'):-3] # recursive call - model_dict[property] = self.build_model(ref, obj, self.schemas[f'{name}Dto']) - model_dict[property] = definition['properties'][property]['example'] - model = obj(**model_dict) + model_dict[property] = self.build_model(ref, self.get_model(ref), self.schemas[f'{ref}Dto']) + return model_dict - def test_dtos_succeeds(self): + def get_model(self, ref: str): for name, obj in self.models: - self.build_model(name, obj, self.schemas[f'{name}Dto']) + if name == ref: + return obj + return None - pass + def test_dtos_succeeds(self): + logging.info(f'Found {self.found} model(s) in {dto.__name__}') + for name, obj in self.models: + logging.debug(f'building model: {name} against OpenAPI schema definition {name}Dto') + model = obj(**self.build_model(name, obj, self.schemas[f'{name}Dto'])) + logging.warning(f'Unable to find {len(self.skipped)} OpenAPI schema definition(s): {self.skipped}') + logging.info(f'Coverage: {floor((1 - len(self.skipped) / self.found) * 100)}%') + pass -- GitLab From 618708e55b00eca3c994d56e674a5e450eb33dde Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 23 Jan 2025 18:10:28 +0100 Subject: [PATCH 10/52] Fixed lint Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docker/docker-compose.yml | 4 ++-- .gitlab-ci.yml | 9 +++++---- docker-compose.yml | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index b6a7478e82..2db8fc6185 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -88,13 +88,12 @@ services: environment: KEYCLOAK_ENABLE_HTTPS: "false" KEYCLOAK_ENABLE_STATISTICS: "true" - KEYCLOAK_ENABLE_HEALTH_ENDPOINTS: "true" KEYCLOAK_DATABASE_HOST: "auth-db" KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" healthcheck: - test: curl --head -fsS http://localhost:9000/health/ready + test: curl -fsS http://localhost:8080/realms/master interval: 10s timeout: 5s retries: 12 @@ -109,6 +108,7 @@ services: dbrepo-auth-service-init: init: true restart: "no" + container_name: dbrepo-auth-service-init image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 environment: AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e4c751bf4..43b8b17a6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,22 +55,23 @@ lint-docker-compose: - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-analyse-service'" - "IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-auth-db'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-auth-service'" + - "IGNORE_VOLUMES=1 IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-auth-service-init'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-broker-service'" - "IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-dashboard-service'" - "bash .scripts/check-service.sh 'dbrepo-data-db'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-data-service'" - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-gateway-service'" - - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-identity-service'" + - "IGNORE_VOLUMES=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-identity-service'" - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-metadata-db'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-metadata-service'" - - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-metric-db'" + - "IGNORE_VOLUMES=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-metric-db'" - "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-search-db'" - "IGNORE_IMAGE=1 IGNORE_PORTS=1 bash .scripts/check-service.sh 'dbrepo-search-service'" - "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-search-service-init'" - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-storage-service'" - - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-storage-service-init'" + - "IGNORE_VOLUMES=1 IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-storage-service-init'" - "IGNORE_IMAGE=1 bash .scripts/check-service.sh 'dbrepo-ui'" - - "bash .scripts/check-service.sh 'dbrepo-upload-service'" + - "IGNORE_VOLUMES=1 bash .scripts/check-service.sh 'dbrepo-upload-service'" lint-helm-chart: image: docker.io/alpine:${ALPINE_VERSION} diff --git a/docker-compose.yml b/docker-compose.yml index 5a0d1a4242..ad1dacb6b7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -110,8 +110,8 @@ services: dbrepo-auth-service-init: init: true restart: "no" - image: dbrepo-auth-service-init:latest container_name: dbrepo-auth-service-init + image: dbrepo-auth-service-init:latest build: context: ./dbrepo-auth-service/init network: host -- GitLab From c9fd3c50e4aa3c6b7c002ccfe1bdf0ef2077f0eb Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 23 Jan 2025 22:31:30 +0100 Subject: [PATCH 11/52] Fixed some UI bugs and paginating for Spark Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-data-service/Dockerfile | 4 +- .../at/tuwien/endpoints/RestEndpoint.java | 1 + .../impl/MetadataServiceGatewayImpl.java | 1 + .../java/at/tuwien/mapper/MariaDbMapper.java | 47 +++++++++---------- .../at/tuwien/service/impl/DataConnector.java | 3 +- .../service/impl/TableServiceMariaDbImpl.java | 14 ++++-- dbrepo-metadata-service/Dockerfile | 4 +- dbrepo-ui/components/subset/Results.vue | 18 +++++-- dbrepo-ui/components/subset/SubsetToolbar.vue | 12 +++-- dbrepo-ui/composables/table-service.ts | 26 +++++----- dbrepo-ui/nuxt.config.ts | 4 +- .../[database_id]/subset/[subset_id]/data.vue | 8 ++-- .../[database_id]/table/[table_id]/data.vue | 2 +- dbrepo-ui/stores/cache.js | 8 ++++ 14 files changed, 88 insertions(+), 64 deletions(-) diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile index f4e2be5b96..4b45e94290 100644 --- a/dbrepo-data-service/Dockerfile +++ b/dbrepo-data-service/Dockerfile @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" COPY ./pom.xml ./ -RUN mvn -fn -B dependency:go-offline +RUN mvn -fn -B -q dependency:go-offline COPY --from=dependency /root/.m2/repository/at/tuwien /root/.m2/repository/at/tuwien @@ -18,7 +18,7 @@ COPY ./rest-service ./rest-service COPY ./services ./services # Make sure it compiles -RUN mvn clean package -DskipTests +RUN mvn -fn -B -q clean package -DskipTests ###### THIRD STAGE ###### FROM amazoncorretto:17-alpine3.19 AS runtime diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java index 333e0c8398..45cea4371c 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/RestEndpoint.java @@ -45,6 +45,7 @@ public abstract class RestEndpoint { return UUID.fromString(user.getId()); } + /* FIXME: Heap may run OOM */ public List<Map<String, Object>> transform(Dataset<Row> dataset) { return dataset.collectAsList() .stream() 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 4dcfaf13a2..650652d62f 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 @@ -115,6 +115,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { database.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); database.setUsername(response.getHeaders().get("X-Username").get(0)); database.setPassword(response.getHeaders().get("X-Password").get(0)); + database.setDatabase(database.getInternalName()); database.setHost(response.getHeaders().get("X-Host").get(0)); database.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); database.setLastRetrieved(Instant.now()); 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 7f5b63b21c..d3af548164 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 @@ -231,12 +231,6 @@ public interface MariaDbMapper { return statement.toString(); } - default String tableCreateDtoToSequenceName(at.tuwien.api.database.table.internal.TableCreateDto data) { - final String name = "seq_" + nameToInternalName(data.getName()) + "_id"; - log.trace("mapped table name {} to sequence name {}", data.getName(), name); - return name; - } - /** * Maps the desired data type to a MySQL string with the default MySQL 8 values for each * @@ -731,27 +725,30 @@ public interface MariaDbMapper { } } - default String selectRawSelectQuery(String query, Instant timestamp, Long page, Long size) { - query = query.toLowerCase(Locale.ROOT) - .trim(); - if (query.matches(";$")) { - /* remove last semicolon */ - query = query.substring(0, query.length() - 1); - } + default String defaultRawSelectQuery(String databaseName, String tableOrViewName, Instant timestamp, Long page, + Long size) { /* query check (this is enforced by the db also) */ - final StringBuilder statement = new StringBuilder("SELECT * FROM (") - .append(query) - .append(") FOR SYSTEM_TIME AS OF TIMESTAMP '") - .append(mariaDbFormatter.format(timestamp)) - .append("' as tbl"); + final StringBuilder statement = new StringBuilder("SELECT * FROM (SELECT * FROM `") + .append(databaseName) + .append("`.`") + .append(tableOrViewName) + .append("`"); + if (timestamp != null) { + statement.append(" FOR SYSTEM_TIME AS OF TIMESTAMP '") + .append(mariaDbFormatter.format(timestamp)) + .append("'"); + } + statement.append(" as tbl"); /* pagination */ - log.trace("pagination size/limit of {}", size); - statement.append(" LIMIT ") - .append(size); - log.trace("pagination page/offset of {}", page); - statement.append(" OFFSET ") - .append(page * size); - statement.append(";"); + if (size != null && page != null) { + log.trace("pagination size/limit of {}", size); + statement.append(" LIMIT ") + .append(size); + log.trace("pagination page/offset of {}", page); + statement.append(" OFFSET ") + .append(page * size); + } + statement.append(") as tbl2"); log.trace("mapped select query: {}", statement); return statement.toString(); } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java index 1044869ad8..3a54b399d4 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -10,7 +10,6 @@ import org.springframework.stereotype.Service; public abstract class DataConnector<T extends CacheableDto> { public ComboPooledDataSource getDataSource(T entity) { - final long start = System.currentTimeMillis(); final ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), entity.getDatabase())); @@ -25,7 +24,6 @@ public abstract class DataConnector<T extends CacheableDto> { } public ComboPooledDataSource getDataSource(T entity, String databaseName) { - final long start = System.currentTimeMillis(); final ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), databaseName)); dataSource.setUser(entity.getUsername()); @@ -60,6 +58,7 @@ public abstract class DataConnector<T extends CacheableDto> { stringBuilder.append("/") .append(databaseName); } + log.trace("mapped jdbc url: {}", stringBuilder); return stringBuilder.toString(); } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java index 68fb59cb5e..482f874624 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java @@ -373,12 +373,16 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements Long page, Long size, SortTypeDto sortDirection, String sortColumn) throws QueryMalformedException, TableNotFoundException { try { - final Properties properties = new Properties(); - properties.setProperty("user", database.getUsername()); - properties.setProperty("password", database.getPassword()); return sparkSession.read() - .jdbc(getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPort(), - database.getInternalName()), tableOrView, properties); + .format("jdbc") + .option("user", database.getUsername()) + .option("password", database.getPassword()) + .option("url", getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPort(), + database.getInternalName())) + .option("query", mariaDbMapper.defaultRawSelectQuery(database.getInternalName(), tableOrView, + timestamp, page, size)) + .load(); + } catch (Exception e) { if (e instanceof ExtendedAnalysisException exception) { if (exception.getSimpleMessage().contains("TABLE_OR_VIEW_NOT_FOUND")) { diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile index 843c334a9a..ddc20cb420 100644 --- a/dbrepo-metadata-service/Dockerfile +++ b/dbrepo-metadata-service/Dockerfile @@ -12,7 +12,7 @@ COPY ./rest-service/pom.xml ./rest-service/ COPY ./services/pom.xml ./services/ COPY ./test/pom.xml ./test/ -RUN mvn verify -B -fn +RUN mvn -fn -B dependency:go-offline COPY ./api ./api COPY ./entities ./entities @@ -24,7 +24,7 @@ COPY ./services ./services COPY ./test ./test # Make sure it compiles -RUN mvn clean install -DskipTests +RUN mvn -fn -B clean install -DskipTests ###### SECOND STAGE ###### FROM amazoncorretto:17-alpine3.19 AS runtime diff --git a/dbrepo-ui/components/subset/Results.vue b/dbrepo-ui/components/subset/Results.vue index e558186daf..3948667518 100644 --- a/dbrepo-ui/components/subset/Results.vue +++ b/dbrepo-ui/components/subset/Results.vue @@ -110,9 +110,13 @@ export default { this.id = id this.loadingExecute = false }) - .catch(({code}) => { + .catch(({code, message}) => { this.loadingExecute = false const toast = useToastInstance() + if (message) { + toast.error(message) + return + } if (typeof code !== 'string') { return } @@ -129,9 +133,13 @@ export default { this.id = id this.loadingExecute = false }) - .catch(({code}) => { + .catch(({code, message}) => { this.loadingExecute = false const toast = useToastInstance() + if (message) { + toast.error(message) + return + } if (typeof code !== 'string') { return } @@ -148,9 +156,13 @@ export default { this.id = id this.loadingExecute = false }) - .catch(({code}) => { + .catch(({code, message}) => { this.loadingExecute = false const toast = useToastInstance() + if (message) { + toast.error(message) + return + } if (typeof code !== 'string') { return } diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index 874e691c5f..d5f45e48e3 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -35,7 +35,6 @@ variant="flat" class="mr-2" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-content-save-outline' : null" - :disabled="!executionUTC" :to="`/database/${$route.params.database_id}/subset/${$route.params.subset_id}/persist`"> {{ ($vuetify.display.lgAndUp ? $t('toolbars.subset.pid.xl') + ' ' : '') + $t('toolbars.subset.pid.permanent') }} </v-btn> @@ -177,8 +176,9 @@ export default { this.loadingSave = true const queryService = useQueryService() queryService.update(this.$route.params.database_id, this.$route.params.subset_id, { persist: true }) - .then((subset) => { - this.subset = subset + .then(() => { + const cacheStore = useCacheStore() + cacheStore.reloadSubset() this.loadingSave = false }) .catch(() => { @@ -192,8 +192,10 @@ export default { this.loadingSave = true const queryService = useQueryService() queryService.update(this.$route.params.database_id, this.$route.params.subset_id, { persist: false }) - .then((subset) => { - this.subset = subset + .then(() => { + const cacheStore = useCacheStore() + cacheStore.reloadSubset() + this.loadingSave = false }) .catch(() => { this.loadingSave = false diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index ca757c7451..45268d6295 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -9,7 +9,7 @@ export const useTableService = (): any => { return new Promise<TableBriefDto>((resolve, reject) => { axios.get<TableBriefDto>(`/api/database/${databaseId}/table`) .then((response) => { - console.info('Found tables(s)') + console.info(`Found ${response.data.length} tables(s)`) resolve(response.data) }) .catch((error) => { @@ -25,7 +25,7 @@ export const useTableService = (): any => { return new Promise<TableDto>((resolve, reject) => { axios.get<TableDto>(`/api/database/${databaseId}/table/${tableId}`) .then((response) => { - console.info('Found table with id', tableId, 'in database with id', databaseId); + console.info('Found table'); resolve(response.data) }) .catch((error) => { @@ -41,7 +41,7 @@ export const useTableService = (): any => { return new Promise<ColumnDto>((resolve, reject) => { axios.put<ColumnDto>(`/api/database/${databaseId}/table/${tableId}/column/${columnId}`, data) .then((response) => { - console.info('Updated column with id', columnId, 'table with id', tableId, 'in database with id', databaseId); + console.info('Updated column'); resolve(response.data) }) .catch((error) => { @@ -57,7 +57,7 @@ export const useTableService = (): any => { return new Promise<TableDto>((resolve, reject) => { axios.put<TableDto>(`/api/database/${databaseId}/table/${tableId}`, data) .then((response) => { - console.info('Updated table with id', tableId, 'in database with id', databaseId); + console.info('Updated table'); resolve(response.data) }) .catch((error) => { @@ -73,7 +73,7 @@ export const useTableService = (): any => { return new Promise<ImportDto>((resolve, reject) => { axios.post<ImportDto>(`/api/database/${databaseId}/table/${tableId}/data/import`, data) .then((response) => { - console.info('Imported csv to table with id', tableId, 'in database with id', databaseId) + console.info('Imported csv to table') resolve(response.data) }) .catch((error) => { @@ -89,7 +89,7 @@ export const useTableService = (): any => { return new Promise<QueryResultDto>((resolve, reject) => { axios.get<QueryResultDto>(`/api/database/${databaseId}/table/${tableId}/data`, { params: mapFilter(timestamp, page, size) }) .then((response) => { - console.info('Got data for table with id', tableId, 'in database with id', databaseId) + console.info('Got data for table') const result: QueryResultDto = { id: tableId, headers: response.headers['x-headers'] ? response.headers['x-headers'].split(',') : [], @@ -111,7 +111,7 @@ export const useTableService = (): any => { axios.head<void>(`/api/database/${databaseId}/table/${tableId}/data`, { params: mapFilter(timestamp, null, null) }) .then((response: AxiosResponse<void>) => { const count: number = Number(response.headers['x-count']) - console.info('Found' + count + 'in table with id', tableId, 'in database with id', databaseId) + console.info(`Found ${count} tuple(s)`) resolve(count) }) .catch((error) => { @@ -134,7 +134,7 @@ export const useTableService = (): any => { return new Promise<QueryResultDto>((resolve, reject) => { axios.get<QueryResultDto>(`/api/database/${databaseId}/table/${tableId}/export`, config) .then((response) => { - console.info('Exported data for table with id', tableId, 'in database with id', databaseId) + console.info('Exported data for table') resolve(response.data) }) .catch((error) => { @@ -150,7 +150,7 @@ export const useTableService = (): any => { return new Promise<TableDto>((resolve, reject) => { axios.post<TableDto>(`/api/database/${databaseId}/table`, data) .then((response) => { - console.info('Created table in database with id', databaseId) + console.info('Created table') resolve(response.data) }) .catch((error: AxiosError) => { @@ -166,7 +166,7 @@ export const useTableService = (): any => { return new Promise<void>((resolve, reject) => { axios.delete<void>(`/api/database/${databaseId}/table/${tableId}`) .then((response) => { - console.info('Deleted table with id', tableId, 'in database with id', databaseId) + console.info('Deleted table') resolve(response.data) }) .catch((error) => { @@ -182,7 +182,7 @@ export const useTableService = (): any => { return new Promise<void>((resolve, reject) => { axios.delete<void>(`/api/database/${databaseId}/table/${tableId}`, {data}) .then((response) => { - console.info('Deleted tuple(s) in table with id', tableId, 'in database with id', databaseId) + console.info(`Deleted tuple(s)`) resolve(response.data) }) .catch((error) => { @@ -198,7 +198,7 @@ export const useTableService = (): any => { return new Promise<TableHistoryDto[]>((resolve, reject) => { axios.get<TableHistoryDto[]>(`/api/database/${databaseId}/table/${tableId}/history`) .then((response) => { - console.info('Loaded history of table with id', tableId, 'in database with id', databaseId) + console.info('Loaded history of table') resolve(response.data) }) .catch((error) => { @@ -214,7 +214,7 @@ export const useTableService = (): any => { return new Promise<TableColumnEntityDto[]>((resolve, reject) => { axios.get<TableColumnEntityDto[]>(`/api/database/${databaseId}/table/${tableId}/column/${columnId}/suggest`) .then((response) => { - console.info('Suggested semantic entities for table column with id', columnId, 'of table with id', tableId, 'of database with id', databaseId) + console.info('Suggested semantic entities') resolve(response.data) }) .catch((error) => { diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 70084f3cca..4b1833d816 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -75,8 +75,8 @@ export default defineNuxtConfig({ } }, api: { - client: 'https://dbrepo1.ec.tuwien.ac.at', - server: 'https://dbrepo1.ec.tuwien.ac.at', + client: 'http://localhost', + server: 'http://gateway-service', }, upload: { client: 'http://localhost/api/upload/files', diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue index f96b6e4175..e9719cd0ef 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue @@ -119,7 +119,7 @@ export default { }, }, mounted () { - this.loadResult() + this.loadSubset() }, methods: { loadSubset () { @@ -128,7 +128,9 @@ export default { queryService.findOne(this.$route.params.database_id, this.$route.params.subset_id) .then((subset) => { this.subset = subset - this.loadResult() + this.$refs.queryResults.reExecute(subset.id) + this.$refs.queryResults.reExecuteCount(subset.id) + this.loadingSubset = false }) .catch(() => { this.loadingSubset = false @@ -139,8 +141,6 @@ export default { }, loadResult () { if (this.subset) { - this.$refs.queryResults.reExecute(this.subset.id) - this.$refs.queryResults.reExecuteCount(this.subset.id) } }, download () { 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 2eea6a69bf..07747ed0cb 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 @@ -127,7 +127,7 @@ export default { data () { return { loading: true, - error: true, + error: false, loadingData: false, loadingCount: false, loadingDelete: false, diff --git a/dbrepo-ui/stores/cache.js b/dbrepo-ui/stores/cache.js index 3574b24d7c..41059ba727 100644 --- a/dbrepo-ui/stores/cache.js +++ b/dbrepo-ui/stores/cache.js @@ -81,6 +81,14 @@ export const useCacheStore = defineStore('cache', { console.error('Failed to reload view', error) }) }, + reloadSubset() { + const queryService = useQueryService() + queryService.findOne(this.subset.database_id, this.subset.id) + .then(subset => this.subset = subset) + .catch((error) => { + console.error('Failed to reload subset', error) + }) + }, setRouteDatabase (databaseId) { return new Promise((resolve, reject) => { if (!databaseId) { -- GitLab From fc67996b5df5256c6f0f52e858b3d230c29cf518 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 23 Jan 2025 23:21:58 +0100 Subject: [PATCH 12/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../gateway/DataServiceGatewayUnitTest.java | 14 ++++---- lib/python/dbrepo/api/dto.py | 2 +- lib/python/tests/test_dtos.py | 2 +- lib/python/tests/test_unit_database.py | 4 +-- lib/python/tests/test_unit_identifier.py | 14 ++++---- lib/python/tests/test_unit_table.py | 36 +++++++++++++++---- 6 files changed, 46 insertions(+), 26 deletions(-) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java index c423d6b1ae..daeb1c1a96 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/DataServiceGatewayUnitTest.java @@ -2,7 +2,7 @@ package at.tuwien.gateway; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.AccessTypeDto; -import at.tuwien.api.database.DatabaseBriefDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableDto; @@ -252,9 +252,9 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { DatabaseNotFoundException { /* mock */ - when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class))) + when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.CREATED) - .body(DATABASE_1_BRIEF_DTO)); + .body(DATABASE_1_DTO)); /* test */ dataServiceGateway.createDatabase(DATABASE_1_CREATE_INTERNAL); @@ -266,7 +266,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpServerErrorException.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); /* test */ assertThrows(DataServiceConnectionException.class, () -> { @@ -280,7 +280,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.Unauthorized.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); /* test */ assertThrows(DataServiceException.class, () -> { @@ -294,7 +294,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ doThrow(HttpClientErrorException.BadRequest.class) .when(dataServiceRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class)); + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class)); /* test */ assertThrows(DataServiceException.class, () -> { @@ -306,7 +306,7 @@ public class DataServiceGatewayUnitTest extends AbstractUnitTest { public void createDatabase_responseCode_fails() { /* mock */ - when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseBriefDto.class))) + when(dataServiceRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) .build()); diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 76f6d37a3a..b7556a03a5 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -113,11 +113,11 @@ class ContainerBrief(BaseModel): class ColumnBrief(BaseModel): id: int name: str - alias: str database_id: int table_id: int internal_name: str type: ColumnType + alias: Optional[str] = None class TableBrief(BaseModel): diff --git a/lib/python/tests/test_dtos.py b/lib/python/tests/test_dtos.py index 54208a1d9a..0a90949dba 100644 --- a/lib/python/tests/test_dtos.py +++ b/lib/python/tests/test_dtos.py @@ -42,7 +42,7 @@ class AnalyseUnitTest(unittest.TestCase): skipped: [str] = [] def setUp(self): - with open('../../../.docs/.openapi/api.yaml', 'r') as f: + with open('../../.docs/.openapi/api.yaml', 'r') as f: self.schemas = safe_load(f)['components']['schemas'] for name, obj in inspect.getmembers(sys.modules[dto.__name__]): self.found += 1 diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index 7605809e61..203c296b9c 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -4,7 +4,7 @@ import requests_mock from pydantic_core import ValidationError from dbrepo.RestClient import RestClient -from dbrepo.api.dto import Database, Container, Image, DatabaseAccess, AccessType, DatabaseBrief, UserBrief, \ +from dbrepo.api.dto import Database, DatabaseAccess, AccessType, DatabaseBrief, UserBrief, \ ContainerBrief, ImageBrief from dbrepo.api.exceptions import ResponseCodeError, NotExistsError, ForbiddenError, MalformedError, AuthenticationError @@ -24,7 +24,7 @@ class DatabaseUnitTest(unittest.TestCase): DatabaseBrief( id=1, name='test', - owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), + owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16', contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), internal_name='test_abcd', is_public=True, diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py index 45b0a919e7..0c71c0216f 100644 --- a/lib/python/tests/test_unit_identifier.py +++ b/lib/python/tests/test_unit_identifier.py @@ -1,14 +1,12 @@ import unittest import requests_mock -import datetime from dbrepo.RestClient import RestClient - -from dbrepo.api.dto import Identifier, IdentifierType, CreateIdentifierTitle, CreateIdentifierCreator, \ - IdentifierCreator, IdentifierTitle, IdentifierDescription, CreateIdentifierDescription, Language, \ - CreateIdentifierFunder, CreateRelatedIdentifier, RelatedIdentifierRelation, RelatedIdentifierType, IdentifierFunder, \ - RelatedIdentifier, UserBrief, IdentifierStatusType +from dbrepo.api.dto import Identifier, IdentifierType, CreateIdentifierTitle, Creator, IdentifierTitle, \ + IdentifierDescription, CreateIdentifierDescription, Language, CreateIdentifierFunder, CreateRelatedIdentifier, \ + RelatedIdentifierRelation, RelatedIdentifierType, IdentifierFunder, RelatedIdentifier, UserBrief, \ + IdentifierStatusType, CreateIdentifierCreator from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError, AuthenticationError @@ -29,7 +27,7 @@ class IdentifierUnitTest(unittest.TestCase): related_identifiers=[ RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[IdentifierCreator(id=5, creator_name='Carberry, Josiah')], + creators=[Creator(id=5, creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock @@ -127,7 +125,7 @@ class IdentifierUnitTest(unittest.TestCase): related_identifiers=[RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES, type=RelatedIdentifierType.DOI)], - creators=[IdentifierCreator(id=5, creator_name='Carberry, Josiah')], + creators=[Creator(id=5, creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))] # mock diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py index 4c4ad2af6a..36391e1fdd 100644 --- a/lib/python/tests/test_unit_table.py +++ b/lib/python/tests/test_unit_table.py @@ -6,7 +6,7 @@ from pandas import DataFrame from dbrepo.RestClient import RestClient from dbrepo.api.dto import Table, CreateTableConstraints, Column, Constraints, ColumnType, ConceptBrief, UnitBrief, \ - TableStatistics, ColumnStatistic, PrimaryKey, TableMinimal, ColumnMinimal, TableBrief, UserBrief + TableStatistics, ColumnStatistic, PrimaryKey, ColumnBrief, TableBrief, UserBrief from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError, NameExistsError, \ AuthenticationError, ExternalSystemError @@ -29,9 +29,20 @@ class TableUnitTest(unittest.TestCase): foreign_keys=[], checks=[], primary_key=[PrimaryKey(id=1, - table=TableMinimal(id=2, database_id=1), - column=ColumnMinimal(id=1, table_id=2, - database_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, ord=0, name="ID", @@ -159,9 +170,20 @@ class TableUnitTest(unittest.TestCase): foreign_keys=[], checks=[], primary_key=[PrimaryKey(id=1, - table=TableMinimal(id=2, database_id=1), - column=ColumnMinimal(id=1, table_id=2, - database_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, name="ID", ord=0, -- GitLab From bfa569edc65491d77ed81b3a2fbc27b75c1a4972 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 07:46:44 +0100 Subject: [PATCH 13/52] Updated tests Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab-ci.yml | 2 +- .../endpoint/SubsetEndpointUnitTest.java | 32 +++++++------------ .../endpoint/TableEndpointUnitTest.java | 12 +++---- .../main/java/at/tuwien/test/BaseTest.java | 5 +++ 4 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 43b8b17a6f..3661711509 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -266,7 +266,7 @@ test-data-service: dependencies: - build-data-service script: - - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS" + - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -DskipTests $MAVEN_OPTS" - "mvn -f ./dbrepo-data-service/pom.xml clean test verify $MAVEN_OPTS" - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" artifacts: 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 c76aa91ebf..002374fe9d 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 @@ -128,14 +128,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findById_privateDataPrivateSchemaAnonymous_fails() throws DatabaseNotFoundException, SQLException, - RemoteUnavailableException, UserNotFoundException, QueryNotFoundException, MetadataServiceException { + public void findById_privateDataPrivateSchemaAnonymous_fails() throws DatabaseNotFoundException, + RemoteUnavailableException, MetadataServiceException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) - .thenReturn(QUERY_1_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -208,7 +206,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_DTO); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); - when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); /* test */ @@ -218,20 +216,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void findById_publicDataPrivateSchemaAnonymous_fails() throws DatabaseNotFoundException, - RemoteUnavailableException, UserNotFoundException, StorageUnavailableException, QueryMalformedException, - QueryNotFoundException, SQLException, MetadataServiceException, TableNotFoundException, - ViewMalformedException { - final Dataset<Row> mock = sparkSession.emptyDataFrame(); + RemoteUnavailableException, MetadataServiceException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) - .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) - .thenReturn(mock); - when(storageService.transformDataset(any(Dataset.class))) - .thenReturn(EXPORT_RESOURCE_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -251,7 +240,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_DTO); when(subsetService.findById(DATABASE_4_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -298,9 +287,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME) - public void findById_publicDataPrivateSchemaUnavailableExport_fails() throws DatabaseNotFoundException, RemoteUnavailableException, - MetadataServiceException, SQLException, QueryMalformedException, UserNotFoundException, - QueryNotFoundException, TableNotFoundException, ViewMalformedException, StorageUnavailableException { + public void findById_publicDataPrivateSchemaUnavailableExport_fails() throws DatabaseNotFoundException, + RemoteUnavailableException, MetadataServiceException, SQLException, QueryMalformedException, + UserNotFoundException, QueryNotFoundException, TableNotFoundException, ViewMalformedException, + StorageUnavailableException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) @@ -311,7 +301,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(EXPORT_RESOURCE_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_DTO), eq(QUERY_5_DTO), eq(null), eq(null)); + .getData(eq(DATABASE_3_DTO), eq(QUERY_5_DTO), eq(0L), eq(10L)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -404,7 +394,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(null), eq(null)); + .getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L)); when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); when(metadataServiceGateway.getAccess(DATABASE_3_ID, USER_1_ID)) 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 82be231e56..35df8f5dd9 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 @@ -284,7 +284,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -307,7 +307,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_DTO); when(tableService.getCount(eq(TABLE_8_DTO), any(Instant.class))) .thenReturn(3L); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -365,7 +365,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_DTO); doThrow(QueryMalformedException.class) .when(tableService) - .getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null)); + .getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -406,7 +406,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -1147,7 +1147,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -1168,7 +1168,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); /* test */ 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 bab95a366b..d732a35843 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 @@ -1379,6 +1379,7 @@ public abstract class BaseTest { public final static DatabaseDto DATABASE_3_DTO = DatabaseDto.builder() .id(DATABASE_3_ID) .isPublic(DATABASE_3_PUBLIC) + .isSchemaPublic(DATABASE_3_SCHEMA_PUBLIC) .name(DATABASE_3_NAME) .internalName(DATABASE_3_INTERNALNAME) .owner(USER_3_BRIEF_DTO) @@ -1392,6 +1393,7 @@ public abstract class BaseTest { public final static DatabaseBriefDto DATABASE_3_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_3_ID) .isPublic(DATABASE_3_PUBLIC) + .isSchemaPublic(DATABASE_3_SCHEMA_PUBLIC) .name(DATABASE_3_NAME) .internalName(DATABASE_3_INTERNALNAME) .ownerId(USER_3_ID) @@ -7552,6 +7554,7 @@ public abstract class BaseTest { public final static DatabaseDto DATABASE_1_DTO = DatabaseDto.builder() .id(DATABASE_1_ID) .isPublic(DATABASE_1_PUBLIC) + .isSchemaPublic(DATABASE_1_SCHEMA_PUBLIC) .name(DATABASE_1_NAME) .container(CONTAINER_1_DTO) .internalName(DATABASE_1_INTERNALNAME) @@ -7564,6 +7567,7 @@ public abstract class BaseTest { public final static DatabaseBriefDto DATABASE_1_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_1_ID) .isPublic(DATABASE_1_PUBLIC) + .isSchemaPublic(DATABASE_1_SCHEMA_PUBLIC) .name(DATABASE_1_NAME) .internalName(DATABASE_1_INTERNALNAME) .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO))) @@ -7718,6 +7722,7 @@ public abstract class BaseTest { public final static DatabaseBriefDto DATABASE_2_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_2_ID) .isPublic(DATABASE_2_PUBLIC) + .isSchemaPublic(DATABASE_2_SCHEMA_PUBLIC) .name(DATABASE_2_NAME) .internalName(DATABASE_2_INTERNALNAME) .identifiers(new LinkedList<>(List.of(IDENTIFIER_5_BRIEF_DTO))) -- GitLab From 673132ef161ad02ab03e1d8252fac07cf826927e Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 09:31:13 +0100 Subject: [PATCH 14/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/changelog.md | 18 ++- .../at/tuwien/endpoints/TableEndpoint.java | 6 +- .../endpoint/AccessEndpointUnitTest.java | 24 ++-- .../endpoint/DatabaseEndpointUnitTest.java | 8 +- .../endpoint/TableEndpointUnitTest.java | 7 +- .../MetadataServiceGatewayUnitTest.java | 36 +---- .../DefaultListenerIntegrationTest.java | 4 +- .../listener/DefaultListenerUnitTest.java | 5 +- .../service/AccessServiceIntegrationTest.java | 36 ++--- .../ContainerServiceIntegrationTest.java | 2 +- .../DatabaseServiceIntegrationTest.java | 2 +- .../service/TableServiceIntegrationTest.java | 2 +- .../impl/MetadataServiceGatewayImpl.java | 32 ++--- .../java/at/tuwien/service/TableService.java | 3 +- .../impl/AccessServiceMariaDbImpl.java | 2 +- .../impl/ContainerServiceMariaDbImpl.java | 2 +- .../at/tuwien/service/impl/DataConnector.java | 65 +++++---- .../impl/DatabaseServiceMariaDbImpl.java | 2 +- .../impl/QueueServiceRabbitMqImpl.java | 2 +- .../impl/SubsetServiceMariaDbImpl.java | 11 +- .../service/impl/TableServiceMariaDbImpl.java | 31 ++-- .../service/impl/ViewServiceMariaDbImpl.java | 4 +- .../main/java/at/tuwien/api/CacheableDto.java | 25 ---- .../at/tuwien/api/container/ContainerDto.java | 35 ++--- .../at/tuwien/api/database/DatabaseDto.java | 26 ---- .../java/at/tuwien/api/database/ViewDto.java | 27 +--- .../tuwien/api/database/table/TableDto.java | 28 +--- .../main/java/at/tuwien/api/user/UserDto.java | 34 ++--- .../java/at/tuwien/mapper/MetadataMapper.java | 5 +- .../at/tuwien/endpoints/AbstractEndpoint.java | 11 +- .../at/tuwien/endpoints/DatabaseEndpoint.java | 7 +- .../at/tuwien/endpoints/TableEndpoint.java | 35 ++--- .../at/tuwien/endpoints/UserEndpoint.java | 8 +- .../at/tuwien/endpoints/ViewEndpoint.java | 22 +-- .../endpoints/TableEndpointUnitTest.java | 6 +- .../endpoints/UserEndpointUnitTest.java | 8 +- .../endpoints/ViewEndpointUnitTest.java | 2 +- .../tuwien/service/ImageServiceUnitTest.java | 4 +- .../java/at/tuwien/test/AbstractUnitTest.java | 5 + .../main/java/at/tuwien/test/BaseTest.java | 135 ++++++++++-------- lib/python/dbrepo/RestClient.py | 19 ++- 41 files changed, 309 insertions(+), 437 deletions(-) diff --git a/.docs/changelog.md b/.docs/changelog.md index f2bb1ab057..e2bb59c374 100644 --- a/.docs/changelog.md +++ b/.docs/changelog.md @@ -2,6 +2,22 @@ author: Martin Weise --- +## v1.6.2 (2025-01-24) + +[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.2) + +### What's Changed + +#### Changes + +* Added interface tests for the Python library in Gitlab CI/CD pipeline + in [#486](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/486). + +#### Fixes + +* Fixed a bug where no pagination was possible + in [#487](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/487). + ## v1.6.1 (2025-01-21) [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.1) @@ -15,7 +31,7 @@ author: Martin Weise #### Fixes -* Added init container that adds the admin user to the Metadata Database +* Added init container that adds the admin user to the Metadata Database in [#480](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/480). ## v1.6.0 (2025-01-07) 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 35c6466747..92ba523f36 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 @@ -723,11 +723,11 @@ public class TableEndpoint extends RestEndpoint { public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull @PathVariable("tableId") Long tableId) throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException, - MetadataServiceException, TableMalformedException, DatabaseNotFoundException { + MetadataServiceException, TableMalformedException { log.debug("endpoint generate table statistic, databaseId={}, tableId={}", databaseId, tableId); - final TableDto table = credentialService.getTable(databaseId, tableId); try { - return ResponseEntity.ok(tableService.getStatistics(credentialService.getDatabase(table.getTdbid()), table)); + return ResponseEntity.ok(tableService.getStatistics( + credentialService.getTable(databaseId, tableId))); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database", e); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java index 00553dce06..3cecdb6457 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java @@ -53,7 +53,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) - .thenReturn(USER_4_PRIVILEGED_DTO); + .thenReturn(USER_4_DTO); /* test */ final ResponseEntity<Void> response = accessEndpoint.create(DATABASE_1_ID, USER_4_ID, UPDATE_DATABASE_ACCESS_READ_DTO); @@ -70,7 +70,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + .thenReturn(USER_1_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -87,10 +87,10 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) - .thenReturn(USER_4_PRIVILEGED_DTO); + .thenReturn(USER_4_DTO); doThrow(SQLException.class) .when(accessService) - .create(DATABASE_1_DTO, USER_4_PRIVILEGED_DTO, AccessTypeDto.READ); + .create(DATABASE_1_DTO, USER_4_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -151,7 +151,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + .thenReturn(USER_1_DTO); /* test */ final ResponseEntity<Void> response = accessEndpoint.update(DATABASE_1_ID, USER_1_ID, UPDATE_DATABASE_ACCESS_READ_DTO); @@ -168,10 +168,10 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + .thenReturn(USER_1_DTO); doThrow(SQLException.class) .when(accessService) - .update(DATABASE_1_DTO, USER_1_PRIVILEGED_DTO, AccessTypeDto.READ); + .update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -188,7 +188,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) - .thenReturn(USER_4_PRIVILEGED_DTO); + .thenReturn(USER_4_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -250,7 +250,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + .thenReturn(USER_1_DTO); doNothing() .when(accessService) .delete(any(DatabaseDto.class), any(UserDto.class)); @@ -270,7 +270,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_4_ID)) - .thenReturn(USER_4_PRIVILEGED_DTO); + .thenReturn(USER_4_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -331,10 +331,10 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { when(credentialService.getDatabase(DATABASE_1_ID)) .thenReturn(DATABASE_1_DTO); when(credentialService.getUser(USER_1_ID)) - .thenReturn(USER_1_PRIVILEGED_DTO); + .thenReturn(USER_1_DTO); doThrow(SQLException.class) .when(accessService) - .delete(DATABASE_1_DTO, USER_1_PRIVILEGED_DTO); + .delete(DATABASE_1_DTO, USER_1_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java index 592063e034..0c6f9d8521 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java @@ -5,7 +5,10 @@ import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.user.UserDto; import at.tuwien.endpoints.DatabaseEndpoint; import at.tuwien.exception.*; -import at.tuwien.service.*; +import at.tuwien.service.AccessService; +import at.tuwien.service.ContainerService; +import at.tuwien.service.CredentialService; +import at.tuwien.service.DatabaseService; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -35,9 +38,6 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Autowired private DatabaseEndpoint databaseEndpoint; - @MockBean - private SubsetService queryService; - @MockBean private ContainerService containerService; 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 35df8f5dd9..c7a74de17f 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 @@ -1,7 +1,6 @@ package at.tuwien.endpoint; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.endpoints.TableEndpoint; @@ -166,12 +165,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void statistic_succeeds() throws DatabaseUnavailableException, TableNotFoundException, SQLException, - TableMalformedException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException { + TableMalformedException, RemoteUnavailableException, MetadataServiceException { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); - when(tableService.getStatistics(any(DatabaseDto.class), any(TableDto.class))) + when(tableService.getStatistics(any(TableDto.class))) .thenReturn(TABLE_8_STATISTIC_DTO); /* test */ @@ -189,7 +188,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_DTO); doThrow(SQLException.class) .when(tableService) - .getStatistics(any(DatabaseDto.class), any(TableDto.class)); + .getStatistics(any(TableDto.class)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { 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 a8633836b8..a2ed7e3817 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 @@ -36,10 +36,6 @@ import static org.mockito.Mockito.when; @ExtendWith(SpringExtension.class) public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { - @MockBean - @Qualifier("restTemplate") - private RestTemplate restTemplate; - @MockBean @Qualifier("internalRestTemplate") private RestTemplate internalRestTemplate; @@ -56,13 +52,8 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { public void getTableById_succeeds() throws TableNotFoundException, RemoteUnavailableException, MetadataServiceException { final HttpHeaders headers = new HttpHeaders(); - headers.set("X-Type", IMAGE_1_JDBC); - headers.set("X-Host", CONTAINER_1_HOST); - headers.set("X-Port", "" + CONTAINER_1_PORT); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); - headers.set("X-Database", DATABASE_1_INTERNALNAME); - headers.set("X-Table", TABLE_1_INTERNAL_NAME); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) @@ -72,12 +63,11 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* test */ final TableDto response = metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID); - assertEquals(IMAGE_1_JDBC, response.getJdbcMethod()); - assertEquals(CONTAINER_1_HOST, response.getHost()); - assertEquals(CONTAINER_1_PORT, response.getPort()); - assertEquals(CONTAINER_1_PRIVILEGED_USERNAME, response.getUsername()); - assertEquals(CONTAINER_1_PRIVILEGED_PASSWORD, response.getPassword()); - assertEquals(DATABASE_1_INTERNALNAME, response.getDatabase()); + assertEquals(IMAGE_1_JDBC, response.getDatabase().getContainer().getImage().getJdbcMethod()); + assertEquals(CONTAINER_1_HOST, response.getDatabase().getContainer().getHost()); + assertEquals(CONTAINER_1_PORT, response.getDatabase().getContainer().getPort()); + assertEquals(CONTAINER_1_PRIVILEGED_USERNAME, response.getDatabase().getContainer().getUsername()); + assertEquals(CONTAINER_1_PRIVILEGED_PASSWORD, response.getDatabase().getContainer().getPassword()); assertEquals(TABLE_1_INTERNAL_NAME, response.getInternalName()); } @@ -147,13 +137,8 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { @Test public void getTableById_emptyBody_fails() { final HttpHeaders headers = new HttpHeaders(); - headers.set("X-Type", IMAGE_1_JDBC); - headers.set("X-Host", CONTAINER_1_HOST); - headers.set("X-Port", "" + CONTAINER_1_PORT); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); - headers.set("X-Database", DATABASE_1_INTERNALNAME); - headers.set("X-Table", TABLE_1_INTERNAL_NAME); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) @@ -173,8 +158,6 @@ 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-Host", CONTAINER_1_HOST); - headers.set("X-Port", "" + CONTAINER_1_PORT); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) @@ -369,13 +352,8 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { @Test public void getViewById_succeeds() throws RemoteUnavailableException, ViewNotFoundException, MetadataServiceException { final HttpHeaders headers = new HttpHeaders(); - headers.set("X-Type", IMAGE_1_JDBC); - headers.set("X-Host", CONTAINER_1_HOST); - headers.set("X-Port", "" + CONTAINER_1_PORT); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); - headers.set("X-Database", DATABASE_1_INTERNALNAME); - headers.set("X-View", VIEW_1_INTERNAL_NAME); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(ViewDto.class))) @@ -454,12 +432,8 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { @Test public void getViewById_emptyBody_fails() { final HttpHeaders headers = new HttpHeaders(); - headers.set("X-Type", IMAGE_1_JDBC); - headers.set("X-Host", CONTAINER_1_HOST); - headers.set("X-Port", "" + CONTAINER_1_PORT); headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME); headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD); - headers.set("X-Database", DATABASE_1_INTERNALNAME); /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(ViewDto.class))) diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java index 44e5f88912..752a9b0e05 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java @@ -57,8 +57,8 @@ public class DefaultListenerIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* database */ - MariaDbConfig.dropAllDatabases(CONTAINER_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropAllDatabases(CONTAINER_1_PRIVILEGED_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); } @Test 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 b3a3bf6397..7a439ed55c 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 @@ -51,9 +51,10 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { @BeforeEach public void beforeEach() throws SQLException { + genesis(); /* metadata database */ - MariaDbConfig.dropAllDatabases(CONTAINER_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropAllDatabases(CONTAINER_1_PRIVILEGED_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); } @Test diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java index bc121c3b26..2c174e0a3d 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java @@ -44,16 +44,16 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); } @Test public void create_read_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.READ); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultRead.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -63,8 +63,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void create_writeOwn_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -74,8 +74,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void create_writeAll_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.create(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.create(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -85,8 +85,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_read_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.READ); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultRead.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -96,8 +96,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_writeOwn_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.WRITE_OWN); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -107,8 +107,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void update_writeAll_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.WRITE_ALL); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); for (String privilege : grantDefaultWrite.split(",")) { assertTrue(privileges.stream().anyMatch(p -> p.trim().equals(privilege.trim()))); } @@ -119,7 +119,7 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(DatabaseMalformedException.class, () -> { - accessService.update(DATABASE_1_DTO, USER_5_DTO, AccessTypeDto.WRITE_ALL); + accessService.update(DATABASE_1_PRIVILEGED_DTO, USER_5_DTO, AccessTypeDto.WRITE_ALL); }); } @@ -127,8 +127,8 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { public void delete_succeeds() throws SQLException, DatabaseMalformedException { /* test */ - accessService.delete(DATABASE_1_DTO, USER_1_DTO); - final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_DTO, USER_1_USERNAME); + accessService.delete(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO); + final List<String> privileges = MariaDbConfig.getPrivileges(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); assertEquals(1, privileges.size()); assertEquals("USAGE", privileges.get(0)); } @@ -138,7 +138,7 @@ public class AccessServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(DatabaseMalformedException.class, () -> { - accessService.delete(DATABASE_1_DTO, USER_5_DTO); + accessService.delete(DATABASE_1_PRIVILEGED_DTO, USER_5_DTO); }); } 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 e793a8362c..251dfe53c5 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 @@ -45,7 +45,7 @@ public class ContainerServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); } @Test 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 26ff951dda..ae1917202d 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 @@ -63,7 +63,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); } @Test diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index f8687d8e0d..cfab2600e5 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -374,7 +374,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getStatistics_succeeds() throws TableMalformedException, SQLException, TableNotFoundException { /* test */ - final TableStatisticDto response = tableService.getStatistics(DATABASE_1_DTO, TABLE_2_DTO); + final TableStatisticDto response = tableService.getStatistics(TABLE_2_DTO); assertEquals(TABLE_2_COLUMNS.size(), response.getColumns().size()); log.trace("response rows: {}", response.getRows()); assertEquals(3L, response.getRows()); 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 650652d62f..7b02192b7e 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 @@ -100,7 +100,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", "X-Host", "X-Port", "X-Type"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all database headers"); log.debug("expected headers: {}", expectedHeaders); @@ -112,12 +112,8 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { throw new MetadataServiceException("Failed to find database with id " + id + ": body is empty"); } final DatabaseDto database = response.getBody(); - database.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); - database.setUsername(response.getHeaders().get("X-Username").get(0)); - database.setPassword(response.getHeaders().get("X-Password").get(0)); - database.setDatabase(database.getInternalName()); - database.setHost(response.getHeaders().get("X-Host").get(0)); - database.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); + database.getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); + database.getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); database.setLastRetrieved(Instant.now()); return database; } @@ -141,7 +137,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-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-Table", "X-Type"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all table headers"); log.debug("expected headers: {}", expectedHeaders); @@ -153,13 +149,8 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { throw new MetadataServiceException("Failed to find table with id " + id + ": body is empty"); } final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody()); - table.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); - table.setHost(response.getHeaders().get("X-Host").get(0)); - table.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); - table.setUsername(response.getHeaders().get("X-Username").get(0)); - table.setPassword(response.getHeaders().get("X-Password").get(0)); - table.setDatabase(response.getHeaders().get("X-Database").get(0)); - table.setInternalName(response.getHeaders().get("X-Table").get(0)); + table.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); + table.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); table.setLastRetrieved(Instant.now()); return table; } @@ -183,7 +174,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-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-View", "X-Type"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all view headers"); log.debug("expected headers: {}", expectedHeaders); @@ -195,13 +186,8 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { throw new MetadataServiceException("Failed to find view with id " + id + ": body is empty"); } final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody()); - view.setJdbcMethod(response.getHeaders().get("X-Type").get(0)); - view.setHost(response.getHeaders().get("X-Host").get(0)); - view.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0))); - view.setUsername(response.getHeaders().get("X-Username").get(0)); - view.setPassword(response.getHeaders().get("X-Password").get(0)); - view.setDatabase(response.getHeaders().get("X-Database").get(0)); - view.setInternalName(response.getHeaders().get("X-View").get(0)); + view.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); + view.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); view.setLastRetrieved(Instant.now()); return view; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java index b74c491abe..636e12ceb6 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java @@ -17,14 +17,13 @@ public interface TableService { /** * Generate table statistic for a given table. Only numerical columns are calculated. * - * @param database The database. * @param table The table. * @return The table statistic, if successful. * @throws SQLException Failed to parse SQL query, contains invalid syntax. * @throws TableMalformedException The table statistic generation was unsuccessful, likely due to a bug in the mapping. * @throws TableNotFoundException The table could not be inspected in the data database. */ - TableStatisticDto getStatistics(DatabaseDto database, TableDto table) throws SQLException, TableMalformedException, + TableStatisticDto getStatistics(TableDto table) throws SQLException, TableMalformedException, TableNotFoundException; /** diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java index 16ace6dc9e..be049663b7 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/AccessServiceMariaDbImpl.java @@ -17,7 +17,7 @@ import java.sql.SQLException; @Log4j2 @Service -public class AccessServiceMariaDbImpl extends DataConnector<DatabaseDto> implements AccessService { +public class AccessServiceMariaDbImpl extends DataConnector implements AccessService { @Value("${dbrepo.grant.default.read}") private String grantDefaultRead; 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 fc9b2d97c3..aedba1aed2 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 @@ -19,7 +19,7 @@ import java.sql.SQLException; @Log4j2 @Service -public class ContainerServiceMariaDbImpl extends DataConnector<ContainerDto> implements ContainerService { +public class ContainerServiceMariaDbImpl extends DataConnector implements ContainerService { private final RabbitConfig rabbitConfig; private final MariaDbMapper mariaDbMapper; diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java index 3a54b399d4..c21d37721b 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -1,20 +1,22 @@ package at.tuwien.service.impl; -import at.tuwien.api.CacheableDto; +import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.database.DatabaseDto; +import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.table.TableDto; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; @Log4j2 @Service -public abstract class DataConnector<T extends CacheableDto> { +public abstract class DataConnector { - public ComboPooledDataSource getDataSource(T entity) { + public ComboPooledDataSource getDataSource(ContainerDto container, String databaseName) { final ComboPooledDataSource dataSource = new ComboPooledDataSource(); - dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), - entity.getDatabase())); - dataSource.setUser(entity.getUsername()); - dataSource.setPassword(entity.getPassword()); + dataSource.setJdbcUrl(getJdbcUrl(container, databaseName)); + dataSource.setUser(container.getUsername()); + dataSource.setPassword(container.getPassword()); dataSource.setInitialPoolSize(5); dataSource.setMinPoolSize(5); dataSource.setAcquireIncrement(5); @@ -23,37 +25,48 @@ public abstract class DataConnector<T extends CacheableDto> { return dataSource; } - public ComboPooledDataSource getDataSource(T entity, String databaseName) { - final ComboPooledDataSource dataSource = new ComboPooledDataSource(); - dataSource.setJdbcUrl(getJdbcUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), databaseName)); - dataSource.setUser(entity.getUsername()); - dataSource.setPassword(entity.getPassword()); - dataSource.setInitialPoolSize(5); - dataSource.setMinPoolSize(5); - dataSource.setAcquireIncrement(5); - dataSource.setMaxPoolSize(20); - dataSource.setMaxStatements(100); - return dataSource; + public ComboPooledDataSource getDataSource(ViewDto view) { + return getDataSource(view.getDatabase().getContainer(), null); + } + + public ComboPooledDataSource getDataSource(TableDto table) { + return getDataSource(table.getDatabase().getContainer(), null); } - public String getSparkUrl(String jdbcMethod, String host, Integer port, String databaseName) { - final StringBuilder sb = new StringBuilder(getJdbcUrl(jdbcMethod, host, port, databaseName)) + public ComboPooledDataSource getDataSource(ContainerDto container) { + return getDataSource(container, null); + } + + public ComboPooledDataSource getDataSource(DatabaseDto database) { + return getDataSource(database.getContainer(), database.getInternalName()); + } + + public String getSparkUrl(ContainerDto container, String databaseName) { + final StringBuilder sb = new StringBuilder(getJdbcUrl(container, databaseName)) .append("?sessionVariables=sql_mode='ANSI_QUOTES'"); log.trace("mapped container to spark url: {}", sb.toString()); return sb.toString(); } - public String getSparkUrl(T entity) { - return getSparkUrl(entity.getJdbcMethod(), entity.getHost(), entity.getPort(), entity.getDatabase()); + public String getSparkUrl(TableDto table) { + return getSparkUrl(table.getDatabase().getContainer(), null); + } + + public String getSparkUrl(DatabaseDto databaseDto) { + return getSparkUrl(databaseDto.getContainer(), null); + } + + public String getSparkUrl(ContainerDto container) { + return getSparkUrl(container, null); } - public String getJdbcUrl(String jdbcMethod, String host, Integer port, String databaseName) { + public String getJdbcUrl(ContainerDto container, String databaseName) { final StringBuilder stringBuilder = new StringBuilder("jdbc:") - .append(jdbcMethod) + .append(container.getImage().getJdbcMethod()) .append("://") - .append(host) + .append(container.getHost()) .append(":") - .append(port); + .append(container.getPort()); if (databaseName != null) { stringBuilder.append("/") .append(databaseName); 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 cfe43d8f8f..c4afe44287 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 @@ -29,7 +29,7 @@ import java.util.List; @Log4j2 @Service -public class DatabaseServiceMariaDbImpl extends DataConnector<DatabaseDto> implements DatabaseService { +public class DatabaseServiceMariaDbImpl extends DataConnector implements DatabaseService { private final DataMapper dataMapper; private final QueryConfig queryConfig; diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java index 1a26a84ef6..4db29335fb 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/QueueServiceRabbitMqImpl.java @@ -18,7 +18,7 @@ import java.util.Optional; @Log4j2 @Service -public class QueueServiceRabbitMqImpl extends DataConnector<TableDto> implements QueueService { +public class QueueServiceRabbitMqImpl extends DataConnector implements QueueService { private final DataMapper dataMapper; private final MetadataMapper metadataMapper; 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 62b7c77a84..0a208b2890 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 @@ -13,7 +13,6 @@ import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.DatabaseService; import at.tuwien.service.SubsetService; import at.tuwien.service.TableService; -import at.tuwien.service.ViewService; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.apache.spark.sql.Dataset; @@ -29,10 +28,9 @@ import java.util.UUID; @Log4j2 @Service -public class SubsetServiceMariaDbImpl extends DataConnector<DatabaseDto> implements SubsetService { +public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetService { private final DataMapper dataMapper; - private final ViewService viewService; private final TableService tableService; private final MariaDbMapper mariaDbMapper; private final MetadataMapper metadataMapper; @@ -40,11 +38,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector<DatabaseDto> impleme private final MetadataServiceGateway metadataServiceGateway; @Autowired - public SubsetServiceMariaDbImpl(DataMapper dataMapper, ViewService viewService, TableService tableService, - MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper, - DatabaseService databaseService, MetadataServiceGateway metadataServiceGateway) { + public SubsetServiceMariaDbImpl(DataMapper dataMapper, TableService tableService, MariaDbMapper mariaDbMapper, + MetadataMapper metadataMapper, DatabaseService databaseService, + MetadataServiceGateway metadataServiceGateway) { this.dataMapper = dataMapper; - this.viewService = viewService; this.tableService = tableService; this.mariaDbMapper = mariaDbMapper; this.metadataMapper = metadataMapper; diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java index 482f874624..4d4121f060 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java @@ -33,7 +33,7 @@ import java.util.Properties; @Log4j2 @Service -public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements TableService { +public class TableServiceMariaDbImpl extends DataConnector implements TableService { private final DataMapper dataMapper; private final SparkSession sparkSession; @@ -52,7 +52,7 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements } @Override - public TableStatisticDto getStatistics(DatabaseDto database, TableDto table) throws SQLException, TableMalformedException, + public TableStatisticDto getStatistics(TableDto table) throws SQLException, TableMalformedException, TableNotFoundException { final ComboPooledDataSource dataSource = getDataSource(table); final Connection connection = dataSource.getConnection(); @@ -62,14 +62,14 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements final long start = System.currentTimeMillis(); final String query = mariaDbMapper.tableColumnStatisticsSelectRawQuery(table.getColumns(), table.getInternalName()); if (query == null) { - log.debug("table {}.{} does not have columns that can be analysed for statistical properties (i.e. no numeric columns)", database.getInternalName(), table.getInternalName()); + log.debug("table {}.{} does not have columns that can be analysed for statistical properties (i.e. no numeric columns)", table.getDatabase().getInternalName(), table.getInternalName()); statistic = null; } else { final ResultSet resultSet = connection.prepareStatement(query) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); statistic = dataMapper.resultSetToTableStatistic(resultSet); - final TableDto tmpTable = databaseService.inspectTable(database, table.getInternalName()); + final TableDto tmpTable = databaseService.inspectTable(table.getDatabase(), table.getInternalName()); statistic.setAvgRowLength(tmpTable.getAvgRowLength()); statistic.setDataLength(tmpTable.getDataLength()); statistic.setMaxDataLength(tmpTable.getMaxDataLength()); @@ -95,7 +95,7 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements @Override public void updateTable(TableDto table, TableUpdateDto data) throws SQLException, TableMalformedException { - final ComboPooledDataSource dataSource = getDataSource(table); + final ComboPooledDataSource dataSource = getDataSource(table.getDatabase()); final Connection connection = dataSource.getConnection(); try { /* create table if not exists */ @@ -122,7 +122,7 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements @Override public void delete(TableDto table) throws SQLException, QueryMalformedException { - final ComboPooledDataSource dataSource = getDataSource(table); + final ComboPooledDataSource dataSource = getDataSource(table.getDatabase()); final Connection connection = dataSource.getConnection(); try { /* create table if not exists */ @@ -144,14 +144,14 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements @Override public List<TableHistoryDto> history(TableDto table, Long size) throws SQLException, TableNotFoundException { - final ComboPooledDataSource dataSource = getDataSource(table); + final ComboPooledDataSource dataSource = getDataSource(table.getDatabase()); final Connection connection = dataSource.getConnection(); final List<TableHistoryDto> history; try { /* find table data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectHistoryRawQuery( - table.getDatabase(), table.getInternalName(), size)) + table.getDatabase().getInternalName(), table.getInternalName(), size)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); history = dataMapper.resultSetToTableHistory(resultSet); @@ -170,14 +170,14 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements @Override public Long getCount(TableDto table, Instant timestamp) throws SQLException, QueryMalformedException { - final ComboPooledDataSource dataSource = getDataSource(table); + final ComboPooledDataSource dataSource = getDataSource(table.getDatabase()); final Connection connection = dataSource.getConnection(); final Long queryResult; try { /* find table data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery( - table.getDatabase(), table.getInternalName(), timestamp)) + table.getDatabase().getInternalName(), table.getInternalName(), timestamp)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); queryResult = mariaDbMapper.resultSetToNumber(resultSet); @@ -204,8 +204,8 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements final Dataset<Row> dataset = storageService.loadDataset(columns, data.getLocation(), String.valueOf(data.getSeparator()), data.getHeader()); final Properties properties = new Properties(); - properties.setProperty("user", table.getUsername()); - properties.setProperty("password", table.getPassword()); + properties.setProperty("user", table.getDatabase().getContainer().getUsername()); + properties.setProperty("password", table.getDatabase().getContainer().getPassword()); final String temporaryTable = table.getInternalName() + "_tmp"; try { log.trace("import dataset to temporary table: {}", temporaryTable); @@ -375,10 +375,9 @@ public class TableServiceMariaDbImpl extends DataConnector<TableDto> implements try { return sparkSession.read() .format("jdbc") - .option("user", database.getUsername()) - .option("password", database.getPassword()) - .option("url", getSparkUrl(database.getJdbcMethod(), database.getHost(), database.getPort(), - database.getInternalName())) + .option("user", database.getContainer().getUsername()) + .option("password", database.getContainer().getPassword()) + .option("url", getSparkUrl(database)) .option("query", mariaDbMapper.defaultRawSelectQuery(database.getInternalName(), tableOrView, timestamp, page, size)) .load(); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java index 3224c371a3..fff524047e 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ViewServiceMariaDbImpl.java @@ -17,7 +17,7 @@ import java.time.Instant; @Log4j2 @Service -public class ViewServiceMariaDbImpl extends DataConnector<ViewDto> implements ViewService { +public class ViewServiceMariaDbImpl extends DataConnector implements ViewService { private final MariaDbMapper mariaDbMapper; @@ -57,7 +57,7 @@ public class ViewServiceMariaDbImpl extends DataConnector<ViewDto> implements Vi /* find view data */ final long start = System.currentTimeMillis(); final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery( - view.getDatabase(), view.getInternalName(), timestamp)) + view.getDatabase().getInternalName(), view.getInternalName(), timestamp)) .executeQuery(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); queryResult = mariaDbMapper.resultSetToNumber(resultSet); diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java index 4ff6f699d6..e947ece632 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/CacheableDto.java @@ -1,6 +1,5 @@ package at.tuwien.api; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.EqualsAndHashCode; @@ -20,28 +19,4 @@ public abstract class CacheableDto { @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - - @ToString.Exclude - @Schema(example = "username") - private String username; - - @ToString.Exclude - @JsonIgnore - private String password; - - @ToString.Exclude - @Schema(example = "air_quality") - private String database; - } 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 56d0df315f..913ab26d9d 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 @@ -2,7 +2,6 @@ package at.tuwien.api.container; import at.tuwien.api.CacheableDto; import at.tuwien.api.container.image.ImageDto; -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; @@ -35,6 +34,12 @@ public class ContainerDto extends CacheableDto { @Schema(example = "air_quality") private String internalName; + @Schema(example = "data-db") + private String host; + + @Schema(example = "3306") + private Integer port; + @JsonProperty("ui_host") @Schema(example = "example.com") private String uiHost; @@ -54,34 +59,18 @@ public class ContainerDto extends CacheableDto { @Schema(example = "10") private Long count; - /* lombok limitations prevent from convenient builder functions */ - - @JsonProperty("last_retrieved") - @Schema(example = "2025-01-23T12:09:01") - private Instant lastRetrieved; - - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - @ToString.Exclude @Schema(example = "username") private String username; @ToString.Exclude - @JsonIgnore + @Schema(example = "p4ssw0rd") private String password; - @ToString.Exclude - @Schema(example = "air_quality") - private String database; + /* lombok limitations prevent from convenient builder functions */ + + @JsonProperty("last_retrieved") + @Schema(example = "2025-01-23T12:09:01") + private Instant lastRetrieved; } 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 c6866c494b..d6ea2bff9e 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 @@ -5,7 +5,6 @@ import at.tuwien.api.container.ContainerDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; -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; @@ -67,7 +66,6 @@ public class DatabaseDto extends CacheableDto { @Schema(example = "true") private Boolean isSchemaPublic; - @NotNull private ContainerDto container; @NotNull @@ -94,28 +92,4 @@ public class DatabaseDto extends CacheableDto { @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - - @ToString.Exclude - @Schema(example = "username") - private String username; - - @ToString.Exclude - @JsonIgnore - private String password; - - @ToString.Exclude - @Schema(example = "air_quality") - private String database; - } 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 2785cf7107..5f9373bb12 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 @@ -3,7 +3,6 @@ package at.tuwien.api.database; import at.tuwien.api.CacheableDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; -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; @@ -66,6 +65,8 @@ public class ViewDto extends CacheableDto { @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") private String queryHash; + private DatabaseDto database; + @NotNull private UserBriefDto owner; @@ -78,28 +79,4 @@ public class ViewDto extends CacheableDto { @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - - @ToString.Exclude - @Schema(example = "username") - private String username; - - @ToString.Exclude - @JsonIgnore - private String password; - - @ToString.Exclude - @Schema(example = "air_quality") - private String database; - } 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 ba80f473b8..e456908ed6 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 @@ -1,6 +1,8 @@ package at.tuwien.api.database.table; import at.tuwien.api.CacheableDto; +import at.tuwien.api.container.ContainerDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.identifier.IdentifierDto; @@ -105,6 +107,8 @@ public class TableDto extends CacheableDto { @NotNull private List<ColumnDto> columns; + private DatabaseDto database; + @NotNull private ConstraintsDto constraints; @@ -114,28 +118,4 @@ public class TableDto extends CacheableDto { @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - - @ToString.Exclude - @Schema(example = "username") - private String username; - - @ToString.Exclude - @JsonIgnore - private String password; - - @ToString.Exclude - @Schema(example = "air_quality") - private String database; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java index 26192f460f..e7367e2fb4 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -1,7 +1,6 @@ package at.tuwien.api.user; import at.tuwien.api.CacheableDto; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; @@ -28,6 +27,15 @@ public class UserDto extends CacheableDto { @Schema(example = "Josiah Carberry") private String name; + @NotNull + @Schema(example = "username") + private String username; + + @NotNull + @ToString.Exclude + @Schema(example = "p4ssw0rd") + private String password; + @JsonProperty("qualified_name") @Schema(example = "Josiah Carberry — @jcarberry") private String qualifiedName; @@ -49,28 +57,4 @@ public class UserDto extends CacheableDto { @Schema(example = "2025-01-23T12:09:01") private Instant lastRetrieved; - @ToString.Exclude - @Schema(example = "mariadb") - private String jdbcMethod; - - @ToString.Exclude - @Schema(example = "data-db") - private String host; - - @ToString.Exclude - @Schema(example = "3306") - private Integer port; - - @ToString.Exclude - @Schema(example = "username") - private String username; - - @ToString.Exclude - @JsonIgnore - private String password; - - @ToString.Exclude - @Schema(example = "air_quality") - private String database; - } 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 75f589e4c5..cd0b90f9f6 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 @@ -2,8 +2,8 @@ package at.tuwien.mapper; import at.tuwien.api.auth.SignupRequestDto; 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.container.image.DataTypeDto; import at.tuwien.api.container.image.ImageBriefDto; import at.tuwien.api.container.image.ImageCreateDto; @@ -833,9 +833,6 @@ public interface MetadataMapper { .trim(); } - @Mappings({ - @Mapping(target = "database", ignore = true) - }) ViewDto viewToViewDto(View data); @Mappings({ diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java index 4779a6428e..7ec1471f4d 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java @@ -1,10 +1,8 @@ package at.tuwien.endpoints; +import at.tuwien.api.container.ContainerDto; import at.tuwien.api.user.UserDetailsDto; -import at.tuwien.exception.UserNotFoundException; -import at.tuwien.service.UserService; import org.springframework.security.core.Authentication; -import org.springframework.security.core.userdetails.User; import java.security.Principal; import java.util.UUID; @@ -45,4 +43,11 @@ public abstract class AbstractEndpoint { throw new IllegalArgumentException("Unknown principal instance: " + authentication.getPrincipal().getClass()); } + public void removeInternalData(ContainerDto container) { + container.setPassword(null); + container.setUsername(null); + container.setHost(null); + container.setPort(null); + } + } 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 194f79d255..44d3c10c74 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 @@ -549,10 +549,9 @@ public class DatabaseEndpoint extends AbstractEndpoint { if (isSystem(principal)) { headers.set("X-Username", database.getContainer().getPrivilegedUsername()); headers.set("X-Password", database.getContainer().getPrivilegedPassword()); - headers.set("X-Host", database.getContainer().getHost()); - headers.set("X-Port", "" + database.getContainer().getPort()); - headers.set("X-Type", database.getContainer().getImage().getJdbcMethod()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port"); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + } else { + removeInternalData(dto.getContainer()); } return ResponseEntity.status(HttpStatus.OK) .headers(headers) 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 39d7f61460..61ba0d53e7 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 @@ -358,9 +358,9 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @Valid @RequestBody TableCreateDto data, - @NotNull Principal principal) throws NotAllowedException, MalformedException, + public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @Valid @RequestBody TableCreateDto data, + @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, TableNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException, OntologyNotFoundException, SemanticEntityNotFoundException { @@ -370,7 +370,7 @@ public class TableEndpoint extends AbstractEndpoint { endpointValidator.validateOnlyAccess(database, principal, true); endpointValidator.validateColumnCreateConstraints(data); return ResponseEntity.status(HttpStatus.CREATED) - .body(metadataMapper.tableToTableDto( + .body(metadataMapper.tableToTableBriefDto( tableService.createTable(database, data, principal))); } @@ -413,10 +413,10 @@ public class TableEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("tableId") Long tableId, - @NotNull @Valid @RequestBody TableUpdateDto data, - @NotNull Principal principal) throws NotAllowedException, + public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @PathVariable("tableId") Long tableId, + @NotNull @Valid @RequestBody TableUpdateDto data, + @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, SearchServiceException, SearchServiceConnectionException { log.debug("endpoint update table, databaseId={}, data.is_public={}, data.is_schema_public={}, principal.name={}", @@ -428,7 +428,7 @@ public class TableEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to update table: not owner"); } return ResponseEntity.accepted() - .body(metadataMapper.tableToTableDto( + .body(metadataMapper.tableToTableBriefDto( tableService.updateTable(table, data))); } @@ -443,11 +443,6 @@ public class TableEndpoint extends AbstractEndpoint { description = "Find table successfully", headers = {@Header(name = "X-Username", description = "The authentication username", schema = @Schema(implementation = String.class)), @Header(name = "X-Password", description = "The authentication password", schema = @Schema(implementation = String.class)), - @Header(name = "X-Host", description = "The database hostname", schema = @Schema(implementation = String.class)), - @Header(name = "X-Port", description = "The database port number", schema = @Schema(implementation = Integer.class)), - @Header(name = "X-Type", description = "The JDBC connection type", schema = @Schema(implementation = String.class)), - @Header(name = "X-Database", description = "The database internal name", schema = @Schema(implementation = String.class)), - @Header(name = "X-Table", description = "The table internal name", schema = @Schema(implementation = String.class)), @Header(name = "Access-Control-Expose-Headers", description = "Expose custom headers", schema = @Schema(implementation = String.class))}, content = {@Content( mediaType = "application/json", @@ -500,20 +495,18 @@ public class TableEndpoint extends AbstractEndpoint { table.setColumns(List.of()); table.setConstraints(null); } + final TableDto dto = metadataMapper.tableToTableDto(table); final HttpHeaders headers = new HttpHeaders(); if (isSystem(principal)) { headers.set("X-Username", table.getDatabase().getContainer().getPrivilegedUsername()); headers.set("X-Password", table.getDatabase().getContainer().getPrivilegedPassword()); - headers.set("X-Host", table.getDatabase().getContainer().getHost()); - headers.set("X-Port", "" + table.getDatabase().getContainer().getPort()); - headers.set("X-Type", table.getDatabase().getContainer().getImage().getJdbcMethod()); - headers.set("X-Database", table.getDatabase().getInternalName()); - headers.set("X-Table", table.getInternalName()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-Table"); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + } else { + removeInternalData(dto.getDatabase().getContainer()); } return ResponseEntity.ok() .headers(headers) - .body(metadataMapper.tableToTableDto(table)); + .body(dto); } @DeleteMapping("/{tableId}") diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index 5a349ff378..da979b34f1 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -139,14 +139,14 @@ public class UserEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<UserDto> create(@NotNull @Valid @RequestBody SignupRequestDto data) + public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody SignupRequestDto data) throws UserExistsException, EmailExistsException, AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { log.debug("endpoint create user, data.username={}", data.getUsername()); userService.validateUsernameNotExists(data.getUsername()); userService.validateEmailNotExists(data.getEmail()); return ResponseEntity.status(HttpStatus.CREATED) - .body(userMapper.userToUserDto( + .body(userMapper.userToUserBriefDto( userService.create(data, authenticationService.create(data).getAttributes().getLdapId()[0]))); } @@ -328,7 +328,7 @@ public class UserEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<UserDto> modify(@NotNull @PathVariable("userId") UUID userId, + public ResponseEntity<UserBriefDto> modify(@NotNull @PathVariable("userId") UUID userId, @NotNull @Valid @RequestBody UserUpdateDto data, @NotNull Principal principal) throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException { @@ -339,7 +339,7 @@ public class UserEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to modify user: not current user " + user.getId()); } return ResponseEntity.accepted() - .body(userMapper.userToUserDto( + .body(userMapper.userToUserBriefDto( userService.modify(user, data))); } 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 8a4a087da2..abfbdb5d36 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 @@ -202,9 +202,13 @@ public class ViewEndpoint extends AbstractEndpoint { 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"); } + final ViewDto dto = metadataMapper.viewToViewDto(view); + if (!isSystem(principal)) { + removeInternalData(dto.getDatabase().getContainer()); + } return ResponseEntity.status(HttpStatus.OK) .headers(headers) - .body(metadataMapper.viewToViewDto(view)); + .body(dto); } @DeleteMapping("/{viewId}") @@ -248,9 +252,9 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<?> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, - @NotNull Principal principal) throws NotAllowedException, DataServiceException, + public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @PathVariable("viewId") Long viewId, + @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { log.debug("endpoint delete view, databaseId={}, viewId={}", databaseId, viewId); @@ -301,10 +305,10 @@ public class ViewEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<ViewDto> update(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, - @NotNull @Valid @RequestBody ViewUpdateDto data, - @NotNull Principal principal) throws NotAllowedException, + public ResponseEntity<ViewBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @PathVariable("viewId") Long viewId, + @NotNull @Valid @RequestBody ViewUpdateDto data, + @NotNull Principal principal) throws NotAllowedException, DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { log.debug("endpoint update view, databaseId={}, viewId={}", databaseId, viewId); @@ -315,7 +319,7 @@ public class ViewEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to update view: not the database- or view owner"); } return ResponseEntity.accepted() - .body(metadataMapper.viewToViewDto( + .body(metadataMapper.viewToViewBriefDto( viewService.update(database, view, data))); } 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 ef06d7f37f..9cc0c4cc8b 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 @@ -1040,7 +1040,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .build(); /* test */ - final ResponseEntity<TableDto> response = generic_update(request, USER_1_PRINCIPAL); + final ResponseEntity<TableBriefDto> response = generic_update(request, USER_1_PRINCIPAL); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -1147,7 +1147,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { return tableEndpoint.list(databaseId, principal); } - protected ResponseEntity<TableDto> generic_create(Long databaseId, Database database, TableCreateDto data, + protected ResponseEntity<TableBriefDto> generic_create(Long databaseId, Database database, TableCreateDto data, Principal principal, User user, DatabaseAccess access) throws MalformedException, NotAllowedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, TableNotFoundException, @@ -1273,7 +1273,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { return tableEndpoint.updateColumn(databaseId, tableId, columnId, data, principal); } - protected ResponseEntity<TableDto> generic_update(TableUpdateDto data, Principal caller) + protected ResponseEntity<TableBriefDto> generic_update(TableUpdateDto data, Principal caller) throws TableNotFoundException, SearchServiceException, NotAllowedException, DataServiceException, DatabaseNotFoundException, SearchServiceConnectionException, DataServiceConnectionException { 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 be0ea28c49..8b653f9356 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 @@ -458,9 +458,9 @@ public class UserEndpointUnitTest extends AbstractUnitTest { .thenReturn(userDto); /* test */ - final ResponseEntity<UserDto> response = userEndpoint.create(data); + final ResponseEntity<UserBriefDto> response = userEndpoint.create(data); assertEquals(HttpStatus.CREATED, response.getStatusCode()); - final UserDto body = response.getBody(); + final UserBriefDto body = response.getBody(); assertNotNull(body); } @@ -496,9 +496,9 @@ public class UserEndpointUnitTest extends AbstractUnitTest { .thenReturn(user); /* test */ - final ResponseEntity<UserDto> response = userEndpoint.modify(userId, data, principal); + final ResponseEntity<UserBriefDto> response = userEndpoint.modify(userId, data, principal); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); - final UserDto body = response.getBody(); + final UserBriefDto body = response.getBody(); assertNotNull(body); } 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 2815dd6c05..4cd9296425 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 @@ -571,7 +571,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { .thenReturn(VIEW_1); /* test */ - final ResponseEntity<ViewDto> response = viewEndpoint.update(DATABASE_1_ID, VIEW_1_ID, request, principal); + final ResponseEntity<ViewBriefDto> response = viewEndpoint.update(DATABASE_1_ID, VIEW_1_ID, request, principal); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertNotNull(response.getBody()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java index 725d956f57..dc77ff263b 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java @@ -132,7 +132,7 @@ public class ImageServiceUnitTest extends AbstractUnitTest { when(imageRepository.save(any())) .thenReturn(IMAGE_1); when(mockImageService.update(IMAGE_1, request)) - .thenReturn(CONTAINER_1_IMAGE); + .thenReturn(IMAGE_1); /* test */ final ContainerImage response = mockImageService.update(IMAGE_1, request); @@ -153,7 +153,7 @@ public class ImageServiceUnitTest extends AbstractUnitTest { when(imageRepository.save(any())) .thenReturn(IMAGE_1); when(mockImageService.update(IMAGE_1, request)) - .thenReturn(CONTAINER_1_IMAGE); + .thenReturn(IMAGE_1); /* test */ final ContainerImage response = mockImageService.update(IMAGE_1, request); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java index 232b4cd280..9d5ab6b3d7 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java @@ -42,6 +42,8 @@ public abstract class AbstractUnitTest extends BaseTest { TABLE_1.setColumns(new LinkedList<>(TABLE_1_COLUMNS)); TABLE_1.setConstraints(TABLE_1_CONSTRAINTS); TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); + TABLE_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_1_DTO.setIdentifiers(VIEW_1_DTO_IDENTIFIERS); DATABASE_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4))); IDENTIFIER_1.setDatabase(DATABASE_1); @@ -76,10 +78,13 @@ public abstract class AbstractUnitTest extends BaseTest { VIEW_1.setDatabase(DATABASE_1); VIEW_1.setColumns(new LinkedList<>(VIEW_1_COLUMNS)); VIEW_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_3))); + VIEW_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_2.setDatabase(DATABASE_1); VIEW_2.setColumns(new LinkedList<>(VIEW_2_COLUMNS)); + VIEW_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_3.setDatabase(DATABASE_1); VIEW_3.setColumns(new LinkedList<>(VIEW_3_COLUMNS)); + VIEW_3_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); IDENTIFIER_1.setDatabase(DATABASE_1); IDENTIFIER_2.setDatabase(DATABASE_1); IDENTIFIER_3.setDatabase(DATABASE_1); 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 d732a35843..8599983687 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 @@ -133,7 +133,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 4 + * Database 4 (Public Data, Public Schema, User 4) -> Container 2 * <li>Table 9</li> * <li>Identifier 7</li> * <li>Query 7</li> @@ -548,17 +548,6 @@ public abstract class BaseTest { .build()) .build(); - public final static UserDto USER_1_PRIVILEGED_DTO = UserDto.builder() - .id(USER_1_ID) - .username(USER_1_USERNAME) - .password(USER_1_PASSWORD) - .attributes(USER_1_ATTRIBUTES_DTO) - .firstname(USER_1_FIRSTNAME) - .lastname(USER_1_LASTNAME) - .qualifiedName(USER_1_QUALIFIED_NAME) - .lastRetrieved(Instant.now()) - .build(); - public final static User USER_1 = User.builder() .id(USER_1_ID) .username(USER_1_USERNAME) @@ -736,17 +725,6 @@ public abstract class BaseTest { .tags(new String[]{}) .build(); - public final static UserDto USER_2_PRIVILEGED_DTO = UserDto.builder() - .id(USER_2_ID) - .username(USER_2_USERNAME) - .password(USER_2_PASSWORD) - .attributes(USER_2_ATTRIBUTES_DTO) - .firstname(USER_2_FIRSTNAME) - .lastname(USER_2_LASTNAME) - .qualifiedName(USER_2_QUALIFIED_NAME) - .lastRetrieved(Instant.now()) - .build(); - public final static Principal USER_2_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_2_DETAILS, USER_2_PASSWORD, USER_2_DETAILS.getAuthorities()); @@ -838,17 +816,6 @@ public abstract class BaseTest { .tags(new String[]{}) .build(); - public final static UserDto USER_3_PRIVILEGED_DTO = UserDto.builder() - .id(USER_3_ID) - .username(USER_3_USERNAME) - .password(USER_3_PASSWORD) - .attributes(USER_3_ATTRIBUTES_DTO) - .firstname(USER_3_FIRSTNAME) - .lastname(USER_3_LASTNAME) - .qualifiedName(USER_3_QUALIFIED_NAME) - .lastRetrieved(Instant.now()) - .build(); - public final static UUID USER_4_ID = UUID.fromString("791d58c5-bfab-4520-b4fc-b44d4ab9feb0"); public final static UUID USER_4_LDAP_ID = UUID.fromString("791d58c5-bfab-4520-b4fc-b44d4ab9feb0"); public final static String USER_4_USERNAME = "junit4"; @@ -920,17 +887,6 @@ public abstract class BaseTest { public final static Principal USER_4_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_4_DETAILS, USER_4_PASSWORD, USER_4_DETAILS.getAuthorities()); - public final static UserDto USER_4_PRIVILEGED_DTO = UserDto.builder() - .id(USER_4_ID) - .username(USER_4_USERNAME) - .password(USER_4_PASSWORD) - .attributes(USER_4_ATTRIBUTES_DTO) - .firstname(USER_4_FIRSTNAME) - .lastname(USER_4_LASTNAME) - .qualifiedName(USER_4_QUALIFIED_NAME) - .lastRetrieved(Instant.now()) - .build(); - public final static UUID USER_5_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630"); public final static UUID USER_5_LDAP_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630"); public final static String USER_5_USERNAME = "nobody"; @@ -968,17 +924,6 @@ public abstract class BaseTest { .attributes(USER_5_ATTRIBUTES_DTO) .build(); - public final static UserDto USER_5_PRIVILEGED_DTO = UserDto.builder() - .id(USER_5_ID) - .username(USER_5_USERNAME) - .firstname(USER_5_FIRSTNAME) - .lastname(USER_5_LASTNAME) - .qualifiedName(USER_5_QUALIFIED_NAME) - .password(USER_5_PASSWORD) - .attributes(USER_5_ATTRIBUTES_DTO) - .lastRetrieved(Instant.now()) - .build(); - public final static UserBriefDto USER_5_BRIEF_DTO = UserBriefDto.builder() .id(USER_5_ID) .username(USER_5_USERNAME) @@ -1132,8 +1077,6 @@ public abstract class BaseTest { .build())); public final static Long CONTAINER_1_ID = 1L; - public final static ContainerImage CONTAINER_1_IMAGE = IMAGE_1; - public final static ImageDto CONTAINER_1_IMAGE_DTO = IMAGE_1_DTO; public final static String CONTAINER_1_NAME = "u01"; public final static String CONTAINER_1_INTERNALNAME = "dbrepo-userdb-u01"; public final static String CONTAINER_1_UI_HOST = "localhost"; @@ -1152,7 +1095,7 @@ public abstract class BaseTest { .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) - .image(CONTAINER_1_IMAGE) + .image(IMAGE_1) .created(CONTAINER_1_CREATED) .host(CONTAINER_1_HOST) .port(CONTAINER_1_PORT) @@ -1168,7 +1111,7 @@ public abstract class BaseTest { .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) - .image(CONTAINER_1_IMAGE_DTO) + .image(IMAGE_1_DTO) .host(CONTAINER_1_HOST) .port(CONTAINER_1_PORT) .build(); @@ -1186,12 +1129,12 @@ public abstract class BaseTest { .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) - .image(CONTAINER_1_IMAGE_DTO) + .image(IMAGE_1_DTO) .host(CONTAINER_1_HOST) .port(CONTAINER_1_PORT) + .lastRetrieved(Instant.now()) .username(CONTAINER_1_PRIVILEGED_USERNAME) .password(CONTAINER_1_PRIVILEGED_PASSWORD) - .lastRetrieved(Instant.now()) .build(); public final static Long CONTAINER_2_ID = 2L; @@ -1245,9 +1188,9 @@ public abstract class BaseTest { .image(CONTAINER_2_IMAGE_DTO) .host(CONTAINER_2_HOST) .port(CONTAINER_2_PORT) + .lastRetrieved(Instant.now()) .username(CONTAINER_2_PRIVILEGED_USERNAME) .password(CONTAINER_2_PRIVILEGED_PASSWORD) - .lastRetrieved(Instant.now()) .build(); public final static Long CONTAINER_3_ID = 3L; @@ -1390,6 +1333,21 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) /* IDENTIFIER_6_DTO */ .build(); + public final static DatabaseDto DATABASE_3_PRIVILEGED_DTO = DatabaseDto.builder() + .id(DATABASE_3_ID) + .isPublic(DATABASE_3_PUBLIC) + .isSchemaPublic(DATABASE_3_SCHEMA_PUBLIC) + .name(DATABASE_3_NAME) + .internalName(DATABASE_3_INTERNALNAME) + .owner(USER_3_BRIEF_DTO) + .container(CONTAINER_1_PRIVILEGED_DTO) + .exchangeName(DATABASE_3_EXCHANGE) + .tables(new LinkedList<>()) /* TABLE_8_DTO */ + .views(new LinkedList<>()) /* VIEW_5_DTO */ + .identifiers(new LinkedList<>()) /* IDENTIFIER_6_DTO */ + .lastRetrieved(Instant.now()) + .build(); + public final static DatabaseBriefDto DATABASE_3_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_3_ID) .isPublic(DATABASE_3_PUBLIC) @@ -1434,6 +1392,7 @@ public abstract class BaseTest { .isPublic(DATABASE_4_PUBLIC) .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) .name(DATABASE_4_NAME) + .container(CONTAINER_2_DTO) .description(DATABASE_4_DESCRIPTION) .internalName(DATABASE_4_INTERNALNAME) .exchangeName(DATABASE_4_EXCHANGE) @@ -1443,6 +1402,22 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) /* IDENTIFIER_7_DTO */ .build(); + public final static DatabaseDto DATABASE_4_PRIVILEGED_DTO = DatabaseDto.builder() + .id(DATABASE_4_ID) + .isPublic(DATABASE_4_PUBLIC) + .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) + .name(DATABASE_4_NAME) + .container(CONTAINER_2_PRIVILEGED_DTO) + .description(DATABASE_4_DESCRIPTION) + .internalName(DATABASE_4_INTERNALNAME) + .exchangeName(DATABASE_4_EXCHANGE) + .owner(USER_4_BRIEF_DTO) + .tables(new LinkedList<>()) /* TABLE_9_DTO */ + .views(new LinkedList<>()) + .identifiers(new LinkedList<>()) /* IDENTIFIER_7_DTO */ + .lastRetrieved(Instant.now()) + .build(); + public final static TableCreateDto TABLE_0_CREATE_DTO = TableCreateDto.builder() .name("full") .description("full example") @@ -1650,6 +1625,7 @@ public abstract class BaseTest { .dataLength(TABLE_1_DATA_LENGTH) .maxDataLength(TABLE_1_MAX_DATA_LENGTH) .lastRetrieved(Instant.now()) + .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .build(); public final static Table TABLE_1 = Table.builder() @@ -1863,6 +1839,7 @@ public abstract class BaseTest { .dataLength(TABLE_2_DATA_LENGTH) .maxDataLength(TABLE_2_MAX_DATA_LENGTH) .lastRetrieved(Instant.now()) + .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .build(); public final static TableDto TABLE_2_DTO = TableDto.builder() @@ -5169,6 +5146,7 @@ public abstract class BaseTest { .queryHash(VIEW_1_QUERY_HASH) .columns(VIEW_1_COLUMNS_DTO) .lastRetrieved(Instant.now()) + .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .build(); public final static ViewBriefDto VIEW_1_BRIEF_DTO = ViewBriefDto.builder() @@ -5331,6 +5309,7 @@ public abstract class BaseTest { .queryHash(VIEW_2_QUERY_HASH) .columns(VIEW_2_COLUMNS_DTO) .lastRetrieved(Instant.now()) + .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .build(); public final static ViewBriefDto VIEW_2_BRIEF_DTO = ViewBriefDto.builder() @@ -5431,6 +5410,7 @@ public abstract class BaseTest { .queryHash(VIEW_3_QUERY_HASH) .columns(VIEW_3_COLUMNS_DTO) .lastRetrieved(Instant.now()) + .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .build(); public final static List<ViewColumn> VIEW_3_COLUMNS = List.of( @@ -7564,6 +7544,20 @@ public abstract class BaseTest { .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) .build(); + public final static DatabaseDto DATABASE_1_PRIVILEGED_DTO = DatabaseDto.builder() + .id(DATABASE_1_ID) + .isPublic(DATABASE_1_PUBLIC) + .isSchemaPublic(DATABASE_1_SCHEMA_PUBLIC) + .name(DATABASE_1_NAME) + .container(CONTAINER_1_PRIVILEGED_DTO) + .internalName(DATABASE_1_INTERNALNAME) + .exchangeName(DATABASE_1_EXCHANGE) + .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))) + .tables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))) + .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) + .lastRetrieved(Instant.now()) + .build(); + public final static DatabaseBriefDto DATABASE_1_BRIEF_DTO = DatabaseBriefDto.builder() .id(DATABASE_1_ID) .isPublic(DATABASE_1_PUBLIC) @@ -7705,6 +7699,21 @@ public abstract class BaseTest { .build(); public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() + .id(DATABASE_2_ID) + .isPublic(DATABASE_2_PUBLIC) + .isSchemaPublic(DATABASE_2_SCHEMA_PUBLIC) + .name(DATABASE_2_NAME) + .container(CONTAINER_1_DTO) + .internalName(DATABASE_2_INTERNALNAME) + .exchangeName(DATABASE_2_EXCHANGE) + .identifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO))) + .tables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))) + .views(new LinkedList<>(List.of(VIEW_4_DTO))) + .owner(USER_2_BRIEF_DTO) + .lastRetrieved(Instant.now()) + .build(); + + public final static DatabaseDto DATABASE_2_PRIVILEGED_DTO = DatabaseDto.builder() .id(DATABASE_2_ID) .isPublic(DATABASE_2_PUBLIC) .isSchemaPublic(DATABASE_2_SCHEMA_PUBLIC) diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 1f9f778a84..78861ffd04 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -252,7 +252,7 @@ class RestClient: f'201 (CREATED): {response.text}') def update_user(self, user_id: str, theme: str, language: str, firstname: str = None, lastname: str = None, - affiliation: str = None, orcid: str = None) -> User: + affiliation: str = None, orcid: str = None) -> UserBrief: """ Updates a user with given user id. @@ -277,7 +277,7 @@ class RestClient: lastname=lastname, affiliation=affiliation, orcid=orcid)) if response.status_code == 202: body = response.json() - return User.model_validate(body) + return UserBrief.model_validate(body) if response.status_code == 400: raise MalformedError(f'Failed to update user: {response.text}') if response.status_code == 403: @@ -287,15 +287,13 @@ class RestClient: raise ResponseCodeError(f'Failed to update user: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def update_user_password(self, user_id: str, password: str) -> User: + def update_user_password(self, user_id: str, password: str) -> None: """ Updates the password of a user with given user id. :param user_id: The user id of the user that should be updated. :param password: The updated user password. - :returns: The user, if successful. - :raises MalformedError: If the payload was rejected by the service. :raises ForbiddenError: If something went wrong with the authorization. :raises NotExistsError: If the user does not exist. @@ -306,8 +304,7 @@ class RestClient: url = f'/api/user/{user_id}/password' response = self._wrapper(method="put", url=url, force_auth=True, payload=UpdateUserPassword(password=password)) if response.status_code == 202: - body = response.json() - return User.model_validate(body) + return None if response.status_code == 400: raise MalformedError(f'Failed to update user password: {response.text}') if response.status_code == 403: @@ -617,7 +614,7 @@ class RestClient: def create_table(self, database_id: int, name: str, is_public: bool, is_schema_public: bool, columns: List[CreateTableColumn], constraints: CreateTableConstraints, - description: str = None) -> Table: + description: str = None) -> TableBrief: """ Updates the database owner of a database with given database id. @@ -645,7 +642,7 @@ class RestClient: description=description, columns=columns, constraints=constraints)) if response.status_code == 201: body = response.json() - return Table.model_validate(body) + return TableBrief.model_validate(body) if response.status_code == 400: raise MalformedError(f'Failed to create table: {response.text}') if response.status_code == 403: @@ -871,7 +868,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) -> View: + def update_view(self, database_id: int, view_id: int, is_public: bool) -> ViewBrief: """ Get a view of a database with given database id and view id. @@ -889,7 +886,7 @@ class RestClient: response = self._wrapper(method="put", url=url, payload=UpdateView(is_public=is_public)) if response.status_code == 202: body = response.json() - return View.model_validate(body) + return ViewBrief.model_validate(body) if response.status_code == 403: raise ForbiddenError(f'Failed to update view: not allowed') if response.status_code == 404: -- GitLab From 1b76873fad8e2c3a78c90f9ef53625a246b7afde Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 10:13:57 +0100 Subject: [PATCH 15/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../java/at/tuwien/api/database/ViewDto.java | 2 + .../tuwien/api/database/table/TableDto.java | 2 + .../java/at/tuwien/mapper/MetadataMapper.java | 6 +++ ...nticationPrivilegedIntegrationMvcTest.java | 35 ++----------- lib/python/tests/test_unit_table.py | 49 ++++--------------- lib/python/tests/test_unit_user.py | 10 ++-- 6 files changed, 27 insertions(+), 77 deletions(-) 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 5f9373bb12..82a7081e16 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 @@ -65,6 +65,8 @@ public class ViewDto extends CacheableDto { @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") private String queryHash; + @ToString.Exclude + @EqualsAndHashCode.Exclude private DatabaseDto database; @NotNull 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 e456908ed6..1021d167ca 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 @@ -107,6 +107,8 @@ public class TableDto extends CacheableDto { @NotNull private List<ColumnDto> columns; + @ToString.Exclude + @EqualsAndHashCode.Exclude private DatabaseDto database; @NotNull 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 cd0b90f9f6..bd6b952c17 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 @@ -536,6 +536,8 @@ public interface MetadataMapper { } default TableDto tableToTableDto(Table data) { + data.getDatabase() + .setTables(null); final TableDto table = TableDto.builder() .id(data.getId()) .name(data.getName()) @@ -548,6 +550,7 @@ public interface MetadataMapper { .description(data.getDescription()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) + .database(databaseToDatabaseDto(data.getDatabase())) .constraints(constraintsToConstraintsDto(data.getConstraints())) .build(); if (data.getIdentifiers() != null) { @@ -833,6 +836,9 @@ public interface MetadataMapper { .trim(); } + @Mappings({ + @Mapping(target = "database.views", ignore = true) + }) ViewDto viewToViewDto(View data); @Mappings({ 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 eec5aebf4b..fa0b6f64f7 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 @@ -10,7 +10,6 @@ import at.tuwien.repository.DatabaseRepository; import at.tuwien.repository.LicenseRepository; import at.tuwien.repository.UserRepository; import at.tuwien.service.AuthenticationService; -import at.tuwien.service.UserService; import at.tuwien.test.AbstractUnitTest; import at.tuwien.utils.KeycloakUtils; import dasniko.testcontainers.keycloak.KeycloakContainer; @@ -31,7 +30,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.util.List; -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; 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.header; @@ -120,9 +119,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("X-Host", CONTAINER_1_HOST)) - .andExpect(header().string("X-Port", "" + CONTAINER_1_PORT)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port")) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) .andExpect(status().isOk()); } @@ -138,9 +135,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("X-Host", CONTAINER_1_HOST)) - .andExpect(header().string("X-Port", "" + CONTAINER_1_PORT)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port")) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) .andExpect(status().isOk()); } @@ -157,12 +152,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("X-Host", CONTAINER_1_HOST)) - .andExpect(header().string("X-Port", "" + CONTAINER_1_PORT)) - .andExpect(header().string("X-Type", IMAGE_1_JDBC)) - .andExpect(header().string("X-Database", DATABASE_1_INTERNALNAME)) - .andExpect(header().string("X-Table", TABLE_1_INTERNAL_NAME)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-Table")) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) .andExpect(status().isOk()); } @@ -177,11 +167,6 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) - .andExpect(header().doesNotExist("X-Host")) - .andExpect(header().doesNotExist("X-Port")) - .andExpect(header().doesNotExist("X-Type")) - .andExpect(header().doesNotExist("X-Database")) - .andExpect(header().doesNotExist("X-Table")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } @@ -197,12 +182,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("X-Host", CONTAINER_1_HOST)) - .andExpect(header().string("X-Port", "" + CONTAINER_1_PORT)) - .andExpect(header().string("X-Type", IMAGE_1_JDBC)) - .andExpect(header().string("X-Database", DATABASE_1_INTERNALNAME)) - .andExpect(header().string("X-Table", TABLE_1_INTERNAL_NAME)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-Table")) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) .andExpect(status().isOk()); } @@ -217,11 +197,6 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().doesNotExist("X-Username")) .andExpect(header().doesNotExist("X-Password")) - .andExpect(header().doesNotExist("X-Host")) - .andExpect(header().doesNotExist("X-Port")) - .andExpect(header().doesNotExist("X-Type")) - .andExpect(header().doesNotExist("X-Database")) - .andExpect(header().doesNotExist("X-View")) .andExpect(header().doesNotExist("Access-Control-Expose-Headers")) .andExpect(status().isOk()); } diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py index 36391e1fdd..eccf8c2a59 100644 --- a/lib/python/tests/test_unit_table.py +++ b/lib/python/tests/test_unit_table.py @@ -14,46 +14,15 @@ from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError class TableUnitTest(unittest.TestCase): def test_create_table_succeeds(self): - exp = Table(id=2, - name="Test", - description="Test Table", - database_id=1, - internal_name="test", - owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - is_versioned=True, - queue_name='test', - routing_key='dbrepo.test_database_1234.test', - is_public=True, - is_schema_public=True, - 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, - ord=0, - name="ID", - database_id=1, - table_id=2, - internal_name="id", - auto_generated=True, - is_primary_key=True, - type=ColumnType.BIGINT, - is_public=True, - is_null_allowed=False)]) + exp = TableBrief(id=2, + database_id=1, + name="Test", + description="Test Table", + internal_name="test", + owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16', + is_versioned=True, + is_public=True, + is_schema_public=True) with requests_mock.Mocker() as mock: # mock mock.post('/api/database/1/table', json=exp.model_dump(), status_code=201) diff --git a/lib/python/tests/test_unit_user.py b/lib/python/tests/test_unit_user.py index 0d1e720885..0e846b1b42 100644 --- a/lib/python/tests/test_unit_user.py +++ b/lib/python/tests/test_unit_user.py @@ -125,8 +125,8 @@ class UserUnitTest(unittest.TestCase): def test_update_user_succeeds(self): with requests_mock.Mocker() as mock: - exp = User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', given_name='Martin', - attributes=UserAttributes(theme='dark')) + exp = UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', given_name='Martin', + attributes=UserAttributes(theme='dark')) # mock mock.put('http://localhost/api/user/8638c043-5145-4be8-a3e4-4b79991b0a16', status_code=202, json=exp.model_dump()) @@ -173,16 +173,12 @@ class UserUnitTest(unittest.TestCase): def test_update_user_password_succeeds(self): with requests_mock.Mocker() as mock: - exp = User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', given_name='Martin', - attributes=UserAttributes(theme='dark')) # mock - mock.put('http://localhost/api/user/8638c043-5145-4be8-a3e4-4b79991b0a16/password', status_code=202, - json=exp.model_dump()) + mock.put('http://localhost/api/user/8638c043-5145-4be8-a3e4-4b79991b0a16/password', status_code=202) # test client = RestClient(username="a", password="b") response = client.update_user_password(user_id='8638c043-5145-4be8-a3e4-4b79991b0a16', password='s3cr3t1n0rm4t10n') - self.assertEqual(exp, response) def test_update_user_password_not_allowed_fails(self): with requests_mock.Mocker() as mock: -- GitLab From 53a9f3ad10fad93f1963d7b323dff8804fb64af1 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 14:41:31 +0100 Subject: [PATCH 16/52] Fixed some DTOs Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/.openapi/api-data.yaml | 352 +-- .docs/.openapi/api-metadata.yaml | 1913 +++++++++-------- .docs/.openapi/api.base.yaml | 2 +- .docs/.openapi/swagger-ui.html | 6 +- .../at/tuwien/api/auth/CreateUserDto.java | 15 +- .../at/tuwien/api/auth/SignupRequestDto.java | 35 - ...eCreateDto.java => CreateDatabaseDto.java} | 2 +- ...{ViewCreateDto.java => CreateViewDto.java} | 2 +- ...ableCreateDto.java => CreateTableDto.java} | 10 +- ...eateDto.java => CreateTableColumnDto.java} | 2 +- ...to.java => CreateTableConstraintsDto.java} | 6 +- ...reateDto.java => CreateForeignKeyDto.java} | 2 +- .../table/internal/TableCreateDto.java | 8 +- ...reateDto.java => CreateIdentifierDto.java} | 12 +- .../api/identifier/IdentifierSaveDto.java | 10 +- ...Dto.java => SaveIdentifierCreatorDto.java} | 2 +- ...java => SaveIdentifierDescriptionDto.java} | 2 +- ...eDto.java => SaveIdentifierFunderDto.java} | 2 +- ...leDto.java => SaveIdentifierTitleDto.java} | 2 +- ...Dto.java => SaveRelatedIdentifierDto.java} | 2 +- .../java/at/tuwien/mapper/MetadataMapper.java | 26 +- .../at/tuwien/endpoints/DatabaseEndpoint.java | 2 +- .../tuwien/endpoints/IdentifierEndpoint.java | 2 +- .../at/tuwien/endpoints/TableEndpoint.java | 4 +- .../at/tuwien/endpoints/UserEndpoint.java | 6 +- .../at/tuwien/endpoints/ViewEndpoint.java | 4 +- .../tuwien/validation/EndpointValidator.java | 26 +- .../endpoints/DatabaseEndpointUnitTest.java | 10 +- .../endpoints/TableEndpointUnitTest.java | 68 +- .../endpoints/UserEndpointUnitTest.java | 10 +- .../endpoints/ViewEndpointUnitTest.java | 4 +- .../service/TableServicePersistenceTest.java | 14 +- .../tuwien/service/TableServiceUnitTest.java | 40 +- .../service/UserServicePersistenceTest.java | 6 +- .../tuwien/service/ViewServiceUnitTest.java | 4 +- .../validator/EndpointValidatorUnitTest.java | 16 +- .../at/tuwien/gateway/DataServiceGateway.java | 8 +- .../gateway/impl/DataServiceGatewayImpl.java | 6 +- .../tuwien/service/AuthenticationService.java | 4 +- .../at/tuwien/service/DatabaseService.java | 4 +- .../at/tuwien/service/IdentifierService.java | 4 +- .../java/at/tuwien/service/TableService.java | 4 +- .../java/at/tuwien/service/UserService.java | 4 +- .../java/at/tuwien/service/ViewService.java | 5 +- .../impl/AuthenticationServiceImpl.java | 4 +- .../impl/DataCiteIdentifierServiceImpl.java | 4 +- .../service/impl/DatabaseServiceImpl.java | 7 +- .../service/impl/IdentifierServiceImpl.java | 4 +- .../tuwien/service/impl/TableServiceImpl.java | 8 +- .../tuwien/service/impl/UserServiceImpl.java | 4 +- .../tuwien/service/impl/ViewServiceImpl.java | 4 +- .../main/java/at/tuwien/test/BaseTest.java | 239 +- lib/python/dbrepo/RestClient.py | 16 +- lib/python/dbrepo/api/dto.py | 16 +- lib/python/tests/test_dtos.py | 4 +- lib/python/tests/test_unit_identifier.py | 32 +- 56 files changed, 1490 insertions(+), 1520 deletions(-) delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/{DatabaseCreateDto.java => CreateDatabaseDto.java} (96%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/{ViewCreateDto.java => CreateViewDto.java} (96%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/{TableCreateDto.java => CreateTableDto.java} (77%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/{ColumnCreateDto.java => CreateTableColumnDto.java} (97%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/{ConstraintsCreateDto.java => CreateTableConstraintsDto.java} (77%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/{ForeignKeyCreateDto.java => CreateForeignKeyDto.java} (95%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{IdentifierCreateDto.java => CreateIdentifierDto.java} (84%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{CreatorSaveDto.java => SaveIdentifierCreatorDto.java} (97%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{IdentifierSaveDescriptionDto.java => SaveIdentifierDescriptionDto.java} (94%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{IdentifierFunderSaveDto.java => SaveIdentifierFunderDto.java} (96%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{IdentifierSaveTitleDto.java => SaveIdentifierTitleDto.java} (95%) rename dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/{RelatedIdentifierSaveDto.java => SaveRelatedIdentifierDto.java} (93%) diff --git a/.docs/.openapi/api-data.yaml b/.docs/.openapi/api-data.yaml index f61466dc6b..fad4c0fd74 100644 --- a/.docs/.openapi/api-data.yaml +++ b/.docs/.openapi/api-data.yaml @@ -74,32 +74,32 @@ paths: application/json: schema: type: string - "503": - description: Failed to establish connection with the metadata service + "400": + description: Request pagination is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find view in metadata database + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: View schema could not be mapped + "404": + description: Failed to find view in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination is malformed + "403": + description: Not allowed to retrieve view data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve view data + "409": + description: View schema could not be mapped content: application/json: schema: @@ -162,32 +162,32 @@ paths: application/json: schema: type: string - "503": - description: Failed to establish connection with the metadata service + "400": + description: Request pagination is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find view in metadata database + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: View schema could not be mapped + "404": + description: Failed to find view in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination is malformed + "403": + description: Not allowed to retrieve view data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve view data + "409": + description: View schema could not be mapped content: application/json: schema: @@ -237,8 +237,8 @@ paths: type: integer format: int64 responses: - "400": - description: Request pagination or table data select query is malformed + "403": + description: Not allowed to get table data content: application/json: schema: @@ -249,6 +249,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Get table data headers: @@ -264,14 +270,8 @@ paths: application/json: schema: type: string - "404": - description: Failed to find table in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to get table data + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -312,8 +312,8 @@ paths: $ref: "#/components/schemas/TupleUpdateDto" required: true responses: - "400": - description: Request pagination or table data select query is malformed + "403": + description: Update table data not allowed content: application/json: schema: @@ -324,20 +324,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Update table data not allowed + "202": + description: Updated table data + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table in metadata database + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Updated table data security: - basicAuth: [] - bearerAuth: [] @@ -374,8 +374,15 @@ paths: $ref: "#/components/schemas/TupleDto" required: true responses: - "400": - description: Request pagination or table data select query is malformed + "503": + description: Failed to establish connection with the metadata service or + storage service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Create table data not allowed content: application/json: schema: @@ -389,15 +396,8 @@ paths: $ref: "#/components/schemas/ApiErrorDto" "201": description: Created table data - "503": - description: Failed to establish connection with the metadata service or - storage service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Create table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -438,8 +438,8 @@ paths: $ref: "#/components/schemas/TupleDeleteDto" required: true responses: - "400": - description: Request pagination or table data select query is malformed + "403": + description: Delete table data not allowed content: application/json: schema: @@ -450,16 +450,16 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted table data "404": description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted table data - "403": - description: Delete table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -508,8 +508,8 @@ paths: type: integer format: int64 responses: - "400": - description: Request pagination or table data select query is malformed + "403": + description: Not allowed to get table data content: application/json: schema: @@ -520,6 +520,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Get table data headers: @@ -535,14 +541,8 @@ paths: application/json: schema: type: string - "404": - description: Failed to find table in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to get table data + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -586,14 +586,27 @@ paths: type: integer format: int64 responses: + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve subset data + "400": + description: Invalid pagination content: application/json: schema: @@ -619,19 +632,6 @@ paths: application/json: schema: type: string - "404": - description: Failed to find database in metadata database or query in query - store of the data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -670,14 +670,27 @@ paths: type: integer format: int64 responses: + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to retrieve subset data + "400": + description: Invalid pagination content: application/json: schema: @@ -703,19 +716,6 @@ paths: application/json: schema: type: string - "404": - description: Failed to find database in metadata database or query in query - store of the data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -752,8 +752,9 @@ paths: application/json: schema: $ref: "#/components/schemas/QueryDto" - "403": - description: Not allowed to persist subset + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -770,15 +771,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "403": + description: Not allowed to persist subset content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "400": + description: Malformed select query content: application/json: schema: @@ -823,26 +823,26 @@ paths: responses: "202": description: Imported dataset successfully - "503": - description: Failed to establish connection with the metadata service + "403": + description: Import table dataset not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table in metadata database + "400": + description: Dataset and/or query are malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Import table dataset not allowed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Dataset and/or query are malformed + "404": + description: Failed to find table in metadata database content: application/json: schema: @@ -874,29 +874,29 @@ paths: schema: type: boolean responses: - "200": - description: Found subsets + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/QueryDto" - "503": - description: Failed to communicate with database + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to find subsets content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "200": + description: Found subsets content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to find subsets + type: array + items: + $ref: "#/components/schemas/QueryDto" + "503": + description: Failed to communicate with database content: application/json: schema: @@ -945,32 +945,27 @@ paths: $ref: "#/components/schemas/ExecuteStatementDto" required: true responses: - "403": - description: Not allowed to find subset - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "501": - description: Failed to execute query as it contains non-supported keywords + "417": + description: Failed to insert query into query store of data database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to communicate with database + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "501": + description: Failed to execute query as it contains non-supported keywords content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: Failed to insert query into query store of data database + "403": + description: Not allowed to find subset content: application/json: schema: @@ -981,9 +976,14 @@ paths: application/json: schema: type: string - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "503": + description: Failed to communicate with database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Malformed select query content: application/json: schema: @@ -1020,33 +1020,33 @@ paths: type: string format: date-time responses: - "400": - description: Request pagination or view data select query is malformed + "404": + description: Failed to find view in metadata database or export dataset content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Exported view data + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: - type: string - format: binary + $ref: "#/components/schemas/ApiErrorDto" "403": description: Export view data not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find view in metadata database or export dataset + "200": + description: Exported view data content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + type: string + format: binary + "400": + description: Request pagination or view data select query is malformed content: application/json: schema: @@ -1083,8 +1083,8 @@ paths: type: integer format: int64 responses: - "400": - description: "Invalid pagination size request, must be > 0" + "404": + description: Failed to find table history in data database content: application/json: schema: @@ -1095,8 +1095,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table history in data database + "403": + description: Find table history not allowed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: "Invalid pagination size request, must be > 0" content: application/json: schema: @@ -1109,12 +1115,6 @@ paths: type: array items: $ref: "#/components/schemas/TableHistoryDto" - "403": - description: Find table history not allowed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - basicAuth: [] - bearerAuth: [] @@ -1147,12 +1147,6 @@ paths: type: string format: date-time responses: - "400": - description: Request pagination or table data select query is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "403": description: Export table data not allowed content: @@ -1178,6 +1172,12 @@ paths: schema: type: string format: binary + "400": + description: Request pagination or table data select query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - basicAuth: [] - bearerAuth: [] @@ -1217,6 +1217,13 @@ paths: type: string format: date-time responses: + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Not allowed to find subset content: @@ -1235,12 +1242,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found subset content: @@ -1248,9 +1249,8 @@ paths: schema: $ref: "#/components/schemas/QueryDto" text/csv: {} - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "400": + description: Malformed select query content: application/json: schema: diff --git a/.docs/.openapi/api-metadata.yaml b/.docs/.openapi/api-metadata.yaml index 2696cecd0c..6792f0f0e9 100644 --- a/.docs/.openapi/api-metadata.yaml +++ b/.docs/.openapi/api-metadata.yaml @@ -61,29 +61,35 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/DatabaseCreateDto" + $ref: "#/components/schemas/CreateDatabaseDto" required: true responses: - "503": - description: Failed to save in search service + "409": + description: Query store could not be created content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "201": + description: Created a new database + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Database create query is malformed or image is not supported + "404": + description: Failed to fin container/user/database in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "423": - description: Database quota exceeded + "502": + description: Connection to search service failed content: application/json: schema: @@ -95,20 +101,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new database - content: - application/json: - schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "409": - description: Query store could not be created + "423": + description: Database quota exceeded content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to fin container/user/database in metadata database + "400": + description: Database create query is malformed or image is not supported content: application/json: schema: @@ -173,6 +173,12 @@ paths: type: string format: uuid responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Database not found content: @@ -185,12 +191,6 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseAccessDto" - "403": - description: No access to this database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -221,36 +221,36 @@ paths: $ref: "#/components/schemas/CreateAccessDto" required: true responses: - "404": - description: Database or user not found + "403": + description: Modify access not permitted when no access is granted in the + first place content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Access could not be updated due to connection error in the - data service + "404": + description: Database or user not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Access could not be updated in the data service + "400": + description: Modify access query or database connection is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified access - "400": - description: Modify access query or database connection is malformed + "502": + description: Access could not be updated due to connection error in the + data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Modify access not permitted when no access is granted in the - first place + "503": + description: Access could not be updated in the data service content: application/json: schema: @@ -285,14 +285,8 @@ paths: $ref: "#/components/schemas/CreateAccessDto" required: true responses: - "400": - description: Granting access query or database connection is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Failed giving access + "502": + description: Access could not be created due to connection error content: application/json: schema: @@ -303,24 +297,30 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Access could not be created due to connection error + "400": + description: Granting access query or database connection is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Granting access succeeded + "403": + description: Failed giving access content: application/json: schema: - $ref: "#/components/schemas/DatabaseAccessDto" + $ref: "#/components/schemas/ApiErrorDto" "503": description: Access could not be created in the data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Granting access succeeded + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" security: - bearerAuth: [] - basicAuth: [] @@ -345,34 +345,34 @@ paths: type: string format: uuid responses: - "503": - description: Access could not be revoked in the data service + "502": + description: Access could not be created due to connection error content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Revoke of access not permitted as no access was found + "400": + description: Modify access query or database connection is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted access - "502": - description: Access could not be created due to connection error + "404": + description: "User, database with access was not found" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "User, database with access was not found" + "202": + description: Deleted access + "503": + description: Access could not be revoked in the data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Modify access query or database connection is malformed + "403": + description: Revoke of access not permitted as no access was found content: application/json: schema: @@ -404,6 +404,12 @@ paths: type: string format: uuid responses: + "403": + description: No access to this database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Database not found content: @@ -416,12 +422,6 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseAccessDto" - "403": - description: No access to this database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -449,18 +449,18 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: User was not found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found user content: application/json: schema: $ref: "#/components/schemas/UserDto" + "404": + description: User was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -484,14 +484,14 @@ paths: $ref: "#/components/schemas/UserUpdateDto" required: true responses: - "403": - description: Not allowed to modify user metadata + "400": + description: Modify user query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Modify user query is malformed + "404": + description: Failed to find database/user in metadata database content: application/json: schema: @@ -502,8 +502,8 @@ paths: application/json: schema: $ref: "#/components/schemas/UserDto" - "404": - description: Failed to find database/user in metadata database + "403": + description: Not allowed to modify user metadata content: application/json: schema: @@ -532,34 +532,34 @@ paths: $ref: "#/components/schemas/UserPasswordDto" required: true responses: - "400": - description: Invalid password payload + "403": + description: Not allowed to change foreign user password content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified user password - "502": - description: Connection to auth service failed + "404": + description: Failed to find database/user in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to change foreign user password + "503": + description: Failed to get user in auth service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database/user in metadata database + "502": + description: Connection to auth service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to get user in auth service + "400": + description: Invalid password payload content: application/json: schema: @@ -581,14 +581,14 @@ paths: $ref: "#/components/schemas/RefreshTokenRequestDto" required: true responses: - "400": - description: Invalid refresh token + "502": + description: Connection to auth service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed + "400": + description: Invalid refresh token content: application/json: schema: @@ -599,8 +599,8 @@ paths: application/json: schema: $ref: "#/components/schemas/TokenDto" - "502": - description: Connection to auth service failed + "403": + description: Not allowed content: application/json: schema: @@ -618,27 +618,26 @@ paths: $ref: "#/components/schemas/LoginRequestDto" required: true responses: - "428": - description: Account is not fully setup in auth service (requires password - change?) + "202": + description: Obtained user token content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to get token + $ref: "#/components/schemas/TokenDto" + "400": + description: Invalid login request content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Obtained user token + "403": + description: Not allowed to get token content: application/json: schema: - $ref: "#/components/schemas/TokenDto" - "404": - description: Failed to find user in auth database + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to get user in auth service content: application/json: schema: @@ -649,14 +648,15 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid login request + "404": + description: Failed to find user in auth database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to get user in auth service + "428": + description: Account is not fully setup in auth service (requires password + change?) content: application/json: schema: @@ -676,18 +676,18 @@ paths: type: integer format: int64 responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Find one ontology content: application/json: schema: $ref: "#/components/schemas/OntologyDto" + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" put: tags: - ontology-endpoint @@ -708,18 +708,18 @@ paths: $ref: "#/components/schemas/OntologyModifyDto" required: true responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Updated ontology successfully content: application/json: schema: $ref: "#/components/schemas/OntologyDto" + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -737,16 +737,16 @@ paths: type: integer format: int64 responses: + "202": + description: Deleted ontology successfully + content: + application/json: {} "404": description: Could not find ontology content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted ontology successfully - content: - application/json: {} security: - bearerAuth: [] - basicAuth: [] @@ -800,16 +800,16 @@ paths: type: integer format: int64 responses: + "202": + description: Deleted message + content: + application/json: {} "404": description: Could not find message content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted message - content: - application/json: {} security: - bearerAuth: [] - basicAuth: [] @@ -828,18 +828,18 @@ paths: type: integer format: int64 responses: - "200": - description: Found image - content: - application/json: - schema: - $ref: "#/components/schemas/ImageDto" "404": description: Image could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found image + content: + application/json: + schema: + $ref: "#/components/schemas/ImageDto" put: tags: - image-endpoint @@ -923,27 +923,8 @@ paths: schema: type: string responses: - "400": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "409": - description: Exported resource was not found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "406": - description: Failed to find acceptable representation - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to data service failed + "410": + description: Failed to retrieve from S3 endpoint content: application/json: schema: @@ -960,6 +941,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "406": + description: Failed to find acceptable representation + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Found identifier successfully content: @@ -975,8 +962,21 @@ paths: text/bibliography; style=apa: {} text/bibliography; style=ieee: {} text/bibliography; style=bibtex: {} - "410": - description: Failed to retrieve from S3 endpoint + "400": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Exported resource was not found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to data service failed content: application/json: schema: @@ -1028,14 +1028,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" + "400": + description: Identifier form contains invalid request data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Identifier form contains invalid request data + "404": + description: "Failed to find database, table or view" content: application/json: schema: @@ -1057,20 +1057,14 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to search service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to delete in search service + "403": + description: Deleting identifier not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Deleting identifier not permitted + "502": + description: Connection to search service failed content: application/json: schema: @@ -1083,6 +1077,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to delete in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1102,12 +1102,6 @@ paths: type: integer format: int64 responses: - "202": - description: Published identifier - content: - application/json: - schema: - $ref: "#/components/schemas/IdentifierDto" "403": description: Insufficient access rights or authorities content: @@ -1126,18 +1120,24 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" + "202": + description: Published identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/IdentifierDto" "400": description: Identifier form contains invalid request data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1163,38 +1163,38 @@ paths: $ref: "#/components/schemas/DatabaseModifyVisibilityDto" required: true responses: - "202": - description: Visibility modified successfully + "400": + description: The visibility payload is malformed content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "503": - description: Failed to save in search service + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Visibility modification is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "404": + description: Failed to find database in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: The visibility payload is malformed + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database + "202": + description: Visibility modified successfully content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Visibility modification is not permitted + $ref: "#/components/schemas/DatabaseBriefDto" + "502": + description: Connection to search service failed content: application/json: schema: @@ -1223,12 +1223,6 @@ paths: type: integer format: int64 responses: - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Find view successfully headers: @@ -1266,6 +1260,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1296,6 +1296,12 @@ paths: $ref: "#/components/schemas/ViewUpdateDto" required: true responses: + "400": + description: Update view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Update not allowed content: @@ -1308,8 +1314,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "404": + description: Database or View could not be found content: application/json: schema: @@ -1319,15 +1325,9 @@ paths: content: '*/*': schema: - $ref: "#/components/schemas/ViewDto" - "400": - description: Update view query is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database or View could not be found + $ref: "#/components/schemas/ViewBriefDto" + "502": + description: Connection to search service failed content: application/json: schema: @@ -1355,14 +1355,16 @@ paths: type: integer format: int64 responses: - "400": - description: Delete view query is malformed + "202": + description: Delete view successfully + "403": + description: Deletion not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Deletion not allowed + "400": + description: Delete view query is malformed content: application/json: schema: @@ -1373,20 +1375,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Delete view successfully - content: - '*/*': - schema: - type: object - "423": - description: Delete view resulted in an invalid query statement + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "423": + description: Delete view resulted in an invalid query statement content: application/json: schema: @@ -1424,45 +1420,36 @@ paths: type: integer format: int64 responses: + "503": + description: Failed to obtain queue information from broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Find table successfully headers: X-Username: description: The authentication username style: simple - X-Table: - description: The table internal name - style: simple Access-Control-Expose-Headers: description: Expose custom headers style: simple - X-Type: - description: The JDBC connection type - style: simple - X-Database: - description: The database internal name - style: simple X-Password: description: The authentication password style: simple - X-Host: - description: The database hostname - style: simple - X-Port: - description: The database port number - style: simple content: application/json: schema: $ref: "#/components/schemas/TableDto" - "404": - description: "Table, database or container could not be found" + "403": + description: Access to the database is forbidden content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to obtain queue information from broker service + "404": + description: "Table, database or container could not be found" content: application/json: schema: @@ -1473,12 +1460,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1508,42 +1489,42 @@ paths: $ref: "#/components/schemas/TableUpdateDto" required: true responses: - "503": - description: Failed to save in search service + "400": + description: Update table visibility payload is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "403": + description: Update table visibility not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Updated the table + "404": + description: Table could not be found content: application/json: schema: - $ref: "#/components/schemas/TableBriefDto" - "400": - description: Update table visibility payload is malformed + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Update table visibility not permitted + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Table could not be found + "202": + description: Updated the table content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/TableBriefDto" security: - bearerAuth: [] - basicAuth: [] @@ -1569,34 +1550,34 @@ paths: type: integer format: int64 responses: - "404": - description: "Table, database or container could not be found" + "400": + description: Delete table query resulted in an invalid query statement content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "202": + description: Delete table successfully + "403": + description: Access to the database is forbidden content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "404": + description: "Table, database or container could not be found" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Delete table successfully - "400": - description: Delete table query resulted in an invalid query statement + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden + "502": + description: Connection to search service failed content: application/json: schema: @@ -1627,6 +1608,12 @@ paths: type: integer format: int64 responses: + "503": + description: Failed to save in search service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Not the owner content: @@ -1639,8 +1626,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: @@ -1651,12 +1638,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Updated table statistics successfully security: @@ -1698,15 +1679,15 @@ paths: $ref: "#/components/schemas/ColumnSemanticsUpdateDto" required: true responses: - "404": - description: Failed to find user/table/database/ontology in metadata database + "400": + description: Update semantic concept query is malformed or update unit of + measurement query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Update semantic concept query is malformed or update unit of - measurement query is malformed + "403": + description: Access to the database is forbidden content: application/json: schema: @@ -1717,6 +1698,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find user/table/database/ontology in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "502": description: Connection to search service failed content: @@ -1729,12 +1716,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ColumnDto" - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1760,20 +1741,20 @@ paths: $ref: "#/components/schemas/DatabaseTransferDto" required: true responses: - "503": - description: Failed to save in search service + "400": + description: Owner payload is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "403": + description: Transfer of ownership is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Transfer of ownership is not permitted + "404": + description: Database or user could not be found content: application/json: schema: @@ -1784,14 +1765,14 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "404": - description: Database or user could not be found + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Owner payload is malformed + "502": + description: Connection to search service failed content: application/json: schema: @@ -1816,36 +1797,36 @@ paths: type: integer format: int64 responses: - "403": - description: Refresh view metadata is not permitted + "404": + description: Failed to find database in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "200": + description: Refreshed database views metadata content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + $ref: "#/components/schemas/DatabaseBriefDto" + "403": + description: Refresh view metadata is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Refreshed database views metadata + "502": + description: Connection to search service failed content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1866,20 +1847,20 @@ paths: type: integer format: int64 responses: - "503": - description: Failed to save in search service + "400": + description: Failed to parse payload at search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "403": + description: Not allowed to refresh table metadata content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to parse payload at search service + "404": + description: Failed to fin user/database in metadata database content: application/json: schema: @@ -1890,14 +1871,14 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "403": - description: Not allowed to refresh table metadata + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to fin user/database in metadata database + "502": + description: Connection to search service failed content: application/json: schema: @@ -1920,6 +1901,12 @@ paths: type: integer format: int64 responses: + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: View of image was successful content: @@ -1929,12 +1916,6 @@ paths: items: type: string format: byte - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1959,38 +1940,38 @@ paths: $ref: "#/components/schemas/DatabaseModifyImageDto" required: true responses: - "404": - description: Database could not be found + "403": + description: Modify of image is not permitted content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "410": + description: File was not found in the Storage Service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "202": + description: Modify of image was successful content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Modify of image is not permitted + $ref: "#/components/schemas/DatabaseBriefDto" + "404": + description: Database could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Modify of image was successful + "503": + description: Failed to save in search service content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "410": - description: File was not found in the Storage Service + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: @@ -2033,55 +2014,55 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SignupRequestDto" + $ref: "#/components/schemas/CreateUserDto" required: true responses: - "502": - description: Failed to create in auth service + "417": + description: User with e-mail already exists content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: User with username already exists + "400": + description: Parameters are not well-formed (likely email) + content: + application/json: {} + "503": + description: Failed to create in auth service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Default role not found + "201": + description: Created user content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Internal authentication to the auth service is invalid + $ref: "#/components/schemas/UserDto" + "404": + description: Default role not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: User with e-mail already exists + "502": + description: Failed to create in auth service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created user + "403": + description: Internal authentication to the auth service is invalid content: application/json: schema: - $ref: "#/components/schemas/UserDto" - "503": - description: Failed to create in auth service + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: User with username already exists content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Parameters are not well-formed (likely email) - content: - application/json: {} /api/ontology: get: tags: @@ -2198,18 +2179,18 @@ paths: $ref: "#/components/schemas/ImageCreateDto" required: true responses: - "409": - description: Image already exists - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Created image content: application/json: schema: $ref: "#/components/schemas/ImageDto" + "409": + description: Image already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "400": description: Image specification is invalid content: @@ -2257,13 +2238,6 @@ paths: schema: type: string responses: - "406": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found identifiers successfully content: @@ -2277,6 +2251,13 @@ paths: type: array items: $ref: "#/components/schemas/LdDatasetDto" + "406": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" post: tags: - identifier-endpoint @@ -2290,7 +2271,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/IdentifierCreateDto" + $ref: "#/components/schemas/CreateIdentifierDto" required: true responses: "403": @@ -2311,12 +2292,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: Identifier form contains invalid request data content: @@ -2329,6 +2304,12 @@ paths: application/json: schema: $ref: "#/components/schemas/IdentifierDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2347,6 +2328,12 @@ paths: type: integer format: int64 responses: + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Find views successfully content: @@ -2355,12 +2342,6 @@ paths: type: array items: $ref: "#/components/schemas/ViewBriefDto" - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2382,29 +2363,23 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ViewCreateDto" + $ref: "#/components/schemas/CreateViewDto" required: true responses: - "503": - description: Failed to save in search service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Create view successfully content: application/json: schema: $ref: "#/components/schemas/ViewBriefDto" - "423": - description: Create view resulted in an invalid query statement + "400": + description: Create view query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "403": + description: Credentials missing content: application/json: schema: @@ -2415,14 +2390,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Create view query is malformed + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Credentials missing + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "423": + description: Create view resulted in an invalid query statement content: application/json: schema: @@ -2487,11 +2468,17 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TableCreateDto" + $ref: "#/components/schemas/CreateTableDto" required: true responses: - "404": - description: "Database, container or user could not be found" + "400": + description: Create table query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "409": + description: Create table conflicts with existing table name content: application/json: schema: @@ -2514,20 +2501,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: Create table conflicts with existing table name - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Created a new table content: application/json: schema: $ref: "#/components/schemas/TableBriefDto" - "400": - description: Create table query is malformed + "404": + description: "Database, container or user could not be found" content: application/json: schema: @@ -2571,32 +2552,32 @@ paths: $ref: "#/components/schemas/CreateContainerDto" required: true responses: - "400": - description: Container payload malformed + "409": + description: Container name already exists content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new container - content: - application/json: - schema: - $ref: "#/components/schemas/ContainerDto" "403": description: "Create container not permitted, need authority `create-container`" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: Container name already exists + "404": + description: Container image or user could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Container image or user could not be found + "201": + description: Created a new container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" + "400": + description: Container payload malformed content: application/json: schema: @@ -2646,24 +2627,12 @@ paths: schema: type: string responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "422": description: Ontology does not have rdf or sparql endpoint content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: Generated query or uri is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "400": description: Filter params are invalid content: @@ -2678,6 +2647,18 @@ paths: type: array items: $ref: "#/components/schemas/EntityDto" + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "417": + description: Generated query or uri is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2758,18 +2739,18 @@ paths: schema: type: string responses: - "200": - description: Retrieved metadata from identifier - content: - application/json: - schema: - $ref: "#/components/schemas/IdentifierDto" "404": description: Failed to find metadata for identifier content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Retrieved metadata from identifier + content: + application/json: + schema: + $ref: "#/components/schemas/IdentifierDto" /api/database/{databaseId}: get: tags: @@ -2785,24 +2766,6 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to view database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, user or exchange could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to find queue information in broker service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Database found successfully headers: @@ -2819,12 +2782,30 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" + "404": + description: "Database, user or exchange could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to find queue information in broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "502": description: Connection to the broker service could not be established content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to view database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2850,40 +2831,40 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find database/table in metadata database + "403": + description: Not the table owner. content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Suggested table semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/EntityDto" "422": description: Ontology does not have rdf or sparql endpoint content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not the table owner. + "400": + description: Failed to parse statistic in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: Generated query is malformed + "200": + description: Suggested table semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" + "404": + description: Failed to find database/table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to parse statistic in search service + "417": + description: Generated query is malformed content: application/json: schema: @@ -2918,12 +2899,6 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find database/table in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "422": description: Ontology does not have rdf or sparql endpoint content: @@ -2936,6 +2911,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Suggested table column semantics successfully content: @@ -2962,18 +2943,18 @@ paths: type: integer format: int64 responses: - "200": - description: Found container - content: - application/json: - schema: - $ref: "#/components/schemas/ContainerDto" "404": description: Container image could not be found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found container + content: + application/json: + schema: + $ref: "#/components/schemas/ContainerDto" delete: tags: - container-endpoint @@ -2988,16 +2969,16 @@ paths: type: integer format: int64 responses: - "404": - description: Container not found + "403": + description: "Create container not permitted, need authority `delete-container`" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Deleted container - "403": - description: "Create container not permitted, need authority `delete-container`" + "404": + description: Container not found content: application/json: schema: @@ -3561,24 +3542,10 @@ components: required: - attributes - id + - password + - username type: object properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality id: type: string format: uuid @@ -3586,6 +3553,12 @@ components: name: type: string example: Josiah Carberry + username: + type: string + example: username + password: + type: string + example: p4ssw0rd attributes: $ref: "#/components/schemas/UserAttributesDto" last_retrieved: @@ -3905,105 +3878,53 @@ components: display_name: type: string example: XOR - CreatorSaveDto: + IdentifierSaveDto: required: - - creator_name + - creators + - database_id - id + - publication_year + - publisher + - titles + - type type: object properties: id: type: integer format: int64 example: 1 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - creator_name: - type: string - example: "Carberry, Josiah" - name_type: + type: type: string - example: Personal + example: database enum: - - Personal - - Organizational - name_identifier: - type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: - type: string - example: ORCID - enum: - - ORCID - - ROR - - ISNI - - GRID - affiliation_identifier: - type: string - example: https://ror.org/04d836q62 - affiliation_identifier_scheme: - type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - IdentifierFunderSaveDto: - required: - - funder_name - - id - type: object - properties: - id: - type: integer - format: int64 - example: 1 - funder_name: - type: string - example: European Commission - funder_identifier: - type: string - example: http://doi.org/10.13039/501100000780 - funder_identifier_type: - type: string - example: Crossref Funder ID - enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: - type: string - example: http://doi.org/ - award_number: - type: string - example: "824087" - award_title: + - database + - subset + - table + - view + doi: type: string - example: EOSC-Life - IdentifierSaveDescriptionDto: - required: - - description - - id - type: object - properties: - id: - type: integer - format: int64 - example: 1 - description: + example: 10.1111/11111111 + titles: + type: array + items: + $ref: "#/components/schemas/SaveIdentifierTitleDto" + descriptions: + type: array + items: + $ref: "#/components/schemas/SaveIdentifierDescriptionDto" + funders: + type: array + items: + $ref: "#/components/schemas/SaveIdentifierFunderDto" + licenses: + type: array + items: + $ref: "#/components/schemas/LicenseDto" + publisher: type: string - example: "Air quality reports at Stephansplatz, Vienna" + example: TU Wien language: type: string - example: en enum: - ab - aa @@ -4189,63 +4110,122 @@ components: - yo - za - zu - type: + creators: + type: array + items: + $ref: "#/components/schemas/SaveIdentifierCreatorDto" + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: "#/components/schemas/SaveRelatedIdentifierDto" + LicenseDto: + required: + - identifier + - uri + type: object + properties: + identifier: type: string - example: Abstract - enum: - - Abstract - - Methods - - SeriesInformation - - TableOfContents - - TechnicalInfo - - Other - IdentifierSaveDto: + example: MIT + uri: + type: string + example: https://opensource.org/licenses/MIT + description: + type: string + example: "A short and simple permissive license with conditions only requiring\ + \ preservation of copyright and license notices. Licensed works, modifications,\ + \ and larger works may be distributed under different terms and without\ + \ source code." + SaveIdentifierCreatorDto: required: - - creators - - database_id + - creator_name - id - - publication_year - - publisher - - titles - - type type: object properties: id: type: integer format: int64 example: 1 - type: + firstname: type: string - example: database + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Wesleyan University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal enum: - - database - - subset - - table - - view - doi: + - Personal + - Organizational + name_identifier: type: string - example: 10.1111/11111111 - titles: - type: array - items: - $ref: "#/components/schemas/IdentifierSaveTitleDto" - descriptions: - type: array - items: - $ref: "#/components/schemas/IdentifierSaveDescriptionDto" - funders: - type: array - items: - $ref: "#/components/schemas/IdentifierFunderSaveDto" - licenses: - type: array - items: - $ref: "#/components/schemas/LicenseDto" - publisher: + example: 0000-0002-1825-0097 + name_identifier_scheme: type: string - example: TU Wien + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/04d836q62 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + SaveIdentifierDescriptionDto: + required: + - description + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" language: type: string + example: en enum: - ab - aa @@ -4431,40 +4411,51 @@ components: - yo - za - zu - creators: - type: array - items: - $ref: "#/components/schemas/CreatorSaveDto" - database_id: + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + SaveIdentifierFunderDto: + required: + - funder_name + - id + type: object + properties: + id: type: integer format: int64 example: 1 - query_id: - type: integer - format: int64 - view_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - related_identifiers: - type: array - items: - $ref: "#/components/schemas/RelatedIdentifierSaveDto" - IdentifierSaveTitleDto: + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + SaveIdentifierTitleDto: required: - id - title @@ -4673,25 +4664,7 @@ components: - Subtitle - TranslatedTitle - Other - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - description: - type: string - example: "A short and simple permissive license with conditions only requiring\ - \ preservation of copyright and license notices. Licensed works, modifications,\ - \ and larger works may be distributed under different terms and without\ - \ source code." - RelatedIdentifierSaveDto: + SaveRelatedIdentifierDto: required: - id - relation @@ -5471,126 +5444,16 @@ components: is_schema_public: type: boolean example: true - ViewColumnDto: - required: - - database_id - - id - - internal_name - - is_null_allowed - - name - - ord - - type - type: object - properties: - id: - type: integer - format: int64 - example: 12 - name: - maxLength: 64 - minLength: 0 - type: string - example: Given Name - size: - type: integer - format: int64 - example: 255 - d: - type: integer - format: int64 - example: 0 - description: - maxLength: 2048 - minLength: 0 - type: string - example: Column comment - database_id: - type: integer - format: int64 - example: 1 - ord: - type: integer - format: int32 - example: 0 - internal_name: - maxLength: 64 - minLength: 0 - type: string - example: given_name - index_length: - type: integer - format: int64 - example: 255 - length: - type: integer - format: int64 - example: 255 - type: - type: string - example: varchar - 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 - is_null_allowed: - type: boolean - example: false - ViewDto: + ViewBriefDto: required: - - columns - database_id - id - - identifiers - internal_name - name - - owner - query - query_hash type: object properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality id: type: integer format: int64 @@ -5598,22 +5461,9 @@ components: name: type: string example: Air Quality - identifiers: - type: array - items: - $ref: "#/components/schemas/IdentifierDto" query: type: string example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - owner: - $ref: "#/components/schemas/UserBriefDto" - columns: - type: array - items: - $ref: "#/components/schemas/ViewColumnDto" - last_retrieved: - type: string - format: date-time database_id: type: integer format: int64 @@ -5634,6 +5484,10 @@ components: query_hash: type: string example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + owned_by: + type: string + format: uuid + example: ac750fcf-ea02-4fce-85ac-d73857e18b35 TableUpdateDto: required: - is_public @@ -5908,7 +5762,7 @@ components: - read - write_own - write_all - SignupRequestDto: + CreateUserDto: required: - email - password @@ -6013,7 +5867,7 @@ components: minimum: 1024 type: integer format: int32 - IdentifierCreateDto: + CreateIdentifierDto: required: - creators - database_id @@ -6037,15 +5891,15 @@ components: titles: type: array items: - $ref: "#/components/schemas/IdentifierSaveTitleDto" + $ref: "#/components/schemas/SaveIdentifierTitleDto" descriptions: type: array items: - $ref: "#/components/schemas/IdentifierSaveDescriptionDto" + $ref: "#/components/schemas/SaveIdentifierDescriptionDto" funders: type: array items: - $ref: "#/components/schemas/IdentifierFunderSaveDto" + $ref: "#/components/schemas/SaveIdentifierFunderDto" licenses: type: array items: @@ -6243,7 +6097,7 @@ components: creators: type: array items: - $ref: "#/components/schemas/CreatorSaveDto" + $ref: "#/components/schemas/SaveIdentifierCreatorDto" database_id: type: integer format: int64 @@ -6272,8 +6126,8 @@ components: related_identifiers: type: array items: - $ref: "#/components/schemas/RelatedIdentifierSaveDto" - DatabaseCreateDto: + $ref: "#/components/schemas/SaveRelatedIdentifierDto" + CreateDatabaseDto: required: - container_id - is_public @@ -6294,7 +6148,7 @@ components: is_schema_public: type: boolean example: true - ViewCreateDto: + CreateViewDto: required: - is_public - is_schema_public @@ -6316,51 +6170,40 @@ components: is_schema_public: type: boolean example: true - ViewBriefDto: + CreateForeignKeyDto: required: - - database_id - - id - - internal_name - - name - - query - - query_hash + - columns + - referenced_columns + - referenced_table type: object properties: - id: - type: integer - format: int64 - example: 4 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - database_id: - type: integer - format: int64 - example: 1 - internal_name: + columns: + type: array + items: + type: string + referenced_table: type: string - example: air_quality - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: + referenced_columns: + type: array + items: + type: string + on_update: type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - owned_by: + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: type: string - format: uuid - example: ac750fcf-ea02-4fce-85ac-d73857e18b35 - ColumnCreateDto: + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + CreateTableColumnDto: required: - name - null_allowed @@ -6439,7 +6282,7 @@ components: type: string unit_uri: type: string - ConstraintsCreateDto: + CreateTableConstraintsDto: required: - checks - foreign_keys @@ -6454,53 +6297,20 @@ components: items: type: string checks: - uniqueItems: true - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: "#/components/schemas/ForeignKeyCreateDto" - primary_key: - uniqueItems: true - type: array - items: - type: string - ForeignKeyCreateDto: - required: - - columns - - referenced_columns - - referenced_table - type: object - properties: - columns: - type: array - items: - type: string - referenced_table: - type: string - referenced_columns: - type: array - items: - type: string - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableCreateDto: + uniqueItems: true + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: "#/components/schemas/CreateForeignKeyDto" + primary_key: + uniqueItems: true + type: array + items: + type: string + CreateTableDto: required: - columns - constraints @@ -6522,9 +6332,9 @@ components: columns: type: array items: - $ref: "#/components/schemas/ColumnCreateDto" + $ref: "#/components/schemas/CreateTableColumnDto" constraints: - $ref: "#/components/schemas/ConstraintsCreateDto" + $ref: "#/components/schemas/CreateTableConstraintsDto" is_public: type: boolean example: true @@ -6587,9 +6397,13 @@ components: - quota type: object properties: - jdbcMethod: + id: + type: integer + format: int64 + example: 4 + name: type: string - example: mariadb + example: Air Quality host: type: string example: data-db @@ -6597,19 +6411,6 @@ components: type: integer format: int32 example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality - id: - type: integer - format: int64 - example: 4 - name: - type: string - example: Air Quality image: $ref: "#/components/schemas/ImageDto" quota: @@ -6620,6 +6421,12 @@ components: type: integer format: int64 example: 10 + username: + type: string + example: username + password: + type: string + example: p4ssw0rd last_retrieved: type: string format: date-time @@ -6929,6 +6736,79 @@ components: type: array items: $ref: "#/components/schemas/PrimaryKeyDto" + DatabaseDto: + required: + - accesses + - contact + - exchange_name + - id + - identifiers + - internal_name + - is_public + - is_schema_public + - name + - owner + - subsets + - tables + - views + type: object + properties: + id: + type: integer + format: int64 + example: 3 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality + tables: + type: array + items: + $ref: "#/components/schemas/TableDto" + views: + type: array + items: + $ref: "#/components/schemas/ViewDto" + container: + $ref: "#/components/schemas/ContainerDto" + accesses: + type: array + items: + $ref: "#/components/schemas/DatabaseAccessDto" + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + subsets: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + contact: + $ref: "#/components/schemas/UserBriefDto" + owner: + $ref: "#/components/schemas/UserBriefDto" + last_retrieved: + type: string + format: date-time + exchange_name: + type: string + example: dbrepo + exchange_type: + type: string + example: topic + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + preview_image: + type: string ForeignKeyBriefDto: type: object properties: @@ -7024,22 +6904,6 @@ components: - routing_key type: object properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality id: type: integer format: int64 @@ -7065,6 +6929,8 @@ components: type: array items: $ref: "#/components/schemas/ColumnDto" + database: + $ref: "#/components/schemas/DatabaseDto" constraints: $ref: "#/components/schemas/ConstraintsDto" last_retrieved: @@ -7135,6 +7001,155 @@ components: type: array items: $ref: "#/components/schemas/ColumnBriefDto" + ViewColumnDto: + required: + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - type + type: object + properties: + id: + type: integer + format: int64 + example: 12 + name: + maxLength: 64 + minLength: 0 + type: string + example: Given Name + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + database_id: + type: integer + format: int64 + example: 1 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: given_name + index_length: + type: integer + format: int64 + example: 255 + length: + type: integer + format: int64 + example: 255 + type: + type: string + example: varchar + 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 + is_null_allowed: + type: boolean + example: false + ViewDto: + required: + - columns + - database_id + - id + - identifiers + - internal_name + - name + - owner + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + example: 4 + name: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: "#/components/schemas/IdentifierDto" + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + database: + $ref: "#/components/schemas/DatabaseDto" + owner: + $ref: "#/components/schemas/UserBriefDto" + columns: + type: array + items: + $ref: "#/components/schemas/ViewColumnDto" + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + example: 1 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 TableColumnEntityDto: required: - column_id diff --git a/.docs/.openapi/api.base.yaml b/.docs/.openapi/api.base.yaml index fc0a733ccc..ee32aad2ff 100644 --- a/.docs/.openapi/api.base.yaml +++ b/.docs/.openapi/api.base.yaml @@ -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.1 + version: 1.6.2 openapi: 3.1.0 servers: - description: Test Instance diff --git a/.docs/.openapi/swagger-ui.html b/.docs/.openapi/swagger-ui.html index 0bb08a1c07..e84dd2ca47 100644 --- a/.docs/.openapi/swagger-ui.html +++ b/.docs/.openapi/swagger-ui.html @@ -5,7 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="description" content="DBRepo REST API description in OpenAPI 3.0"/> <title>DBRepo REST API</title> - <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.17.12/swagger-ui.css"/> + <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.18.2/swagger-ui.css"/> <link rel="stylesheet" href="./custom.css"/> <link rel="icon" href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.docs/images/logos/favicon.png" /> </head> @@ -17,8 +17,8 @@ </div> </div> <div id="swagger-ui"></div> -<script src="https://unpkg.com/swagger-ui-dist@5.17.12/swagger-ui-bundle.js" crossorigin></script> -<script src="https://unpkg.com/swagger-ui-dist@5.17.12/swagger-ui-standalone-preset.js" crossorigin></script> +<script src="https://unpkg.com/swagger-ui-dist@5.18.2/swagger-ui-bundle.js" crossorigin></script> +<script src="https://unpkg.com/swagger-ui-dist@5.18.2/swagger-ui-standalone-preset.js" crossorigin></script> <script> window.onload = () => { window.ui = SwaggerUIBundle({ diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java index 0beb8a3794..a30208bad0 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java @@ -4,11 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; import lombok.*; import lombok.extern.jackson.Jacksonized; -import java.util.List; - @Getter @Setter @Builder @@ -19,11 +18,8 @@ import java.util.List; @ToString public class CreateUserDto { - @NotNull - @Schema(example = "true") - private Boolean enabled; - @NotBlank + @Pattern(regexp = "^[a-z0-9]{3,}$") @Schema(example = "user") private String username; @@ -32,11 +28,8 @@ public class CreateUserDto { @Schema(example = "user@example.com") private String email; - private String firstName; - - private String lastName; - @NotNull - private List<CredentialDto> credentials; + @ToString.Exclude + private String password; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java deleted file mode 100644 index c9110e041a..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java +++ /dev/null @@ -1,35 +0,0 @@ -package at.tuwien.api.auth; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Email; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Pattern; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class SignupRequestDto { - - @NotBlank - @Pattern(regexp = "^[a-z0-9]{3,}$") - @Schema(example = "user") - private String username; - - @NotBlank - @Email - @Schema(example = "user@example.com") - private String email; - - @NotNull - @ToString.Exclude - private String password; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java similarity index 96% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java index f87673764e..c10d6b0b5e 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class DatabaseCreateDto { +public class CreateDatabaseDto { @NotNull @JsonProperty("container_id") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateViewDto.java similarity index 96% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateViewDto.java index 142a751ec4..366845d083 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateViewDto.java @@ -16,7 +16,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class ViewCreateDto { +public class CreateViewDto { @NotBlank @Size(min = 1, max = 63) diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/CreateTableDto.java similarity index 77% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/CreateTableDto.java index 7c3defcc0b..15a798ee2d 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/CreateTableDto.java @@ -1,7 +1,7 @@ package at.tuwien.api.database.table; -import at.tuwien.api.database.table.columns.ColumnCreateDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -20,7 +20,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -public class TableCreateDto { +public class CreateTableDto { @NotBlank @Size(min = 1, max = 64) @@ -42,8 +42,8 @@ public class TableCreateDto { private Boolean isSchemaPublic; @NotNull - private List<ColumnCreateDto> columns; + private List<CreateTableColumnDto> columns; @NotNull - private ConstraintsCreateDto constraints; + private CreateTableConstraintsDto constraints; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/CreateTableColumnDto.java similarity index 97% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/CreateTableColumnDto.java index ca9bb10569..ca7f3b8d58 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/CreateTableColumnDto.java @@ -18,7 +18,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -public class ColumnCreateDto { +public class CreateTableColumnDto { @NotBlank @Schema(example = "Date") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/CreateTableConstraintsDto.java similarity index 77% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/CreateTableConstraintsDto.java index 3d35a20b0c..7b223372d2 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/CreateTableConstraintsDto.java @@ -1,6 +1,6 @@ package at.tuwien.api.database.table.constraints; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyCreateDto; +import at.tuwien.api.database.table.constraints.foreign.CreateForeignKeyDto; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; import lombok.*; @@ -17,14 +17,14 @@ import java.util.Set; @AllArgsConstructor @Jacksonized @ToString -public class ConstraintsCreateDto { +public class CreateTableConstraintsDto { @NotNull private List<List<String>> uniques; @NotNull @JsonProperty("foreign_keys") - private List<ForeignKeyCreateDto> foreignKeys; + private List<CreateForeignKeyDto> foreignKeys; @NotNull private Set<String> checks; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/CreateForeignKeyDto.java similarity index 95% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/CreateForeignKeyDto.java index 8e2a110997..31e43b0c6a 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/CreateForeignKeyDto.java @@ -14,7 +14,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -public class ForeignKeyCreateDto { +public class CreateForeignKeyDto { @NotNull private List<String> columns; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/TableCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/TableCreateDto.java index 777a870bb9..f8db928e8e 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/TableCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/internal/TableCreateDto.java @@ -1,7 +1,7 @@ package at.tuwien.api.database.table.internal; -import at.tuwien.api.database.table.columns.ColumnCreateDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -41,8 +41,8 @@ public class TableCreateDto { private Boolean isSchemaPublic; @NotNull - private List<ColumnCreateDto> columns; + private List<CreateTableColumnDto> columns; @NotNull - private ConstraintsCreateDto constraints; + private CreateTableConstraintsDto constraints; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java similarity index 84% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java index 46eb1bbc7d..db55272383 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java @@ -19,7 +19,7 @@ import java.util.List; @AllArgsConstructor @Jacksonized @ToString -public class IdentifierCreateDto { +public class CreateIdentifierDto { @NotNull @JsonProperty("database_id") @@ -47,11 +47,11 @@ public class IdentifierCreateDto { @NotNull @NotEmpty - private List<IdentifierSaveTitleDto> titles; + private List<SaveIdentifierTitleDto> titles; - private List<IdentifierSaveDescriptionDto> descriptions; + private List<SaveIdentifierDescriptionDto> descriptions; - private List<IdentifierFunderSaveDto> funders; + private List<SaveIdentifierFunderDto> funders; private List<LicenseDto> licenses; @@ -76,9 +76,9 @@ public class IdentifierCreateDto { @NotNull @NotEmpty - private List<CreatorSaveDto> creators; + private List<SaveIdentifierCreatorDto> creators; @JsonProperty("related_identifiers") - private List<RelatedIdentifierSaveDto> relatedIdentifiers; + private List<SaveRelatedIdentifierDto> relatedIdentifiers; } 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 8591cdc8c2..ed4d445de0 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 @@ -51,11 +51,11 @@ public class IdentifierSaveDto { @NotNull @NotEmpty - private List<IdentifierSaveTitleDto> titles; + private List<SaveIdentifierTitleDto> titles; - private List<IdentifierSaveDescriptionDto> descriptions; + private List<SaveIdentifierDescriptionDto> descriptions; - private List<IdentifierFunderSaveDto> funders; + private List<SaveIdentifierFunderDto> funders; private List<LicenseDto> licenses; @@ -80,9 +80,9 @@ public class IdentifierSaveDto { @NotNull @NotEmpty - private List<CreatorSaveDto> creators; + private List<SaveIdentifierCreatorDto> creators; @JsonProperty("related_identifiers") - private List<RelatedIdentifierSaveDto> relatedIdentifiers; + private List<SaveRelatedIdentifierDto> relatedIdentifiers; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorSaveDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java similarity index 97% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorSaveDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java index 86d51e7b4c..c87ff81d3c 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorSaveDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class CreatorSaveDto { +public class SaveIdentifierCreatorDto { @NotNull @Schema(example = "1") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDescriptionDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java similarity index 94% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDescriptionDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java index 76f4f4b7bc..1d251db634 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDescriptionDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class IdentifierSaveDescriptionDto { +public class SaveIdentifierDescriptionDto { @NotNull @Schema(example = "1") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderSaveDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java similarity index 96% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderSaveDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java index 81fd7c91ab..89bea57a1c 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderSaveDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java @@ -14,7 +14,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class IdentifierFunderSaveDto { +public class SaveIdentifierFunderDto { @NotNull @Schema(example = "1") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveTitleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java similarity index 95% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveTitleDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java index 9da7e7ec8b..0832a77cee 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveTitleDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @AllArgsConstructor @Jacksonized @ToString -public class IdentifierSaveTitleDto { +public class SaveIdentifierTitleDto { @NotNull @Schema(example = "1") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierSaveDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java similarity index 93% rename from dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierSaveDto.java rename to dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java index f72d5b02d2..b3a95eee06 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierSaveDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java @@ -13,7 +13,7 @@ import jakarta.validation.constraints.NotNull; @AllArgsConstructor @Jacksonized @ToString -public class RelatedIdentifierSaveDto { +public class SaveRelatedIdentifierDto { @NotNull @Schema(example = "1") 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 bd6b952c17..ac6cacf64f 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 @@ -1,6 +1,6 @@ package at.tuwien.mapper; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.CreateContainerDto; @@ -13,13 +13,13 @@ import at.tuwien.api.database.*; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnBriefDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.concepts.ConceptDto; import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto; import at.tuwien.api.database.table.columns.concepts.UnitDto; import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyBriefDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; @@ -363,19 +363,19 @@ public interface MetadataMapper { .build(); } - Identifier identifierCreateDtoToIdentifier(IdentifierCreateDto data); + Identifier identifierCreateDtoToIdentifier(CreateIdentifierDto data); Identifier identifierUpdateDtoToIdentifier(IdentifierSaveDto data); License licenseDtoToLicense(LicenseDto data); - IdentifierTitle identifierCreateTitleDtoToIdentifierTitle(IdentifierSaveTitleDto data); + IdentifierTitle identifierCreateTitleDtoToIdentifierTitle(SaveIdentifierTitleDto data); - IdentifierDescription identifierCreateDescriptionDtoToIdentifierDescription(IdentifierSaveDescriptionDto data); + IdentifierDescription identifierCreateDescriptionDtoToIdentifierDescription(SaveIdentifierDescriptionDto data); - IdentifierFunder identifierFunderSaveDtoToIdentifierFunder(IdentifierFunderSaveDto data); + IdentifierFunder identifierFunderSaveDtoToIdentifierFunder(SaveIdentifierFunderDto data); - IdentifierSaveDto identifierCreateDtoToIdentifierSaveDto(IdentifierCreateDto data); + IdentifierSaveDto identifierCreateDtoToIdentifierSaveDto(CreateIdentifierDto data); RelatedIdentifierDto relatedIdentifierToRelatedIdentifierDto(RelatedIdentifier data); @@ -389,9 +389,9 @@ public interface MetadataMapper { @Mapping(target = "nameIdentifierSchemeUri", source = "nameIdentifierScheme", qualifiedByName = "nameSchemaMapper"), @Mapping(target = "affiliationIdentifierSchemeUri", source = "affiliationIdentifierScheme", qualifiedByName = "affiliationSchemaMapper"), }) - Creator creatorCreateDtoToCreator(CreatorSaveDto data); + Creator creatorCreateDtoToCreator(SaveIdentifierCreatorDto data); - RelatedIdentifier relatedIdentifierCreateDtoToRelatedIdentifier(RelatedIdentifierSaveDto data); + RelatedIdentifier relatedIdentifierCreateDtoToRelatedIdentifier(SaveRelatedIdentifierDto data); IdentifierType identifierTypeDtoToIdentifierType(IdentifierTypeDto data); @@ -637,7 +637,7 @@ public interface MetadataMapper { ReferenceType referenceTypeDtoToReferenceType(ReferenceTypeDto data); /* keep */ - default Constraints constraintsCreateDtoToConstraints(ConstraintsCreateDto data, Database database, Table table) { + default Constraints constraintsCreateDtoToConstraints(CreateTableConstraintsDto data, Database database, Table table) { final int[] idx = new int[]{0, 0}; final Constraints constrains = Constraints.builder() .checks(data.getChecks()) @@ -744,7 +744,7 @@ public interface MetadataMapper { @Mapping(target = "name", source = "data.name"), @Mapping(target = "internalName", expression = "java(nameToInternalName(data.getName()))"), }) - TableColumn columnCreateDtoToTableColumn(ColumnCreateDto data, ContainerImage image); + TableColumn columnCreateDtoToTableColumn(CreateTableColumnDto data, ContainerImage image); default UpdateCredentialsDto passwordToUpdateCredentialsDto(String password) { return UpdateCredentialsDto.builder() @@ -756,7 +756,7 @@ public interface MetadataMapper { .build(); } - default UserCreateDto signupRequestDtoToUserCreateDto(SignupRequestDto data) { + default UserCreateDto signupRequestDtoToUserCreateDto(CreateUserDto data) { return UserCreateDto.builder() .username(data.getUsername()) .email(data.getEmail()) 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 44d3c10c74..6ee9fa6c9e 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 @@ -153,7 +153,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<DatabaseBriefDto> create(@Valid @RequestBody DatabaseCreateDto data, + public ResponseEntity<DatabaseBriefDto> create(@Valid @RequestBody CreateDatabaseDto data, @NotNull Principal principal) throws DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException, 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 2830f9714a..b70516fa66 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 @@ -475,7 +475,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<IdentifierDto> create(@NotNull @Valid @RequestBody IdentifierCreateDto data, + public ResponseEntity<IdentifierDto> create(@NotNull @Valid @RequestBody CreateIdentifierDto data, @NotNull Principal principal) throws DatabaseNotFoundException, UserNotFoundException, NotAllowedException, MalformedException, DataServiceConnectionException, SearchServiceException, DataServiceException, QueryNotFoundException, SearchServiceConnectionException, 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 61ba0d53e7..08535fde69 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -1,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.ColumnDto; @@ -359,7 +359,7 @@ public class TableEndpoint extends AbstractEndpoint { schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @Valid @RequestBody TableCreateDto data, + @NotNull @Valid @RequestBody CreateTableDto data, @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, TableNotFoundException, TableExistsException, SearchServiceException, diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index da979b34f1..ade963c255 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -2,7 +2,7 @@ package at.tuwien.endpoints; import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.auth.RefreshTokenRequestDto; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.user.UserBriefDto; @@ -139,7 +139,7 @@ public class UserEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody SignupRequestDto data) + public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody CreateUserDto data) throws UserExistsException, EmailExistsException, AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { log.debug("endpoint create user, data.username={}", data.getUsername()); @@ -201,7 +201,7 @@ public class UserEndpoint extends AbstractEndpoint { } catch (UserNotFoundException e) { /* need to sync */ log.warn("User with username {} does not exist in metadata database yet", data.getUsername()); - final SignupRequestDto request = SignupRequestDto.builder() + final CreateUserDto request = CreateUserDto.builder() .username(data.getUsername()) .email("noreply@example.com") .password(data.getPassword()) 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 abfbdb5d36..e8b40de8b2 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.database.ViewBriefDto; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.api.error.ApiErrorDto; @@ -137,7 +137,7 @@ public class ViewEndpoint extends AbstractEndpoint { schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<ViewBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @Valid @RequestBody ViewCreateDto data, + @NotNull @Valid @RequestBody CreateViewDto data, @NotNull Principal principal) throws NotAllowedException, MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, SearchServiceException, SearchServiceConnectionException { diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java index 1f7c391bd2..3fc9c7216e 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java @@ -1,8 +1,8 @@ package at.tuwien.validation; import at.tuwien.SortType; -import at.tuwien.api.database.table.TableCreateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +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.identifier.IdentifierSaveDto; import at.tuwien.endpoints.AbstractEndpoint; @@ -87,12 +87,12 @@ public class EndpointValidator extends AbstractEndpoint { } } - public void validateColumnCreateConstraints(TableCreateDto data) throws MalformedException { + public void validateColumnCreateConstraints(CreateTableDto data) throws MalformedException { if (data == null) { throw new MalformedException("Validation failed: table data is null"); } /* check size */ - final Optional<ColumnCreateDto> optional0 = data.getColumns() + final Optional<CreateTableColumnDto> optional0 = data.getColumns() .stream() .filter(c -> Objects.isNull(c.getSize())) .filter(c -> NEED_SIZE.contains(c.getType())) @@ -101,7 +101,7 @@ public class EndpointValidator extends AbstractEndpoint { log.error("Validation failed: column {} need size parameter", optional0.get().getName()); throw new MalformedException("Validation failed: column " + optional0.get().getName() + " need size parameter"); } - final Optional<ColumnCreateDto> optional0a = data.getColumns() + final Optional<CreateTableColumnDto> optional0a = data.getColumns() .stream() .filter(c -> !Objects.isNull(c.getSize())) .filter(c -> CAN_HAVE_SIZE.contains(c.getType()) || CAN_HAVE_SIZE_AND_D.contains(c.getType())) @@ -111,7 +111,7 @@ public class EndpointValidator extends AbstractEndpoint { log.error("Validation failed: column {} needs positive size parameter", optional0a.get().getName()); throw new MalformedException("Validation failed: column " + optional0a.get().getName() + " needs positive size parameter"); } - final Optional<ColumnCreateDto> optional0b = data.getColumns() + final Optional<CreateTableColumnDto> optional0b = data.getColumns() .stream() .filter(c -> !Objects.isNull(c.getD())) .filter(c -> CAN_HAVE_SIZE_AND_D.contains(c.getType())) @@ -122,7 +122,7 @@ public class EndpointValidator extends AbstractEndpoint { throw new MalformedException("Validation failed: column " + optional0b.get().getName() + " needs positive d parameter"); } /* check size and d */ - final Optional<ColumnCreateDto> optional1 = data.getColumns() + final Optional<CreateTableColumnDto> optional1 = data.getColumns() .stream() .filter(c -> Objects.isNull(c.getSize()) ^ Objects.isNull(c.getD())) .filter(c -> CAN_HAVE_SIZE_AND_D.contains(c.getType())) @@ -132,7 +132,7 @@ public class EndpointValidator extends AbstractEndpoint { throw new MalformedException("Validation failed: column " + optional1.get().getName() + " either needs both size and d parameter or none (use default)"); } /* check enum */ - final Optional<ColumnCreateDto> optional2 = data.getColumns() + final Optional<CreateTableColumnDto> optional2 = data.getColumns() .stream() .filter(c -> c.getType().equals(ColumnTypeDto.ENUM)) .filter(c -> c.getEnums() == null || c.getEnums().isEmpty()) @@ -142,7 +142,7 @@ public class EndpointValidator extends AbstractEndpoint { throw new MalformedException("Validation failed: column " + optional2.get().getName() + " needs at least 1 allowed enum value"); } /* check set */ - final Optional<ColumnCreateDto> optional3 = data.getColumns() + final Optional<CreateTableColumnDto> optional3 = data.getColumns() .stream() .filter(c -> c.getType().equals(ColumnTypeDto.SET)) .filter(c -> c.getEnums() == null || c.getSets().isEmpty()) @@ -152,7 +152,7 @@ public class EndpointValidator extends AbstractEndpoint { throw new MalformedException("Validation failed: column " + optional3.get().getName() + " needs at least 1 allowed set value"); } /* check serial */ - final List<ColumnCreateDto> list4a = data.getColumns() + final List<CreateTableColumnDto> list4a = data.getColumns() .stream() .filter(c -> c.getType().equals(ColumnTypeDto.SERIAL)) .toList(); @@ -160,16 +160,16 @@ public class EndpointValidator extends AbstractEndpoint { log.error("Validation failed: only one column of type serial allowed"); throw new MalformedException("Validation failed: only one column of type serial allowed"); } - final Optional<ColumnCreateDto> optional4a = data.getColumns() + final Optional<CreateTableColumnDto> optional4a = data.getColumns() .stream() .filter(c -> c.getType().equals(ColumnTypeDto.SERIAL)) - .filter(ColumnCreateDto::getNullAllowed) + .filter(CreateTableColumnDto::getNullAllowed) .findFirst(); if (optional4a.isPresent()) { log.error("Validation failed: column {} type serial demands non-null", optional4a.get().getName()); throw new MalformedException("Validation failed: column " + optional4a.get().getName() + " type serial demands non-null"); } - final Optional<ColumnCreateDto> optional4b = data.getColumns() + final Optional<CreateTableColumnDto> optional4b = data.getColumns() .stream() .filter(c -> c.getType().equals(ColumnTypeDto.SERIAL) && data.getConstraints() .getUniques() 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 371e710fae..5118aec776 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 @@ -68,7 +68,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void create_anonymous_fails() { - final DatabaseCreateDto request = DatabaseCreateDto.builder() + final CreateDatabaseDto request = CreateDatabaseDto.builder() .cid(CONTAINER_1_ID) .name(DATABASE_1_NAME) .isPublic(DATABASE_1_PUBLIC) @@ -83,7 +83,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_4_USERNAME) public void create_noRole_fails() { - final DatabaseCreateDto request = DatabaseCreateDto.builder() + final CreateDatabaseDto request = CreateDatabaseDto.builder() .cid(CONTAINER_3_ID) .name(DATABASE_3_NAME) .isPublic(DATABASE_3_PUBLIC) @@ -101,7 +101,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { DatabaseNotFoundException, ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException, AuthServiceException, AuthServiceConnectionException, BrokerServiceException, BrokerServiceConnectionException, ContainerQuotaException { - final DatabaseCreateDto request = DatabaseCreateDto.builder() + final CreateDatabaseDto request = CreateDatabaseDto.builder() .cid(CONTAINER_1_ID) .name(DATABASE_1_NAME) .isPublic(DATABASE_1_PUBLIC) @@ -124,7 +124,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"create-database"}) public void create_quotaExceeded_fails() throws UserNotFoundException, ContainerNotFoundException { - final DatabaseCreateDto request = DatabaseCreateDto.builder() + final CreateDatabaseDto request = CreateDatabaseDto.builder() .cid(CONTAINER_4_ID) .name(DATABASE_1_NAME) .isPublic(DATABASE_1_PUBLIC) @@ -669,7 +669,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { assertEquals(expectedSize, body.size()); } - public void create_generic(DatabaseCreateDto data, Principal principal, User user) throws DataServiceException, + public void create_generic(CreateDatabaseDto data, Principal principal, User user) throws DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException, BrokerServiceException, BrokerServiceConnectionException, ContainerQuotaException { 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 9cc0c4cc8b..a17d31649e 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 @@ -1,14 +1,14 @@ package at.tuwien.endpoints; import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableUpdateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.semantics.EntityDto; import at.tuwien.api.semantics.TableColumnEntityDto; import at.tuwien.entities.database.Database; @@ -203,10 +203,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicDecimalColumnSizeTooSmall_fails() { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(ColumnTypeDto.DECIMAL) .size(-1L) // <<< @@ -224,10 +224,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicDecimalColumnDTooSmall_fails() { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(ColumnTypeDto.DECIMAL) .size(0L) @@ -247,10 +247,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicOptionalSizeNone_succeeds(ColumnTypeDto columnType) throws UserNotFoundException, SearchServiceException, NotAllowedException, SemanticEntityNotFoundException, DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(null) // <<< @@ -278,10 +278,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicOptionalSize_succeeds(ColumnTypeDto columnType) throws UserNotFoundException, SearchServiceException, NotAllowedException, SemanticEntityNotFoundException, DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(40L) @@ -303,15 +303,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicNeedNothing_succeeds(ColumnTypeDto columnType) throws UserNotFoundException, SearchServiceException, NotAllowedException, SemanticEntityNotFoundException, DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .nullAllowed(false) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .uniques(List.of(List.of("ID"))) .build()) .build(); @@ -329,10 +329,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicNeedSize_succeeds(ColumnTypeDto columnType) throws UserNotFoundException, SearchServiceException, NotAllowedException, SemanticEntityNotFoundException, DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(40L) @@ -353,10 +353,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MethodSource("needSize_parameters") @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicNeedSizeNone_fails(ColumnTypeDto columnType) { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(null) // <<< @@ -375,10 +375,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MethodSource("canHaveSizeAndD_parameters") @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicCanHaveSizeAndDSizeNone_fails(ColumnTypeDto columnType) { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(null) // <<< @@ -397,10 +397,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MethodSource("canHaveSizeAndD_parameters") @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicCanHaveSizeAndDDNone_fails(ColumnTypeDto columnType) { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(0L) @@ -423,10 +423,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(null) // <<< @@ -446,20 +446,20 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicHasMultipleSerial_fails() { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(ColumnTypeDto.SERIAL) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Counter") .type(ColumnTypeDto.SERIAL) .nullAllowed(false) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .uniques(List.of(List.of("ID"), List.of("Counter"))) .build()) @@ -474,15 +474,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_3_USERNAME, authorities = {"create-table"}) public void create_publicSerialNullAllowed_fails() { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(ColumnTypeDto.SERIAL) .nullAllowed(true) // <<< .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .uniques(List.of(List.of("ID"))) .build()) .build(); @@ -501,10 +501,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { DataServiceConnectionException, TableNotFoundException, MalformedException, DataServiceException, DatabaseNotFoundException, AccessNotFoundException, OntologyNotFoundException, TableExistsException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("Some Table") .description("Some Description") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("ID") .type(columnType) .size(0L) // <<< @@ -1147,7 +1147,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { return tableEndpoint.list(databaseId, principal); } - protected ResponseEntity<TableBriefDto> generic_create(Long databaseId, Database database, TableCreateDto data, + protected ResponseEntity<TableBriefDto> generic_create(Long databaseId, Database database, CreateTableDto data, Principal principal, User user, DatabaseAccess access) throws MalformedException, NotAllowedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, TableNotFoundException, 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 8b653f9356..152c17c461 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.keycloak.UserAttributesDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; @@ -107,7 +107,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void create_anonymous_succeeds() throws UserExistsException, EmailExistsException, UserNotFoundException, AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { - final SignupRequestDto request = SignupRequestDto.builder() + final CreateUserDto request = CreateUserDto.builder() .email(USER_1_EMAIL) .username(USER_1_USERNAME) .password(USER_1_PASSWORD) @@ -120,7 +120,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME) public void create_isAuthenticated_fails() { - final SignupRequestDto request = SignupRequestDto.builder() + final CreateUserDto request = CreateUserDto.builder() .email(USER_2_EMAIL) .username(USER_2_USERNAME) .password(USER_2_PASSWORD) @@ -312,7 +312,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { /* mock */ when(authenticationService.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); - when(userService.create(any(SignupRequestDto.class), any(UUID.class))) + when(userService.create(any(CreateUserDto.class), any(UUID.class))) .thenReturn(USER_1); /* test */ @@ -445,7 +445,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { return response.getBody(); } - protected void create_generic(SignupRequestDto data, User user, at.tuwien.api.keycloak.UserDto userDto, UUID id) + protected void create_generic(CreateUserDto data, User user, at.tuwien.api.keycloak.UserDto userDto, UUID id) throws UserExistsException, EmailExistsException, UserNotFoundException, AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { 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 4cd9296425..4f1a3da45c 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.database.ViewBriefDto; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.entities.database.Database; @@ -461,7 +461,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { DatabaseAccess access) throws MalformedException, DataServiceException, DataServiceConnectionException, NotAllowedException, UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, SearchServiceException, SearchServiceConnectionException { - final ViewCreateDto request = ViewCreateDto.builder() + final CreateViewDto request = CreateViewDto.builder() .name(VIEW_1_NAME) .query(VIEW_1_QUERY) .isPublic(VIEW_1_PUBLIC) 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 5250f7e106..b0efccab9a 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java @@ -1,9 +1,9 @@ package at.tuwien.service; -import at.tuwien.api.database.table.TableCreateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +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.ConstraintsCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; @@ -82,22 +82,22 @@ public class TableServicePersistenceTest extends AbstractUnitTest { @Transactional public void create_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, UserNotFoundException, TableNotFoundException, DatabaseNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException, OntologyNotFoundException, SemanticEntityNotFoundException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("New Table") .description("A wonderful table") .isPublic(true) .isSchemaPublic(true) - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("id") .nullAllowed(false) .type(ColumnTypeDto.BIGINT) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("date") .nullAllowed(true) .type(ColumnTypeDto.DATE) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .checks(Set.of()) .uniques(List.of(List.of("date"))) .foreignKeys(List.of()) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java index 5fb8e9ad7e..8cb5081f6d 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java @@ -1,13 +1,13 @@ package at.tuwien.service; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableStatisticDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnStatisticDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; +import at.tuwien.api.database.table.constraints.foreign.CreateForeignKeyDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; @@ -275,7 +275,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(USER_1); doNothing() .when(dataServiceGateway) - .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); + .createTable(eq(DATABASE_1_ID), any(CreateTableDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) @@ -291,15 +291,15 @@ public class TableServiceUnitTest extends AbstractUnitTest { DataServiceConnectionException, UserNotFoundException, TableNotFoundException, DatabaseNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("New Table") .description("A wonderful table") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("I Am Späshül") .nullAllowed(true) .type(ColumnTypeDto.TEXT) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .checks(Set.of()) .uniques(List.of(List.of("I Am Späshül"))) .foreignKeys(List.of()) @@ -312,7 +312,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(USER_1); doNothing() .when(dataServiceGateway) - .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); + .createTable(eq(DATABASE_1_ID), any(CreateTableDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) @@ -344,15 +344,15 @@ public class TableServiceUnitTest extends AbstractUnitTest { public void createTable_dateFormatNotFound_fails() throws DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name("New Table") .description("A wonderful table") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("date") .nullAllowed(true) .type(ColumnTypeDto.DATE) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .checks(Set.of()) .uniques(List.of(List.of("date"))) .foreignKeys(List.of()) @@ -365,7 +365,7 @@ public class TableServiceUnitTest extends AbstractUnitTest { .thenReturn(USER_1); doNothing() .when(dataServiceGateway) - .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class)); + .createTable(eq(DATABASE_1_ID), any(CreateTableDto.class)); when(databaseRepository.save(any(Database.class))) .thenReturn(DATABASE_1); when(searchServiceGateway.update(any(Database.class))) @@ -423,11 +423,11 @@ public class TableServiceUnitTest extends AbstractUnitTest { @Test public void createTable_primaryKeyMalformed_fails() throws UserNotFoundException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name(TABLE_5_NAME) .description(TABLE_5_DESCRIPTION) .columns(TABLE_5_COLUMNS_CREATE) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .foreignKeys(new LinkedList<>()) .checks(new LinkedHashSet<>()) .primaryKey(Set.of("i_do_not_exist")) @@ -447,11 +447,11 @@ public class TableServiceUnitTest extends AbstractUnitTest { @Test public void createTable_uniquesMalformed_fails() throws UserNotFoundException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name(TABLE_5_NAME) .description(TABLE_5_DESCRIPTION) .columns(TABLE_5_COLUMNS_CREATE) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .foreignKeys(new LinkedList<>()) .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>()) @@ -473,12 +473,12 @@ public class TableServiceUnitTest extends AbstractUnitTest { @Test public void createTable_foreignKeyMalformed_fails() throws UserNotFoundException { - final TableCreateDto request = TableCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() .name(TABLE_5_NAME) .description(TABLE_5_DESCRIPTION) .columns(TABLE_5_COLUMNS_CREATE) - .constraints(ConstraintsCreateDto.builder() - .foreignKeys(List.of(ForeignKeyCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() + .foreignKeys(List.of(CreateForeignKeyDto.builder() .columns(List.of("some_column")) .referencedColumns(List.of("some_foreign_column")) .referencedTable("some_referenced_table") diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java index 09a372a6eb..8724e08be1 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java @@ -1,6 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; @@ -69,7 +69,7 @@ public class UserServicePersistenceTest extends AbstractUnitTest { @Test public void create_succeeds() throws UserExistsException, UserNotFoundException, EmailExistsException { - final SignupRequestDto request = SignupRequestDto.builder() + final CreateUserDto request = CreateUserDto.builder() .username(USER_2_USERNAME) .password(USER_2_PASSWORD) .email(USER_2_EMAIL) @@ -109,7 +109,7 @@ public class UserServicePersistenceTest extends AbstractUnitTest { .build(); /* mock */ - final User user = userService.create(SignupRequestDto.builder() + final User user = userService.create(CreateUserDto.builder() .username(USER_3_USERNAME) .password(USER_3_PASSWORD) .email(USER_3_EMAIL) 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 c63d207e6e..4ba217a60c 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 @@ -2,7 +2,7 @@ package at.tuwien.service; import at.tuwien.repository.DatabaseRepository; import at.tuwien.test.AbstractUnitTest; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; import at.tuwien.exception.*; @@ -50,7 +50,7 @@ public class ViewServiceUnitTest extends AbstractUnitTest { @Test public void create_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { - final ViewCreateDto request = ViewCreateDto.builder() + final CreateViewDto request = CreateViewDto.builder() .name(VIEW_1_NAME) .query(VIEW_1_QUERY) .isPublic(VIEW_1_PUBLIC) 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 342a9e328e..fe650589ad 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 @@ -1,8 +1,8 @@ package at.tuwien.validator; import at.tuwien.SortType; -import at.tuwien.api.database.table.TableCreateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +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.identifier.IdentifierSaveDto; import at.tuwien.entities.database.Database; @@ -264,8 +264,8 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { @ParameterizedTest @MethodSource("needSize_parameters") public void validateColumnCreateConstraints_needSize_fails(ColumnTypeDto type) { - final TableCreateDto request = TableCreateDto.builder() - .columns(List.of(ColumnCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .type(type) .size(null) // <<<<<< .build())) @@ -279,8 +279,8 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { @Test public void validateColumnCreateConstraints_needEnum_fails() { - final TableCreateDto request = TableCreateDto.builder() - .columns(List.of(ColumnCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .type(ColumnTypeDto.ENUM) .enums(null) // <<<<<<< .build())) @@ -294,8 +294,8 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { @Test public void validateColumnCreateConstraints_needSet_fails() { - final TableCreateDto request = TableCreateDto.builder() - .columns(List.of(ColumnCreateDto.builder() + final CreateTableDto request = CreateTableDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .type(ColumnTypeDto.SET) .sets(null) // <<<<<<< .build())) 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 976830cebb..4ee76c36bf 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 @@ -3,11 +3,11 @@ package at.tuwien.gateway; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.internal.CreateDatabaseDto; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.TableUpdateDto; @@ -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, TableCreateDto data) throws DataServiceConnectionException, DataServiceException, + void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException, TableExistsException; /** @@ -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, ViewCreateDto data) throws DataServiceConnectionException, DataServiceException; + ViewDto createView(Long databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException; /** * Deletes a given view in the given database. 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 191f42fea3..6ee2ef084b 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 @@ -4,7 +4,7 @@ import at.tuwien.ExportResourceDto; import at.tuwien.api.database.*; import at.tuwien.api.database.internal.CreateDatabaseDto; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.TableUpdateDto; @@ -188,7 +188,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public void createTable(Long databaseId, TableCreateDto data) throws DataServiceConnectionException, DataServiceException, + public void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException, TableExistsException { final ResponseEntity<Void> response; final String path = "/api/database/" + databaseId + "/table"; @@ -239,7 +239,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } @Override - public ViewDto createView(Long databaseId, ViewCreateDto data) throws DataServiceConnectionException, DataServiceException { + public ViewDto createView(Long 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); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java index eb378290aa..a288d1d6e0 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java @@ -1,7 +1,7 @@ package at.tuwien.service; import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -22,7 +22,7 @@ public interface AuthenticationService { * @throws AuthServiceConnectionException The connection with the auth service could not be established. * @throws EmailExistsException The user email already exists in the metadata database. */ - UserDto create(SignupRequestDto data) throws UserExistsException, AuthServiceException, AuthServiceConnectionException, + UserDto create(CreateUserDto data) throws UserExistsException, AuthServiceException, AuthServiceConnectionException, EmailExistsException, CredentialsInvalidException; /** 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 3000ece11e..4e3765fd6e 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 @@ -1,6 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.database.DatabaseCreateDto; +import at.tuwien.api.database.CreateDatabaseDto; import at.tuwien.api.database.DatabaseModifyVisibilityDto; import at.tuwien.entities.container.Container; import at.tuwien.entities.database.Database; @@ -68,7 +68,7 @@ public interface DatabaseService { * @throws DataServiceException If the data service returned non-successfully. * @throws DataServiceConnectionException If failing to connect to the data service/search service. */ - Database create(Container container, DatabaseCreateDto createDto, User user, List<User> internalUsers) throws UserNotFoundException, + Database create(Container container, CreateDatabaseDto createDto, User user, List<User> internalUsers) throws UserNotFoundException, ContainerNotFoundException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException; 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 ded8204f32..47183700f9 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 @@ -1,7 +1,7 @@ package at.tuwien.service; import at.tuwien.api.identifier.BibliographyTypeDto; -import at.tuwien.api.identifier.IdentifierCreateDto; +import at.tuwien.api.identifier.CreateIdentifierDto; import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.entities.database.Database; @@ -139,7 +139,7 @@ public interface IdentifierService { * @throws SearchServiceException * @throws SearchServiceConnectionException */ - Identifier create(Database database, User user, IdentifierCreateDto data) throws DataServiceException, + Identifier create(Database database, User user, CreateIdentifierDto data) throws DataServiceException, DataServiceConnectionException, IdentifierNotFoundException, MalformedException, ViewNotFoundException, DatabaseNotFoundException, QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException; 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 299283e68b..c0880c07dc 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 @@ -1,6 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.entities.database.Database; @@ -39,7 +39,7 @@ public interface TableService { * @param principal The principal. * @return The created table. */ - Table createTable(Database database, TableCreateDto createDto, Principal principal) + Table createTable(Database database, CreateTableDto createDto, Principal principal) throws TableNotFoundException, DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java index 6416da9b80..c2f57c4e53 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java @@ -1,6 +1,6 @@ package at.tuwien.service; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; @@ -47,7 +47,7 @@ public interface UserService { * @param id The user id. * @return The user, if successful. */ - User create(SignupRequestDto data, UUID id); + User create(CreateUserDto data, UUID id); /** * Updates the user information for a user with given id in the metadata database. 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 9ec30b74f2..4d183f1cc4 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 @@ -1,12 +1,11 @@ package at.tuwien.service; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -53,7 +52,7 @@ public interface ViewService { * @throws SearchServiceConnectionException * @throws ViewNotFoundException */ - View create(Database database, User user, ViewCreateDto data) throws MalformedException, DataServiceException, + View create(Database database, User user, CreateViewDto data) throws MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java index 52aa504889..24ebeb1665 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java @@ -1,7 +1,7 @@ package at.tuwien.service.impl; import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -30,7 +30,7 @@ public class AuthenticationServiceImpl implements AuthenticationService { } @Override - public UserDto create(SignupRequestDto data) throws UserExistsException, AuthServiceException, + public UserDto create(CreateUserDto data) throws UserExistsException, AuthServiceException, AuthServiceConnectionException, EmailExistsException, CredentialsInvalidException { keycloakGateway.createUser(metadataMapper.signupRequestDtoToUserCreateDto(data)); try { 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 0151ea92f7..b4e42a67e1 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 @@ -6,7 +6,7 @@ import at.tuwien.api.datacite.doi.DataCiteCreateDoi; import at.tuwien.api.datacite.doi.DataCiteDoi; import at.tuwien.api.datacite.doi.DataCiteDoiEvent; import at.tuwien.api.identifier.BibliographyTypeDto; -import at.tuwien.api.identifier.IdentifierCreateDto; +import at.tuwien.api.identifier.CreateIdentifierDto; import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.DataCiteConfig; @@ -105,7 +105,7 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService { @Override @Transactional(rollbackFor = {Exception.class}) - public Identifier create(Database database, User user, IdentifierCreateDto data) throws DataServiceException, + public Identifier create(Database database, User user, CreateIdentifierDto data) throws DataServiceException, DataServiceConnectionException, IdentifierNotFoundException, MalformedException, ViewNotFoundException, DatabaseNotFoundException, QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException { 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 7415ded56a..17ba0bd60b 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 @@ -1,10 +1,9 @@ package at.tuwien.service.impl; -import at.tuwien.api.database.DatabaseCreateDto; +import at.tuwien.api.database.CreateDatabaseDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.DatabaseModifyVisibilityDto; import at.tuwien.api.database.ViewDto; -import at.tuwien.api.database.internal.CreateDatabaseDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.entities.container.Container; @@ -96,7 +95,7 @@ public class DatabaseServiceImpl implements DatabaseService { @Override @Transactional - public Database create(Container container, DatabaseCreateDto data, User user, List<User> internalUsers) + public Database create(Container container, CreateDatabaseDto data, User user, List<User> internalUsers) throws UserNotFoundException, ContainerNotFoundException, DataServiceException, SearchServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceConnectionException { final Database entity = Database.builder() @@ -116,7 +115,7 @@ public class DatabaseServiceImpl implements DatabaseService { .identifiers(new LinkedList<>()) .build(); /* create in data database */ - final CreateDatabaseDto payload = CreateDatabaseDto.builder() + final at.tuwien.api.database.internal.CreateDatabaseDto payload = at.tuwien.api.database.internal.CreateDatabaseDto.builder() .containerId(data.getCid()) .userId(user.getId()) .username(user.getUsername()) 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 39e4824706..932a1a598c 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 @@ -3,7 +3,7 @@ package at.tuwien.service.impl; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.BibliographyTypeDto; -import at.tuwien.api.identifier.IdentifierCreateDto; +import at.tuwien.api.identifier.CreateIdentifierDto; import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.MetadataConfig; @@ -228,7 +228,7 @@ public class IdentifierServiceImpl implements IdentifierService { @Override @Transactional - public Identifier create(Database database, User user, IdentifierCreateDto data) throws SearchServiceException, + public Identifier create(Database database, User user, CreateIdentifierDto data) throws SearchServiceException, DataServiceException, QueryNotFoundException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceConnectionException, IdentifierNotFoundException, ViewNotFoundException { final Identifier identifier = metadataMapper.identifierCreateDtoToIdentifier(data); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index 52a9a63667..da92fb7ef5 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 @@ -1,9 +1,9 @@ package at.tuwien.service.impl; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.TableUpdateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnStatisticDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.config.RabbitConfig; @@ -90,7 +90,7 @@ public class TableServiceImpl implements TableService { @Override @Transactional - public Table createTable(Database database, TableCreateDto data, Principal principal) throws DataServiceException, + public Table createTable(Database database, CreateTableDto data, Principal principal) throws DataServiceException, DataServiceConnectionException, UserNotFoundException, TableNotFoundException, DatabaseNotFoundException, TableExistsException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException { @@ -117,7 +117,7 @@ public class TableServiceImpl implements TableService { /* set the ordinal position for the columns */ final int[] idx = new int[]{0}; for (int i = 0; i < data.getColumns().size(); i++) { - final ColumnCreateDto c = data.getColumns().get(i); + final CreateTableColumnDto c = data.getColumns().get(i); final TableColumn column = metadataMapper.columnCreateDtoToTableColumn(c, database.getContainer().getImage()); column.setOrdinalPosition(idx[0]++); column.setTable(table); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 6f9f43aeda..042684f8c9 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -1,6 +1,6 @@ package at.tuwien.service.impl; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.config.KeycloakConfig; @@ -64,7 +64,7 @@ public class UserServiceImpl implements UserService { } @Override - public User create(SignupRequestDto data, UUID id) { + public User create(CreateUserDto data, UUID id) { /* create at authentication service */ final User entity = User.builder() .id(id) 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 b0a8f01796..8ca688b1ed 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 @@ -1,6 +1,6 @@ package at.tuwien.service.impl; -import at.tuwien.api.database.ViewCreateDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.entities.database.Database; @@ -87,7 +87,7 @@ public class ViewServiceImpl implements ViewService { @Override @Transactional - public View create(Database database, User creator, ViewCreateDto data) throws MalformedException, + public View create(Database database, User creator, CreateViewDto data) throws MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { /* create in metadata database */ 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 8599983687..21e7e0519b 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 @@ -7,21 +7,20 @@ import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto; import at.tuwien.api.amqp.QueueDto; import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.auth.RefreshTokenRequestDto; -import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.*; import at.tuwien.api.database.*; -import at.tuwien.api.database.internal.CreateDatabaseDto; import at.tuwien.api.database.query.QueryBriefDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.CreateTableDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.columns.*; import at.tuwien.api.database.table.columns.concepts.*; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.*; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; @@ -619,7 +618,7 @@ public abstract class BaseTest { public final static Principal USER_1_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_1_DETAILS, USER_1_PASSWORD, USER_1_DETAILS.getAuthorities()); - public final static SignupRequestDto USER_1_SIGNUP_REQUEST_DTO = SignupRequestDto.builder() + public final static CreateUserDto USER_1_SIGNUP_REQUEST_DTO = CreateUserDto.builder() .username(USER_1_USERNAME) .password(USER_1_PASSWORD) .email(USER_1_EMAIL) @@ -697,7 +696,7 @@ public abstract class BaseTest { .qualifiedName(USER_2_QUALIFIED_NAME) .build(); - public final static SignupRequestDto USER_2_SIGNUP_REQUEST_DTO = SignupRequestDto.builder() + public final static CreateUserDto USER_2_SIGNUP_REQUEST_DTO = CreateUserDto.builder() .username(USER_2_USERNAME) .password(USER_2_PASSWORD) .email(USER_2_EMAIL) @@ -1274,13 +1273,13 @@ public abstract class BaseTest { public final static UserDto DATABASE_1_CREATOR_DTO = USER_1_DTO; public final static UserDto DATABASE_1_OWNER_DTO = USER_1_DTO; - public final static DatabaseCreateDto DATABASE_1_CREATE = DatabaseCreateDto.builder() + public final static CreateDatabaseDto DATABASE_1_CREATE = CreateDatabaseDto.builder() .name(DATABASE_1_NAME) .isPublic(DATABASE_1_PUBLIC) .cid(CONTAINER_1_ID) .build(); - public final static CreateDatabaseDto DATABASE_1_CREATE_INTERNAL = CreateDatabaseDto.builder() + public final static at.tuwien.api.database.internal.CreateDatabaseDto DATABASE_1_CREATE_INTERNAL = at.tuwien.api.database.internal.CreateDatabaseDto.builder() .internalName(DATABASE_1_INTERNALNAME) .containerId(CONTAINER_1_ID) .username(USER_1_USERNAME) @@ -1302,7 +1301,7 @@ public abstract class BaseTest { public final static UUID DATABASE_2_OWNER = USER_2_ID; public final static UUID DATABASE_2_CREATOR = USER_2_ID; - public final static DatabaseCreateDto DATABASE_2_CREATE = DatabaseCreateDto.builder() + public final static CreateDatabaseDto DATABASE_2_CREATE = CreateDatabaseDto.builder() .name(DATABASE_2_NAME) .isPublic(DATABASE_2_PUBLIC) .cid(CONTAINER_1_ID) @@ -1358,7 +1357,7 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .build(); - public final static DatabaseCreateDto DATABASE_3_CREATE = DatabaseCreateDto.builder() + public final static CreateDatabaseDto DATABASE_3_CREATE = CreateDatabaseDto.builder() .name(DATABASE_3_NAME) .isPublic(DATABASE_3_PUBLIC) .cid(CONTAINER_1_ID) @@ -1418,169 +1417,169 @@ public abstract class BaseTest { .lastRetrieved(Instant.now()) .build(); - public final static TableCreateDto TABLE_0_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_0_CREATE_DTO = CreateTableDto.builder() .name("full") .description("full example") - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .uniques(new LinkedList<>()) .foreignKeys(new LinkedList<>()) .build()) - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("col1a") .type(ColumnTypeDto.CHAR) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col1b") .type(ColumnTypeDto.CHAR) .nullAllowed(true) .size(50L) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col2a") .type(ColumnTypeDto.VARCHAR) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col2b") .type(ColumnTypeDto.VARCHAR) .nullAllowed(true) .size(1024L) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col3") .type(ColumnTypeDto.BINARY) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col4") .type(ColumnTypeDto.VARBINARY) .nullAllowed(true) .size(200L) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col5") .type(ColumnTypeDto.TINYBLOB) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col6") .type(ColumnTypeDto.TINYTEXT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col7") .type(ColumnTypeDto.TEXT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col8") .type(ColumnTypeDto.BLOB) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col9") .type(ColumnTypeDto.MEDIUMTEXT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col10") .type(ColumnTypeDto.MEDIUMBLOB) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col11") .type(ColumnTypeDto.LONGTEXT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col12") .type(ColumnTypeDto.LONGBLOB) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col13") .type(ColumnTypeDto.ENUM) .nullAllowed(true) .enums(new LinkedList<>(List.of("val1", "val2"))) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col14") .type(ColumnTypeDto.SET) .nullAllowed(true) .sets(new LinkedList<>(List.of("val1", "val2"))) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col15") .type(ColumnTypeDto.BIT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col16") .type(ColumnTypeDto.TINYINT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col17") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col18") .type(ColumnTypeDto.SMALLINT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col19") .type(ColumnTypeDto.MEDIUMINT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col20") .type(ColumnTypeDto.INT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col21") .type(ColumnTypeDto.BIGINT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col22") .type(ColumnTypeDto.FLOAT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col23") .type(ColumnTypeDto.DOUBLE) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col24") .type(ColumnTypeDto.DECIMAL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col25") .type(ColumnTypeDto.DATE) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col26") .type(ColumnTypeDto.DATETIME) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col27") .type(ColumnTypeDto.TIMESTAMP) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col28") .type(ColumnTypeDto.TIME) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("col29") .type(ColumnTypeDto.YEAR) .nullAllowed(true) @@ -1946,32 +1945,32 @@ public abstract class BaseTest { .ownedBy(USER_3_ID) .build(); - public final static ConstraintsCreateDto TABLE_3_CONSTRAINTS_CREATE_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_3_CONSTRAINTS_CREATE_DTO = CreateTableConstraintsDto.builder() .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>()) .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>()) .build(); - public final static ConstraintsCreateDto TABLE_3_CONSTRAINTS_INVALID_CREATE_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_3_CONSTRAINTS_INVALID_CREATE_DTO = CreateTableConstraintsDto.builder() .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>()) // <<<< .uniques(new LinkedList<>()) - .foreignKeys(List.of(ForeignKeyCreateDto.builder() + .foreignKeys(List.of(CreateForeignKeyDto.builder() .referencedTable("weather_location") .columns(new LinkedList<>(List.of("fahrzeug"))) .referencedColumns(new LinkedList<>(List.of("doesnotexist"))) .build())) .build(); - public final static TableCreateDto TABLE_3_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_3_CREATE_DTO = CreateTableDto.builder() .name(TABLE_3_NAME) .description(TABLE_3_DESCRIPTION) .columns(new LinkedList<>()) .constraints(TABLE_3_CONSTRAINTS_CREATE_DTO) .build(); - public final static TableCreateDto TABLE_3_INVALID_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_3_INVALID_CREATE_DTO = CreateTableDto.builder() .name(TABLE_3_NAME) .description(TABLE_3_DESCRIPTION) .columns(new LinkedList<>()) @@ -2286,12 +2285,12 @@ public abstract class BaseTest { .isNullAllowed(true) .build()); - public final static List<ColumnCreateDto> TABLE_4_COLUMNS_CREATE_DTO = List.of(ColumnCreateDto.builder() + public final static List<CreateTableColumnDto> TABLE_4_COLUMNS_CREATE_DTO = List.of(CreateTableColumnDto.builder() .name("Timestamp") .type(ColumnTypeDto.TIMESTAMP) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Value") .type(ColumnTypeDto.DECIMAL) .nullAllowed(true) @@ -2299,14 +2298,14 @@ public abstract class BaseTest { .d(10L) .build()); - public final static ConstraintsCreateDto TABLE_4_CONSTRAINTS_CREATE_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_4_CONSTRAINTS_CREATE_DTO = CreateTableConstraintsDto.builder() .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>(Set.of("Timestamp"))) .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>(List.of(List.of("Timestamp")))) .build(); - public final static TableCreateDto TABLE_4_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_4_CREATE_DTO = CreateTableDto.builder() .name(TABLE_4_NAME) .description(TABLE_4_DESCRIPTION) .columns(TABLE_4_COLUMNS_CREATE_DTO) @@ -3183,32 +3182,32 @@ public abstract class BaseTest { .isNullAllowed(true) .build()); - public final static List<ColumnCreateDto> TABLE_1_COLUMNS_CREATE_DTO = List.of(ColumnCreateDto.builder() + public final static List<CreateTableColumnDto> TABLE_1_COLUMNS_CREATE_DTO = List.of(CreateTableColumnDto.builder() .name("id") .type(ColumnTypeDto.BIGINT) .nullAllowed(false) .enums(null) .sets(null) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Date") .type(ColumnTypeDto.DATE) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Location") .type(ColumnTypeDto.VARCHAR) .size(255L) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("MinTemp") .type(ColumnTypeDto.DECIMAL) .size(10L) .d(0L) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Rainfall") .type(ColumnTypeDto.DECIMAL) .size(10L) @@ -3218,21 +3217,21 @@ public abstract class BaseTest { .unitUri(UNIT_1_URI) .build()); - public final static ConstraintsCreateDto TABLE_1_CONSTRAINTS_CREATE_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_1_CONSTRAINTS_CREATE_DTO = CreateTableConstraintsDto.builder() .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>(List.of("id"))) .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>(List.of(List.of("date")))) .build(); - public final static ConstraintsCreateDto TABLE_1_CONSTRAINTS_CREATE_INVALID_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_1_CONSTRAINTS_CREATE_INVALID_DTO = CreateTableConstraintsDto.builder() .checks(new LinkedHashSet<>()) .primaryKey(new LinkedHashSet<>()) .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>(List.of(List.of("date")))) .build(); - public final static TableCreateDto TABLE_1_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_1_CREATE_DTO = CreateTableDto.builder() .name(TABLE_1_NAME) .description(TABLE_1_DESCRIPTION) .columns(TABLE_1_COLUMNS_CREATE_DTO) @@ -4655,137 +4654,137 @@ public abstract class BaseTest { .isNullAllowed(true) .build()); - public final static List<ForeignKeyCreateDto> TABLE_5_FOREIGN_KEYS_INVALID_CREATE = List.of(ForeignKeyCreateDto.builder() + public final static List<CreateForeignKeyDto> TABLE_5_FOREIGN_KEYS_INVALID_CREATE = List.of(CreateForeignKeyDto.builder() .columns(new LinkedList<>(List.of("somecolumn"))) .referencedTable("sometable") .referencedColumns(new LinkedList<>(List.of("someothercolumn"))) .build()); - public final static ConstraintsCreateDto TABLE_5_CONSTRAINTS_INVALID_CREATE = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_5_CONSTRAINTS_INVALID_CREATE = CreateTableConstraintsDto.builder() .foreignKeys(TABLE_5_FOREIGN_KEYS_INVALID_CREATE) .build(); - public final static List<ColumnCreateDto> TABLE_5_COLUMNS_CREATE = List.of(ColumnCreateDto.builder() + public final static List<CreateTableColumnDto> TABLE_5_COLUMNS_CREATE = List.of(CreateTableColumnDto.builder() .name("id") .type(ColumnTypeDto.BIGINT) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Animal Name") .type(ColumnTypeDto.VARCHAR) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Hair") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Feathers") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Bread") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Eggs") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Milk") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Water") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Airborne") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Waterborne") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Aquantic") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Predator") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Backbone") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Breathes") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Venomous") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Fin") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Legs") .type(ColumnTypeDto.INT) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Tail") .type(ColumnTypeDto.DECIMAL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Domestic") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Catsize") .type(ColumnTypeDto.BOOL) .nullAllowed(true) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("Class Type") .type(ColumnTypeDto.DECIMAL) .nullAllowed(true) .build()); - public final static ConstraintsCreateDto TABLE_5_CREATE_CONSTRAINTS_DTO = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_5_CREATE_CONSTRAINTS_DTO = CreateTableConstraintsDto.builder() .primaryKey(Set.of("id")) .uniques(new LinkedList<>(List.of(List.of("id")))) .checks(new LinkedHashSet<>()) .foreignKeys(new LinkedList<>()) .build(); - public final static TableCreateDto TABLE_5_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_5_CREATE_DTO = CreateTableDto.builder() .name(TABLE_5_NAME) .description(TABLE_5_DESCRIPTION) .columns(TABLE_5_COLUMNS_CREATE) .constraints(TABLE_5_CREATE_CONSTRAINTS_DTO) .build(); - public final static TableCreateDto TABLE_5_INVALID_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_5_INVALID_CREATE_DTO = CreateTableDto.builder() .name(TABLE_5_NAME) .description(TABLE_5_DESCRIPTION) .columns(TABLE_5_COLUMNS_CREATE) @@ -4912,7 +4911,7 @@ public abstract class BaseTest { public final static List<List<String>> TABLE_6_UNIQUES_CREATE = List.of( List.of("firstname", "lastname")); - public final static List<ForeignKeyCreateDto> TABLE_6_FOREIGN_KEYS_CREATE = List.of(ForeignKeyCreateDto.builder() + public final static List<CreateForeignKeyDto> TABLE_6_FOREIGN_KEYS_CREATE = List.of(CreateForeignKeyDto.builder() .columns(new LinkedList<>(List.of("ref_id"))) .referencedTable("zoo") .referencedColumns(new LinkedList<>(List.of("id"))) @@ -4920,27 +4919,27 @@ public abstract class BaseTest { public final static Set<String> TABLE_6_CHECKS_CREATE = Set.of("firstname != lastname"); - public final static ConstraintsCreateDto TABLE_6_CONSTRAINTS_CREATE = ConstraintsCreateDto.builder() + public final static CreateTableConstraintsDto TABLE_6_CONSTRAINTS_CREATE = CreateTableConstraintsDto.builder() .uniques(TABLE_6_UNIQUES_CREATE) .foreignKeys(TABLE_6_FOREIGN_KEYS_CREATE) .checks(TABLE_6_CHECKS_CREATE) .primaryKey(Set.of("id")) .build(); - public final static List<ColumnCreateDto> TABLE_6_COLUMNS_CREATE = List.of( - ColumnCreateDto.builder() + public final static List<CreateTableColumnDto> TABLE_6_COLUMNS_CREATE = List.of( + CreateTableColumnDto.builder() .name("name_id") .type(ColumnTypeDto.BIGINT) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("zoo_id") .type(ColumnTypeDto.BIGINT) .size(255L) .nullAllowed(false) .build()); - public final static TableCreateDto TABLE_6_CREATE_DTO = TableCreateDto.builder() + public final static CreateTableDto TABLE_6_CREATE_DTO = CreateTableDto.builder() .name(TABLE_6_NAME) .description(TABLE_6_DESCRIPTION) .columns(TABLE_6_COLUMNS_CREATE) @@ -5162,7 +5161,7 @@ public abstract class BaseTest { .queryHash(VIEW_1_QUERY_HASH) .build(); - public final static ViewCreateDto VIEW_1_CREATE_DTO = ViewCreateDto.builder() + public final static CreateViewDto VIEW_1_CREATE_DTO = CreateViewDto.builder() .isPublic(VIEW_1_PUBLIC) .name(VIEW_1_NAME) .query(VIEW_1_QUERY) @@ -6128,13 +6127,13 @@ public abstract class BaseTest { .language(IDENTIFIER_1_TITLE_1_LANG_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_1_TITLE_1_CREATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_1_TITLE_1_CREATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_1_TITLE_1_TITLE) .titleType(IDENTIFIER_1_TITLE_1_TYPE_DTO) .language(IDENTIFIER_1_TITLE_1_LANG_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_1_TITLE_1_UPDATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_1_TITLE_1_UPDATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_1_TITLE_1_TITLE_MODIFY) .titleType(IDENTIFIER_1_TITLE_1_TYPE_DTO) .language(IDENTIFIER_1_TITLE_1_LANG_DTO) @@ -6170,13 +6169,13 @@ public abstract class BaseTest { .language(IDENTIFIER_1_TITLE_2_LANG_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_1_TITLE_2_CREATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_1_TITLE_2_CREATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_1_TITLE_2_TITLE) .titleType(IDENTIFIER_1_TITLE_2_TYPE_DTO) .language(IDENTIFIER_1_TITLE_2_LANG_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_1_TITLE_2_UPDATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_1_TITLE_2_UPDATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_1_TITLE_2_TITLE_MODIFY) .titleType(IDENTIFIER_1_TITLE_2_TYPE_DTO) .language(IDENTIFIER_1_TITLE_2_LANG_DTO) @@ -6212,7 +6211,7 @@ public abstract class BaseTest { .language(IDENTIFIER_1_DESCRIPTION_1_LANG_DTO) .build(); - public final static IdentifierSaveDescriptionDto IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO = IdentifierSaveDescriptionDto.builder() + public final static SaveIdentifierDescriptionDto IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO = SaveIdentifierDescriptionDto.builder() .id(null) .description(IDENTIFIER_1_DESCRIPTION_1_DESCRIPTION) .descriptionType(IDENTIFIER_1_DESCRIPTION_1_TYPE_DTO) @@ -6260,7 +6259,7 @@ public abstract class BaseTest { .affiliationIdentifierSchemeUri(IDENTIFIER_1_CREATOR_1_AFFILIATION_IDENTIFIER_SCHEME_URI) .build(); - public final static CreatorSaveDto IDENTIFIER_1_CREATOR_1_CREATE_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_1_CREATOR_1_CREATE_DTO = SaveIdentifierCreatorDto.builder() .id(null) .firstname(IDENTIFIER_1_CREATOR_1_FIRSTNAME) .lastname(IDENTIFIER_1_CREATOR_1_LASTNAME) @@ -6297,7 +6296,7 @@ public abstract class BaseTest { .awardTitle(FUNDER_1_AWARD_TITLE) .build(); - public final static IdentifierFunderSaveDto IDENTIFIER_1_FUNDER_1_CREATE_DTO = IdentifierFunderSaveDto.builder() + public final static SaveIdentifierFunderDto IDENTIFIER_1_FUNDER_1_CREATE_DTO = SaveIdentifierFunderDto.builder() .funderName(FUNDER_1_NAME) .funderIdentifier(FUNDER_1_IDENTIFIER) .funderIdentifierType(FUNDER_1_IDENTIFIER_TYPE_DTO) @@ -6402,7 +6401,7 @@ public abstract class BaseTest { .status(IDENTIFIER_1_STATUS_TYPE_DTO) .build(); - public final static IdentifierCreateDto IDENTIFIER_1_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_1_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_1_DATABASE_ID) .type(IDENTIFIER_1_TYPE_DTO) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) @@ -6419,7 +6418,7 @@ public abstract class BaseTest { .funders(new LinkedList<>(List.of(IDENTIFIER_1_FUNDER_1_CREATE_DTO))) .build(); - public final static IdentifierCreateDto IDENTIFIER_1_CREATE_WITH_DOI_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_1_CREATE_WITH_DOI_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_1_DATABASE_ID) .type(IDENTIFIER_1_TYPE_DTO) .doi(IDENTIFIER_1_DOI) @@ -6511,7 +6510,7 @@ public abstract class BaseTest { .titleType(IDENTIFIER_5_TITLE_1_TYPE_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_5_TITLE_1_CREATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_5_TITLE_1_CREATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_5_TITLE_1_TITLE) .language(IDENTIFIER_5_TITLE_1_LANG_DTO) .titleType(IDENTIFIER_5_TITLE_1_TYPE_DTO) @@ -6539,7 +6538,7 @@ public abstract class BaseTest { .descriptionType(IDENTIFIER_5_DESCRIPTION_1_TYPE_DTO) .build(); - public final static IdentifierSaveDescriptionDto IDENTIFIER_5_DESCRIPTION_1_CREATE_DTO = IdentifierSaveDescriptionDto.builder() + public final static SaveIdentifierDescriptionDto IDENTIFIER_5_DESCRIPTION_1_CREATE_DTO = SaveIdentifierDescriptionDto.builder() .id(null) .description(IDENTIFIER_5_DESCRIPTION_1_DESCRIPTION) .language(IDENTIFIER_5_DESCRIPTION_1_LANG_DTO) @@ -6574,7 +6573,7 @@ public abstract class BaseTest { .affiliationIdentifierSchemeUri(CREATOR_1_AFFIL_URI) .build(); - public final static CreatorSaveDto IDENTIFIER_5_CREATOR_1_CREATE_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_5_CREATOR_1_CREATE_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_1_FIRSTNAME) .lastname(CREATOR_1_LASTNAME) .creatorName(CREATOR_1_NAME) @@ -6583,7 +6582,7 @@ public abstract class BaseTest { .affiliation(CREATOR_1_AFFIL) .build(); - public final static CreatorSaveDto IDENTIFIER_5_CREATOR_1_MODIFY_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_5_CREATOR_1_MODIFY_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_1_FIRSTNAME) .lastname(CREATOR_1_LASTNAME) .creatorName(CREATOR_1_NAME) @@ -6614,7 +6613,7 @@ public abstract class BaseTest { .affiliation(CREATOR_2_AFFIL) .build(); - public final static CreatorSaveDto IDENTIFIER_5_CREATOR_2_CREATE_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_5_CREATOR_2_CREATE_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_2_FIRSTNAME) .lastname(CREATOR_2_LASTNAME) .creatorName(CREATOR_2_NAME) @@ -6623,7 +6622,7 @@ public abstract class BaseTest { .affiliation(CREATOR_2_AFFIL) .build(); - public final static CreatorSaveDto IDENTIFIER_5_CREATOR_2_MODIFY_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_5_CREATOR_2_MODIFY_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_2_FIRSTNAME) .lastname(CREATOR_2_LASTNAME) .creatorName(CREATOR_2_NAME) @@ -6707,13 +6706,13 @@ public abstract class BaseTest { .value(RELATED_IDENTIFIER_5_VALUE) .build(); - public final static RelatedIdentifierSaveDto IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO = RelatedIdentifierSaveDto.builder() + public final static SaveRelatedIdentifierDto IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO = SaveRelatedIdentifierDto.builder() .value(RELATED_IDENTIFIER_5_VALUE) .type(RELATED_IDENTIFIER_5_TYPE_DTO) .relation(RELATED_IDENTIFIER_5_RELATION_TYPE_DTO) .build(); - public final static IdentifierCreateDto IDENTIFIER_5_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_5_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_5_DATABASE_ID) .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR) .publisher(IDENTIFIER_5_PUBLISHER) @@ -6782,7 +6781,7 @@ public abstract class BaseTest { .language(IDENTIFIER_6_TITLE_1_LANG_DTO) .build(); - public final static IdentifierSaveTitleDto IDENTIFIER_6_TITLE_1_CREATE_DTO = IdentifierSaveTitleDto.builder() + public final static SaveIdentifierTitleDto IDENTIFIER_6_TITLE_1_CREATE_DTO = SaveIdentifierTitleDto.builder() .title(IDENTIFIER_6_TITLE_1_TITLE_MODIFY) .language(IDENTIFIER_6_TITLE_1_LANG_DTO) .build(); @@ -6812,7 +6811,7 @@ public abstract class BaseTest { .language(IDENTIFIER_6_DESCRIPTION_1_LANG_DTO) .build(); - public final static IdentifierSaveDescriptionDto IDENTIFIER_6_DESCRIPTION_1_CREATE_DTO = IdentifierSaveDescriptionDto.builder() + public final static SaveIdentifierDescriptionDto IDENTIFIER_6_DESCRIPTION_1_CREATE_DTO = SaveIdentifierDescriptionDto.builder() .id(null) .description(IDENTIFIER_6_DESCRIPTION_1_DESCRIPTION_MODIFY) .language(IDENTIFIER_6_DESCRIPTION_1_LANG_DTO) @@ -6846,7 +6845,7 @@ public abstract class BaseTest { .affiliationIdentifierSchemeUri(CREATOR_1_AFFIL_URI) .build(); - public final static CreatorSaveDto IDENTIFIER_6_CREATOR_1_CREATE_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_6_CREATOR_1_CREATE_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_1_FIRSTNAME) .lastname(CREATOR_1_LASTNAME) .creatorName(CREATOR_1_NAME) @@ -6857,7 +6856,7 @@ public abstract class BaseTest { .affiliationIdentifierScheme(CREATOR_1_AFFIL_TYPE_DTO) .build(); - public final static CreatorSaveDto IDENTIFIER_6_CREATOR_1_MODIFY_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_6_CREATOR_1_MODIFY_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_1_FIRSTNAME) .lastname(CREATOR_1_LASTNAME) .creatorName(CREATOR_1_NAME) @@ -6981,7 +6980,7 @@ public abstract class BaseTest { .status(IDENTIFIER_6_STATUS_TYPE_DTO) .build(); - public final static IdentifierCreateDto IDENTIFIER_6_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_6_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_6_DATABASE_ID) .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) .publisher(IDENTIFIER_6_PUBLISHER) @@ -7076,7 +7075,7 @@ public abstract class BaseTest { .status(IDENTIFIER_7_STATUS_TYPE_DTO) .build(); - public final static CreatorSaveDto IDENTIFIER_7_CREATOR_1_CREATE_DTO = CreatorSaveDto.builder() + public final static SaveIdentifierCreatorDto IDENTIFIER_7_CREATOR_1_CREATE_DTO = SaveIdentifierCreatorDto.builder() .firstname(CREATOR_1_FIRSTNAME) .lastname(CREATOR_1_LASTNAME) .creatorName(CREATOR_1_NAME) @@ -7086,7 +7085,7 @@ public abstract class BaseTest { .affiliationIdentifier(CREATOR_1_AFFIL_ROR) .build(); - public final static IdentifierCreateDto IDENTIFIER_7_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_7_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_7_DATABASE_ID) .publicationYear(IDENTIFIER_7_PUBLICATION_YEAR) .publisher(IDENTIFIER_7_PUBLISHER) @@ -7129,7 +7128,7 @@ public abstract class BaseTest { public final static IdentifierStatusTypeDto IDENTIFIER_2_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED; public final static UUID IDENTIFIER_2_CREATED_BY = USER_1_ID; - public final static IdentifierCreateDto IDENTIFIER_2_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_2_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_2_DATABASE_ID) .queryId(IDENTIFIER_2_QUERY_ID) .type(IDENTIFIER_2_TYPE_DTO) @@ -7301,7 +7300,7 @@ public abstract class BaseTest { .status(IDENTIFIER_3_STATUS_TYPE_DTO) .build(); - public final static IdentifierCreateDto IDENTIFIER_3_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_3_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_3_DATABASE_ID) .viewId(IDENTIFIER_3_VIEW_ID) .type(IDENTIFIER_3_TYPE_DTO) @@ -7400,7 +7399,7 @@ public abstract class BaseTest { .status(IDENTIFIER_4_STATUS_TYPE_DTO) .build(); - public final static IdentifierCreateDto IDENTIFIER_4_CREATE_DTO = IdentifierCreateDto.builder() + public final static CreateIdentifierDto IDENTIFIER_4_CREATE_DTO = CreateIdentifierDto.builder() .databaseId(IDENTIFIER_4_DATABASE_ID) .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) .publisher(IDENTIFIER_4_PUBLISHER) diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 78861ffd04..a0b4bf60c4 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -1767,13 +1767,13 @@ 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: int, type: IdentifierType, titles: List[SaveIdentifierTitle], publisher: str, creators: List[CreateIdentifierCreator], publication_year: int, - descriptions: List[CreateIdentifierDescription] = None, - funders: List[CreateIdentifierFunder] = None, licenses: List[License] = None, + 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, publication_day: int = None, publication_month: int = None, - related_identifiers: List[CreateRelatedIdentifier] = None) -> Identifier: + related_identifiers: List[SaveRelatedIdentifier] = None) -> Identifier: """ Create an identifier draft. @@ -1828,12 +1828,12 @@ class RestClient: f'201 (CREATED): {response.text}') def save_identifier(self, identifier_id: int, database_id: int, 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, + titles: List[SaveIdentifierTitle], publisher: str, creators: List[CreateIdentifierCreator], + 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, publication_day: int = None, publication_month: int = None, - related_identifiers: List[CreateRelatedIdentifier] = None) -> Identifier: + related_identifiers: List[SaveRelatedIdentifier] = None) -> Identifier: """ Save an existing identifier and update the metadata attached to it. diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index b7556a03a5..50cd161bc3 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -419,7 +419,7 @@ class IdentifierTitle(BaseModel): type: Optional[TitleType] = None -class CreateIdentifierTitle(BaseModel): +class SaveIdentifierTitle(BaseModel): title: str language: Optional[Language] = None type: Optional[TitleType] = None @@ -432,7 +432,7 @@ class IdentifierDescription(BaseModel): type: Optional[DescriptionType] = None -class CreateIdentifierDescription(BaseModel): +class SaveIdentifierDescription(BaseModel): description: str language: Optional[Language] = None type: Optional[DescriptionType] = None @@ -448,7 +448,7 @@ class IdentifierFunder(BaseModel): award_title: Optional[str] = None -class CreateIdentifierFunder(BaseModel): +class SaveIdentifierFunder(BaseModel): funder_name: str funder_identifier: Optional[str] = None funder_identifier_type: Optional[str] = None @@ -594,7 +594,7 @@ class RelatedIdentifier(BaseModel): relation: RelatedIdentifierRelation -class CreateRelatedIdentifier(BaseModel): +class SaveRelatedIdentifier(BaseModel): value: str type: RelatedIdentifierType relation: RelatedIdentifierRelation @@ -606,9 +606,9 @@ class CreateIdentifier(BaseModel): creators: List[CreateIdentifierCreator] publication_year: int publisher: str - titles: List[CreateIdentifierTitle] - descriptions: List[CreateIdentifierDescription] - funders: Optional[List[CreateIdentifierFunder]] = field(default_factory=list) + titles: List[SaveIdentifierTitle] + descriptions: List[SaveIdentifierDescription] + funders: Optional[List[SaveIdentifierFunder]] = field(default_factory=list) doi: Optional[str] = None language: Optional[str] = None licenses: Optional[List[License]] = field(default_factory=list) @@ -618,7 +618,7 @@ class CreateIdentifier(BaseModel): query: Optional[str] = None query_normalized: Optional[str] = None execution: Optional[str] = None - related_identifiers: Optional[List[CreateRelatedIdentifier]] = field(default_factory=list) + related_identifiers: Optional[List[SaveRelatedIdentifier]] = field(default_factory=list) result_hash: Optional[str] = None result_number: Optional[int] = None publication_day: Optional[int] = None diff --git a/lib/python/tests/test_dtos.py b/lib/python/tests/test_dtos.py index 0a90949dba..3f05e24081 100644 --- a/lib/python/tests/test_dtos.py +++ b/lib/python/tests/test_dtos.py @@ -42,8 +42,8 @@ class AnalyseUnitTest(unittest.TestCase): skipped: [str] = [] def setUp(self): - with open('../../.docs/.openapi/api.yaml', 'r') as f: - self.schemas = safe_load(f)['components']['schemas'] + with open('../../.docs/.openapi/api.yaml') as fh: + self.schemas = safe_load(fh)['components']['schemas'] for name, obj in inspect.getmembers(sys.modules[dto.__name__]): self.found += 1 if not inspect.isclass(obj): diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py index 0c71c0216f..8726d05ef2 100644 --- a/lib/python/tests/test_unit_identifier.py +++ b/lib/python/tests/test_unit_identifier.py @@ -3,8 +3,8 @@ import unittest import requests_mock from dbrepo.RestClient import RestClient -from dbrepo.api.dto import Identifier, IdentifierType, CreateIdentifierTitle, Creator, IdentifierTitle, \ - IdentifierDescription, CreateIdentifierDescription, Language, CreateIdentifierFunder, CreateRelatedIdentifier, \ +from dbrepo.api.dto import Identifier, IdentifierType, SaveIdentifierTitle, Creator, IdentifierTitle, \ + IdentifierDescription, SaveIdentifierDescription, Language, SaveIdentifierFunder, SaveRelatedIdentifier, \ RelatedIdentifierRelation, RelatedIdentifierType, IdentifierFunder, RelatedIdentifier, UserBrief, \ IdentifierStatusType, CreateIdentifierCreator from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError, AuthenticationError @@ -36,14 +36,14 @@ class IdentifierUnitTest(unittest.TestCase): client = RestClient(username="a", password="b") response = client.create_identifier( database_id=1, type=IdentifierType.VIEW, - titles=[CreateIdentifierTitle(title='Test Title')], + titles=[SaveIdentifierTitle(title='Test Title')], publisher='TU Wien', publication_year=2024, language=Language.EN, - funders=[CreateIdentifierFunder(funder_name='FWF')], - related_identifiers=[CreateRelatedIdentifier(value='10.12345/abc', - relation=RelatedIdentifierRelation.CITES, - type=RelatedIdentifierType.DOI)], - descriptions=[CreateIdentifierDescription(description='Test Description')], + funders=[SaveIdentifierFunder(funder_name='FWF')], + related_identifiers=[SaveRelatedIdentifier(value='10.12345/abc', + relation=RelatedIdentifierRelation.CITES, + type=RelatedIdentifierType.DOI)], + descriptions=[SaveIdentifierDescription(description='Test Description')], creators=[CreateIdentifierCreator(creator_name='Carberry, Josiah')]) self.assertEqual(exp, response) @@ -56,8 +56,8 @@ class IdentifierUnitTest(unittest.TestCase): client = RestClient(username="a", password="b") response = client.create_identifier( database_id=1, type=IdentifierType.VIEW, - titles=[CreateIdentifierTitle(title='Test Title')], - descriptions=[CreateIdentifierDescription(description='Test')], + titles=[SaveIdentifierTitle(title='Test Title')], + descriptions=[SaveIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, creators=[CreateIdentifierCreator(creator_name='Carberry, Josiah')]) except MalformedError: @@ -72,8 +72,8 @@ class IdentifierUnitTest(unittest.TestCase): client = RestClient(username="a", password="b") response = client.create_identifier( database_id=1, type=IdentifierType.VIEW, - titles=[CreateIdentifierTitle(title='Test Title')], - descriptions=[CreateIdentifierDescription(description='Test')], + titles=[SaveIdentifierTitle(title='Test Title')], + descriptions=[SaveIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, creators=[CreateIdentifierCreator(creator_name='Carberry, Josiah')]) except ForbiddenError: @@ -88,8 +88,8 @@ class IdentifierUnitTest(unittest.TestCase): client = RestClient(username="a", password="b") response = client.create_identifier( database_id=1, type=IdentifierType.VIEW, - titles=[CreateIdentifierTitle(title='Test Title')], - descriptions=[CreateIdentifierDescription(description='Test')], + titles=[SaveIdentifierTitle(title='Test Title')], + descriptions=[SaveIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, creators=[CreateIdentifierCreator(creator_name='Carberry, Josiah')]) except NotExistsError: @@ -103,8 +103,8 @@ class IdentifierUnitTest(unittest.TestCase): try: response = RestClient().create_identifier( database_id=1, type=IdentifierType.VIEW, - titles=[CreateIdentifierTitle(title='Test Title')], - descriptions=[CreateIdentifierDescription(description='Test')], + titles=[SaveIdentifierTitle(title='Test Title')], + descriptions=[SaveIdentifierDescription(description='Test')], publisher='TU Wien', publication_year=2024, creators=[CreateIdentifierCreator(creator_name='Carberry, Josiah')]) except AuthenticationError: -- GitLab From 4fe1424843b0255f5ed015bdaa1ba93a1a001b67 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 14:44:20 +0100 Subject: [PATCH 17/52] Need the correct container Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../tuwien/service/DatabaseServiceIntegrationTest.java | 4 ++-- .../at/tuwien/service/QueueServiceIntegrationTest.java | 4 ++-- .../tuwien/service/SubsetServiceIntegrationTest.java | 4 ++-- .../at/tuwien/service/TableServiceIntegrationTest.java | 10 +++++----- .../at/tuwien/service/ViewServiceIntegrationTest.java | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) 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 ae1917202d..2b7476e50f 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 @@ -106,7 +106,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); MariaDbConfig.grantWriteAccess(DATABASE_1_DTO, USER_1_USERNAME); /* pre-condition */ @@ -131,7 +131,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); /* test */ assertThrows(DatabaseMalformedException.class, () -> { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java index a2ff1716e5..fc9860909f 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java @@ -52,8 +52,8 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); } @Test 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 886d492cd7..ea58aa1da4 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 @@ -44,8 +44,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); } @Test diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index cfab2600e5..e29e418ca8 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -82,11 +82,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_3_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_3_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_DTO); /* s3 */ if (s3Client.listBuckets().buckets().stream().noneMatch(b -> b.name().equals(s3Config.getS3Bucket()))) { s3Client.createBucket(CreateBucketRequest.builder() diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java index 658c099724..74e2bd3d68 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java @@ -33,8 +33,8 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest { public void beforeEach() throws SQLException { genesis(); /* metadata database */ - MariaDbConfig.dropDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); } @Test -- GitLab From 4c00c298dcdf91c7c2279a3e1f95e5abd90a76db Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 15:48:46 +0100 Subject: [PATCH 18/52] Removed the temporary views Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../at/tuwien/endpoints/SubsetEndpoint.java | 43 ++++++++------ .../at/tuwien/endpoints/TableEndpoint.java | 24 +++++--- .../at/tuwien/endpoints/ViewEndpoint.java | 28 ++++++--- .../endpoint/SubsetEndpointUnitTest.java | 58 +++++++++---------- .../endpoint/TableEndpointUnitTest.java | 16 +++-- .../tuwien/endpoint/ViewEndpointUnitTest.java | 6 +- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 2 +- .../DatabaseServiceIntegrationTest.java | 18 +++--- .../java/at/tuwien/mapper/MariaDbMapper.java | 36 ++++++++++-- .../at/tuwien/service/DatabaseService.java | 4 +- .../java/at/tuwien/service/SubsetService.java | 32 +++++----- .../java/at/tuwien/service/TableService.java | 8 --- .../at/tuwien/service/impl/DataConnector.java | 8 +-- .../impl/DatabaseServiceMariaDbImpl.java | 4 +- .../impl/SubsetServiceMariaDbImpl.java | 52 ++++++++--------- .../service/impl/TableServiceMariaDbImpl.java | 40 ++----------- 16 files changed, 196 insertions(+), 183 deletions(-) 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 ed867715e1..878502f1bc 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 @@ -9,6 +9,7 @@ import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.query.QueryPersistDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.exception.*; +import at.tuwien.mapper.MariaDbMapper; import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.*; import at.tuwien.validation.EndpointValidator; @@ -48,6 +49,7 @@ import java.util.UUID; @RequestMapping(path = "/api/database/{databaseId}/subset") public class SubsetEndpoint extends RestEndpoint { + private final MariaDbMapper mariaDbMapper; private final SubsetService subsetService; private final MetadataMapper metadataMapper; private final MetricsService metricsService; @@ -57,9 +59,10 @@ public class SubsetEndpoint extends RestEndpoint { private final EndpointValidator endpointValidator; @Autowired - public SubsetEndpoint(SubsetService subsetService, MetadataMapper metadataMapper, MetricsService metricsService, - StorageService storageService, DatabaseService databaseService, + public SubsetEndpoint(MariaDbMapper mariaDbMapper, SubsetService subsetService, MetadataMapper metadataMapper, + MetricsService metricsService, StorageService storageService, DatabaseService databaseService, CredentialService credentialService, EndpointValidator endpointValidator) { + this.mariaDbMapper = mariaDbMapper; this.subsetService = subsetService; this.metadataMapper = metadataMapper; this.metricsService = metricsService; @@ -188,20 +191,16 @@ public class SubsetEndpoint extends RestEndpoint { return ResponseEntity.ok(subset); case "text/csv": log.trace("accept header matches csv"); - try { - final Dataset<Row> dataset = subsetService.getData(database, subset, null, null); - metricsService.countSubsetGetData(databaseId, subsetId); - final ExportResourceDto resource = storageService.transformDataset(dataset); - final HttpHeaders headers = new HttpHeaders(); - headers.add("Content-Disposition", "attachment; filename=\"" + resource.getFilename() + "\""); - log.trace("export table resulted in resource {}", resource); - return ResponseEntity.ok() - .headers(headers) - .body(resource.getResource()); - } catch (SQLException e) { - log.error("Failed to find data: {}", e.getMessage()); - throw new DatabaseUnavailableException("Failed to find data: " + e.getMessage(), e); - } + final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, null, null); + final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, null, null, null, null); + metricsService.countSubsetGetData(databaseId, subsetId); + final ExportResourceDto resource = storageService.transformDataset(dataset); + final HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Disposition", "attachment; filename=\"" + resource.getFilename() + "\""); + log.trace("export table resulted in resource {}", resource); + return ResponseEntity.ok() + .headers(headers) + .body(resource.getResource()); } throw new FormatNotAvailableException("Must provide either application/json or text/csv value for header 'Accept': provided " + accept + " instead"); } @@ -290,7 +289,7 @@ public class SubsetEndpoint extends RestEndpoint { endpointValidator.validateOnlyPrivateSchemaAccess(database, principal); try { final Long subsetId = subsetService.create(database, data.getStatement(), timestamp, userId); - return getData(databaseId, subsetId, principal, request, page, size); + return getData(databaseId, subsetId, principal, request, timestamp, page, size); } catch (SQLException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); @@ -337,11 +336,12 @@ public class SubsetEndpoint extends RestEndpoint { @NotNull @PathVariable("subsetId") Long subsetId, Principal principal, @NotNull HttpServletRequest request, + @RequestParam(required = false) Instant timestamp, @RequestParam(required = false) Long page, @RequestParam(required = false) Long size) throws PaginationException, DatabaseNotFoundException, RemoteUnavailableException, NotAllowedException, QueryNotFoundException, DatabaseUnavailableException, TableMalformedException, QueryMalformedException, - UserNotFoundException, MetadataServiceException, TableNotFoundException, ViewMalformedException, ViewNotFoundException { + UserNotFoundException, MetadataServiceException, TableNotFoundException, ViewNotFoundException { log.debug("endpoint get subset data, databaseId={}, subsetId={}, principal.name={} page={}, size={}", databaseId, subsetId, principal != null ? principal.getName() : null, page, size); endpointValidator.validateDataParams(page, size); @@ -363,6 +363,10 @@ public class SubsetEndpoint extends RestEndpoint { size = 10L; log.debug("size not set: default to {}", size); } + if (timestamp == null) { + timestamp = Instant.now(); + log.debug("timestamp not set: default to {}", timestamp); + } try { final HttpHeaders headers = new HttpHeaders(); headers.set("X-Id", "" + subsetId); @@ -375,7 +379,8 @@ public class SubsetEndpoint extends RestEndpoint { .headers(headers) .build(); } - final Dataset<Row> dataset = subsetService.getData(database, subset, page, size); + final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, page, size); + final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, page, size, null, null); metricsService.countSubsetGetData(databaseId, subsetId); final String viewName = metadataMapper.queryDtoToViewName(subset); final ViewDto view = databaseService.inspectView(database, viewName); 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 92ba523f36..82ed0a96f7 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 @@ -10,6 +10,7 @@ import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.mapper.MariaDbMapper; import at.tuwien.service.*; import at.tuwien.validation.EndpointValidator; import io.micrometer.observation.annotation.Observed; @@ -48,6 +49,8 @@ import java.util.Map; public class TableEndpoint extends RestEndpoint { private final TableService tableService; + private final MariaDbMapper mariaDbMapper; + private final SubsetService subsetService; private final MetricsService metricsService; private final StorageService storageService; private final DatabaseService databaseService; @@ -56,10 +59,13 @@ public class TableEndpoint extends RestEndpoint { private final MetadataServiceGateway metadataServiceGateway; @Autowired - public TableEndpoint(TableService tableService, MetricsService metricsService, StorageService storageService, - DatabaseService databaseService, CredentialService credentialService, - EndpointValidator endpointValidator, MetadataServiceGateway metadataServiceGateway) { + public TableEndpoint(TableService tableService, MariaDbMapper mariaDbMapper, SubsetService subsetService, + MetricsService metricsService, StorageService storageService, DatabaseService databaseService, + CredentialService credentialService, EndpointValidator endpointValidator, + MetadataServiceGateway metadataServiceGateway) { this.tableService = tableService; + this.mariaDbMapper = mariaDbMapper; + this.subsetService = subsetService; this.metricsService = metricsService; this.storageService = storageService; this.databaseService = databaseService; @@ -287,8 +293,10 @@ public class TableEndpoint extends RestEndpoint { } headers.set("Access-Control-Expose-Headers", "X-Headers"); headers.set("X-Headers", String.join(",", table.getColumns().stream().map(ColumnDto::getInternalName).toList())); - final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(table.getTdbid()), - table.getInternalName(), timestamp, page, size, null, null); + 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); metricsService.countTableGetData(databaseId, tableId); return ResponseEntity.ok() .headers(headers) @@ -624,8 +632,10 @@ public class TableEndpoint extends RestEndpoint { } credentialService.getAccess(databaseId, getId(principal)); } - final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(table.getTdbid()), - table.getInternalName(), timestamp, null, null, null, null); + 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); metricsService.countTableGetData(databaseId, tableId); final ExportResourceDto resource = storageService.transformDataset(dataset); final HttpHeaders headers = new HttpHeaders(); 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 c662bf49c1..d4eccd0772 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 @@ -1,12 +1,13 @@ package at.tuwien.endpoints; import at.tuwien.ExportResourceDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.exception.*; +import at.tuwien.mapper.MariaDbMapper; import at.tuwien.service.*; import at.tuwien.validation.EndpointValidator; import io.micrometer.observation.annotation.Observed; @@ -45,6 +46,8 @@ 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; private final StorageService storageService; private final DatabaseService databaseService; @@ -52,11 +55,14 @@ public class ViewEndpoint extends RestEndpoint { private final EndpointValidator endpointValidator; @Autowired - public ViewEndpoint(ViewService viewService, TableService tableService, MetricsService metricsService, - StorageService storageService, DatabaseService databaseService, - CredentialService credentialService, EndpointValidator endpointValidator) { + public ViewEndpoint(ViewService viewService, TableService tableService, 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; this.storageService = storageService; this.databaseService = databaseService; @@ -147,7 +153,7 @@ public class ViewEndpoint extends RestEndpoint { schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<ViewDto> create(@NotNull @PathVariable("databaseId") Long databaseId, - @Valid @RequestBody ViewCreateDto data) throws DatabaseUnavailableException, + @Valid @RequestBody CreateViewDto data) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, ViewMalformedException, MetadataServiceException { log.debug("endpoint create view, databaseId={}, data.name={}", databaseId, data.getName()); final DatabaseDto database = credentialService.getDatabase(databaseId); @@ -288,8 +294,10 @@ public class ViewEndpoint extends RestEndpoint { } headers.set("Access-Control-Expose-Headers", "X-Headers"); headers.set("X-Headers", String.join(",", view.getColumns().stream().map(ViewColumnDto::getInternalName).toList())); - final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(databaseId), - view.getInternalName(), timestamp, page, size, null, null); + 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); metricsService.countViewGetData(databaseId, viewId); return ResponseEntity.ok() .headers(headers) @@ -353,8 +361,10 @@ public class ViewEndpoint extends RestEndpoint { } credentialService.getAccess(databaseId, getId(principal)); } - final Dataset<Row> dataset = tableService.getData(credentialService.getDatabase(databaseId), - view.getInternalName(), timestamp, null, null, null, null); + 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); 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/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java index 002374fe9d..53393be407 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 @@ -1,5 +1,6 @@ package at.tuwien.endpoint; +import at.tuwien.api.SortTypeDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ExecuteStatementDto; import at.tuwien.api.database.query.QueryDto; @@ -206,7 +207,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_DTO); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); - when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); /* test */ @@ -232,7 +233,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void findById_publicDataPublicSchemaAnonymous_fails() throws DatabaseNotFoundException, SQLException, RemoteUnavailableException, UserNotFoundException, QueryMalformedException, StorageUnavailableException, - QueryNotFoundException, MetadataServiceException, TableNotFoundException, ViewMalformedException { + QueryNotFoundException, MetadataServiceException, TableNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ @@ -240,7 +241,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_DTO); when(subsetService.findById(DATABASE_4_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -289,8 +290,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME) public void findById_publicDataPrivateSchemaUnavailableExport_fails() throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException, SQLException, QueryMalformedException, - UserNotFoundException, QueryNotFoundException, TableNotFoundException, ViewMalformedException, - StorageUnavailableException { + UserNotFoundException, QueryNotFoundException, TableNotFoundException, StorageUnavailableException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) @@ -301,7 +301,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(EXPORT_RESOURCE_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_DTO), eq(QUERY_5_DTO), eq(0L), eq(10L)); + .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString()); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -324,7 +324,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_DTO); - when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); @@ -370,7 +370,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_DTO); when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -394,7 +394,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L)); + .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString()); when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); when(metadataServiceGateway.getAccess(DATABASE_3_ID, USER_1_ID)) @@ -447,7 +447,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) .thenReturn(DATABASE_3_DTO); - when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) .thenReturn(QUERY_5_DTO); @@ -475,7 +475,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_4_DTO); when(subsetService.findById(eq(DATABASE_4_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(eq(DATABASE_4_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -501,7 +501,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1_DTO); when(subsetService.findById(eq(DATABASE_1_DTO), anyLong())) .thenReturn(QUERY_1_DTO); - when(subsetService.getData(eq(DATABASE_1_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -514,7 +514,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void create_privateDataPublicSchemaAnonymous_fails() throws DatabaseNotFoundException, SQLException, MetadataServiceException, UserNotFoundException, QueryNotFoundException, QueryMalformedException, - TableNotFoundException, ViewMalformedException, ViewNotFoundException, RemoteUnavailableException { + TableNotFoundException, RemoteUnavailableException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); final ExecuteStatementDto request = ExecuteStatementDto.builder() .statement(QUERY_5_STATEMENT) @@ -525,7 +525,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_2_DTO); when(subsetService.findById(eq(DATABASE_2_DTO), anyLong())) .thenReturn(QUERY_2_DTO); - when(subsetService.getData(eq(DATABASE_2_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -540,7 +540,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, NotAllowedException, SQLException, QueryNotFoundException, TableMalformedException, QueryMalformedException, DatabaseUnavailableException, PaginationException, MetadataServiceException, TableNotFoundException, - ViewMalformedException, ViewNotFoundException { + ViewNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ @@ -550,13 +550,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_DTO); when(subsetService.reExecuteCount(DATABASE_3_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); - when(subsetService.getData(eq(DATABASE_3_DTO), any(QueryDto.class), eq(0L), eq(10L))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); /* test */ - final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_3_ID, QUERY_5_ID, null, httpServletRequest, null, null); + final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_3_ID, QUERY_5_ID, null, httpServletRequest, null, null, null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -565,7 +565,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_head_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, NotAllowedException, SQLException, QueryNotFoundException, TableMalformedException, QueryMalformedException, DatabaseUnavailableException, PaginationException, MetadataServiceException, - TableNotFoundException, ViewMalformedException, ViewNotFoundException { + TableNotFoundException, ViewNotFoundException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) @@ -578,7 +578,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn("HEAD"); /* test */ - final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_3_ID, QUERY_5_ID, null, httpServletRequest, null, null); + final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_3_ID, QUERY_5_ID, null, httpServletRequest, null, null, null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getHeaders().get("X-Count")); assertEquals(1, response.getHeaders().get("X-Count").size()); @@ -590,7 +590,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_private_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException, TableMalformedException, QueryMalformedException, QueryNotFoundException, PaginationException, SQLException, - MetadataServiceException, TableNotFoundException, ViewMalformedException, ViewNotFoundException { + MetadataServiceException, TableNotFoundException, ViewNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ @@ -600,13 +600,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_1_DTO); when(subsetService.reExecuteCount(DATABASE_1_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); - when(subsetService.getData(DATABASE_1_DTO, QUERY_1_DTO, 0L, 10L)) + when(subsetService.getData(DATABASE_1_DTO, QUERY_1_STATEMENT, Instant.now(), 0L, 10L, null, null)) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); /* test */ - final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null); + final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null, null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); } @@ -622,7 +622,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* test */ assertThrows(NotAllowedException.class, () -> { - subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, null, httpServletRequest, null, null); + subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, null, httpServletRequest, null, null, null); }); } @@ -640,7 +640,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* test */ assertThrows(NotAllowedException.class, () -> { - subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null); + subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null, null); }); } @@ -649,7 +649,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_privateHead_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException, TableMalformedException, QueryMalformedException, QueryNotFoundException, PaginationException, SQLException, - MetadataServiceException, TableNotFoundException, ViewMalformedException, ViewNotFoundException { + MetadataServiceException, TableNotFoundException, ViewNotFoundException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) @@ -662,7 +662,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn("HEAD"); /* test */ - final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null); + final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null, null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getHeaders().get("X-Count")); assertEquals(1, response.getHeaders().get("X-Count").size()); @@ -673,7 +673,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME) public void getData_unavailable_fails() throws DatabaseNotFoundException, RemoteUnavailableException, SQLException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, QueryMalformedException, - TableNotFoundException, ViewMalformedException { + TableNotFoundException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) @@ -684,11 +684,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn("GET"); doThrow(SQLException.class) .when(subsetService) - .getData(DATABASE_1_DTO, QUERY_1_DTO, 0L, 10L); + .getData(DATABASE_1_DTO, QUERY_1_STATEMENT, Instant.now(), 0L, 10L, null, null); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { - subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null); + subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null, null); }); } 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 c7a74de17f..ecd745e3ee 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 @@ -8,6 +8,7 @@ import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.CredentialService; import at.tuwien.service.DatabaseService; +import at.tuwien.service.SubsetService; import at.tuwien.service.TableService; import at.tuwien.test.AbstractUnitTest; import jakarta.servlet.http.HttpServletRequest; @@ -59,6 +60,9 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @MockBean private TableService tableService; + @MockBean + private SubsetService subsetService; + @MockBean private DatabaseService databaseService; @@ -283,7 +287,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -306,7 +310,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_DTO); when(tableService.getCount(eq(TABLE_8_DTO), any(Instant.class))) .thenReturn(3L); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -363,7 +367,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); doThrow(QueryMalformedException.class) - .when(tableService) + .when(subsetService) .getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -405,7 +409,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -1146,7 +1150,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_DTO); - when(tableService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -1167,7 +1171,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .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 8586f8f92d..c69c8d338e 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 @@ -5,7 +5,7 @@ import at.tuwien.endpoints.ViewEndpoint; import at.tuwien.exception.*; import at.tuwien.service.CredentialService; import at.tuwien.service.DatabaseService; -import at.tuwien.service.TableService; +import at.tuwien.service.SubsetService; import at.tuwien.service.ViewService; import at.tuwien.test.AbstractUnitTest; import jakarta.servlet.http.HttpServletRequest; @@ -51,7 +51,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { private HttpServletRequest httpServletRequest; @MockBean - private TableService tableService; + private SubsetService subsetService; @Autowired private ViewEndpoint viewEndpoint; @@ -282,7 +282,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { .thenReturn(VIEW_1_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID)) .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO); - when(tableService.getData(eq(DATABASE_1_DTO), eq(VIEW_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_1_DTO), eq(VIEW_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); 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 e48f0c048d..120fe49d8f 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 @@ -140,7 +140,7 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* ignore */ } try { - subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, 0L, 10L); + subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, 0L, 10L); } catch (Exception e) { /* ignore */ } 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 2b7476e50f..550589df79 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 @@ -4,12 +4,12 @@ import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; -import at.tuwien.api.database.table.constraints.ConstraintsCreateDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; -import at.tuwien.api.database.table.constraints.foreign.ForeignKeyCreateDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; +import at.tuwien.api.database.table.constraints.foreign.CreateForeignKeyDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyReferenceDto; import at.tuwien.api.database.table.constraints.foreign.ReferenceTypeDto; @@ -619,8 +619,8 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() .name("missing_foreign_key") .columns(List.of()) - .constraints(ConstraintsCreateDto.builder() - .foreignKeys(List.of(ForeignKeyCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() + .foreignKeys(List.of(CreateForeignKeyDto.builder() .columns(List.of("i_do_not_exist")) .referencedTable("neither_do_i") .referencedColumns(List.of("behold")) @@ -639,27 +639,27 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { TableExistsException { final at.tuwien.api.database.table.internal.TableCreateDto request = TableCreateDto.builder() .name("composite_primary_key") - .columns(List.of(ColumnCreateDto.builder() + .columns(List.of(CreateTableColumnDto.builder() .name("name") .type(ColumnTypeDto.VARCHAR) .size(255L) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("lat") .type(ColumnTypeDto.DECIMAL) .size(10L) .d(10L) .nullAllowed(false) .build(), - ColumnCreateDto.builder() + CreateTableColumnDto.builder() .name("lng") .type(ColumnTypeDto.DECIMAL) .size(10L) .d(10L) .nullAllowed(false) .build())) - .constraints(ConstraintsCreateDto.builder() + .constraints(CreateTableConstraintsDto.builder() .primaryKey(Set.of("lat", "lng")) .foreignKeys(List.of()) .checks(Set.of()) 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 d3af548164..0e89f79cb1 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 @@ -4,9 +4,9 @@ import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TupleDeleteDto; import at.tuwien.api.database.table.TupleDto; import at.tuwien.api.database.table.TupleUpdateDto; -import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.ColumnTypeDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.exception.QueryMalformedException; import at.tuwien.exception.TableMalformedException; import at.tuwien.utils.MariaDbUtil; @@ -237,7 +237,7 @@ public interface MariaDbMapper { * @param data The column definition. * @return The MySQL string. */ - default String columnTypeDtoToDataType(ColumnCreateDto data) { + default String columnTypeDtoToDataType(CreateTableColumnDto data) { return switch (data.getType()) { case CHAR -> "CHAR(" + Objects.requireNonNullElse(data.getSize(), "1") + ")"; case VARCHAR -> "VARCHAR(" + Objects.requireNonNullElse(data.getSize(), "255") + ")"; @@ -260,7 +260,7 @@ public interface MariaDbMapper { }; } - default String columnCreateDtoToPrimaryKeyLengthSpecification(ColumnCreateDto data) { + default String columnCreateDtoToPrimaryKeyLengthSpecification(CreateTableColumnDto data) { if (EnumSet.of(ColumnTypeDto.BLOB, ColumnTypeDto.TEXT).contains(data.getType())) { return "(" + Objects.requireNonNullElse(data.getIndexLength(), 255) + ")"; } @@ -309,7 +309,7 @@ public interface MariaDbMapper { .append("` ("); log.trace("primary key column(s) exist: {}", data.getConstraints().getPrimaryKey()); final int[] idx = {0}; - for (ColumnCreateDto column : data.getColumns()) { + for (CreateTableColumnDto column : data.getColumns()) { stringBuilder.append(idx[0]++ > 0 ? ", " : "") .append("`") .append(nameToInternalName(column.getName())) @@ -336,11 +336,11 @@ public interface MariaDbMapper { .getPrimaryKey() .stream() .map(c -> { - final Optional<ColumnCreateDto> optional = data.getColumns() + final Optional<CreateTableColumnDto> optional = data.getColumns() .stream() .filter(cc -> cc.getName().equals(c)) .findFirst(); - log.trace("lookup {} in columns: {}", c, data.getColumns().stream().map(ColumnCreateDto::getName).toList()); + log.trace("lookup {} in columns: {}", c, data.getColumns().stream().map(CreateTableColumnDto::getName).toList()); return "`" + nameToInternalName(c) + "`" + columnCreateDtoToPrimaryKeyLengthSpecification(optional.get()); }) .toArray(String[]::new))) @@ -725,6 +725,30 @@ public interface MariaDbMapper { } } + default String rawSelectQuery(String query, Instant timestamp, Long page, Long size) { + /* query check (this is enforced by the db also) */ + final StringBuilder statement = new StringBuilder("SELECT * FROM (") + .append(query); + statement.append(")"); + if (timestamp != null) { + statement.append(" FOR SYSTEM_TIME AS OF TIMESTAMP '") + .append(mariaDbFormatter.format(timestamp)) + .append("'"); + } + statement.append(" as tbl"); + /* pagination */ + if (size != null && page != null) { + log.trace("pagination size/limit of {}", size); + statement.append(" LIMIT ") + .append(size); + log.trace("pagination page/offset of {}", page); + statement.append(" OFFSET ") + .append(page * size); + } + log.trace("mapped select query: {}", statement); + return statement.toString(); + } + default String defaultRawSelectQuery(String databaseName, String tableOrViewName, Instant timestamp, Long page, Long size) { /* query check (this is enforced by the db also) */ diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 5a120f44d2..314148663b 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -1,7 +1,7 @@ package at.tuwien.service; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.internal.TableCreateDto; @@ -48,7 +48,7 @@ public interface DatabaseService { * @throws SQLException * @throws ViewMalformedException */ - ViewDto createView(DatabaseDto database, ViewCreateDto data) throws SQLException, + ViewDto createView(DatabaseDto database, CreateViewDto data) throws SQLException, ViewMalformedException; /** 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 b2de5cecca..e2fc560027 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,5 +1,6 @@ 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.*; @@ -13,22 +14,6 @@ import java.util.UUID; public interface SubsetService { - /** - * Retrieve data from a subset in a database and optionally paginate with number of page and size of results. - * - * @param database The database. - * @param subset The subset. - * @param page The page number. - * @param size Te result size. - * @return The data. - * @throws ViewMalformedException The view is malformed. - * @throws SQLException The connection to the database could not be established. - * @throws QueryMalformedException The mapped query produced a database error. - * @throws TableNotFoundException The database table is malformed. - */ - Dataset<Row> getData(DatabaseDto database, QueryDto subset, Long page, Long size) - throws ViewMalformedException, SQLException, QueryMalformedException, TableNotFoundException; - /** * Creates a subset from the given statement at given time in the given database. * @@ -55,6 +40,21 @@ public interface SubsetService { Long reExecuteCount(DatabaseDto database, QueryDto query) throws TableMalformedException, SQLException, QueryMalformedException; + /** + * Retrieve data from a subset in a database and optionally paginate with number of page and size of results. + * + * @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; + /** * Finds all queries in the query store of the given database id and query id. * diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java index 636e12ceb6..f664a82cf3 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/TableService.java @@ -1,12 +1,8 @@ package at.tuwien.service; -import at.tuwien.api.SortTypeDto; -import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.exception.*; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; import java.sql.SQLException; import java.time.Instant; @@ -122,8 +118,4 @@ public interface TableService { */ void updateTuple(TableDto table, TupleUpdateDto data) throws SQLException, QueryMalformedException, TableMalformedException; - - Dataset<Row> getData(DatabaseDto database, String tableOrView, Instant timestamp, - Long page, Long size, SortTypeDto sortDirection, String sortColumn) - throws QueryMalformedException, TableNotFoundException; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java index c21d37721b..1786ca5cb4 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -49,15 +49,11 @@ public abstract class DataConnector { } public String getSparkUrl(TableDto table) { - return getSparkUrl(table.getDatabase().getContainer(), null); + return getSparkUrl(table.getDatabase().getContainer(), table.getDatabase().getInternalName()); } public String getSparkUrl(DatabaseDto databaseDto) { - return getSparkUrl(databaseDto.getContainer(), null); - } - - public String getSparkUrl(ContainerDto container) { - return getSparkUrl(container, null); + return getSparkUrl(databaseDto.getContainer(), databaseDto.getInternalName()); } public String getJdbcUrl(ContainerDto container, String databaseName) { 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 c4afe44287..d733800a36 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 @@ -1,7 +1,7 @@ package at.tuwien.service.impl; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; @@ -146,7 +146,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas } @Override - public ViewDto createView(DatabaseDto database, ViewCreateDto data) throws SQLException, + public ViewDto createView(DatabaseDto database, CreateViewDto data) throws SQLException, ViewMalformedException { final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); 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 0a208b2890..bdfdb14838 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,7 +1,7 @@ package at.tuwien.service.impl; +import at.tuwien.api.SortTypeDto; import at.tuwien.api.database.DatabaseDto; -import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierTypeDto; @@ -9,14 +9,13 @@ import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; -import at.tuwien.mapper.MetadataMapper; -import at.tuwien.service.DatabaseService; import at.tuwien.service.SubsetService; -import at.tuwien.service.TableService; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; +import org.apache.spark.sql.SparkSession; +import org.apache.spark.sql.catalyst.ExtendedAnalysisException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,40 +30,41 @@ import java.util.UUID; public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetService { private final DataMapper dataMapper; - private final TableService tableService; + private final SparkSession sparkSession; private final MariaDbMapper mariaDbMapper; - private final MetadataMapper metadataMapper; - private final DatabaseService databaseService; private final MetadataServiceGateway metadataServiceGateway; @Autowired - public SubsetServiceMariaDbImpl(DataMapper dataMapper, TableService tableService, MariaDbMapper mariaDbMapper, - MetadataMapper metadataMapper, DatabaseService databaseService, + public SubsetServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper, SparkSession sparkSession, MetadataServiceGateway metadataServiceGateway) { this.dataMapper = dataMapper; - this.tableService = tableService; + this.sparkSession = sparkSession; this.mariaDbMapper = mariaDbMapper; - this.metadataMapper = metadataMapper; - this.databaseService = databaseService; this.metadataServiceGateway = metadataServiceGateway; } @Override - public Dataset<Row> getData(DatabaseDto database, QueryDto subset, Long page, Long size) - throws ViewMalformedException, SQLException, QueryMalformedException, TableNotFoundException { - final String viewName = metadataMapper.queryDtoToViewName(subset); - if (!databaseService.existsView(database, viewName)) { - log.warn("Missing internal view {} for subset with id {}: create it from subset query", viewName, subset.getId()); - databaseService.createView(database, ViewCreateDto.builder() - .isPublic(false) - .isSchemaPublic(false) - .name(viewName) - .query(subset.getQuery()) - .build()); - } else { - log.debug("internal view {}.{} for subset with id {} exists", database.getInternalName(), viewName, subset.getId()); + public Dataset<Row> getData(DatabaseDto database, String query, Instant timestamp, Long page, Long size, + SortTypeDto sortDirection, String sortColumn) + throws QueryMalformedException, TableNotFoundException { + try { + return sparkSession.read() + .format("jdbc") + .option("user", database.getContainer().getUsername()) + .option("password", database.getContainer().getPassword()) + .option("url", getSparkUrl(database)) + .option("query", query) + .load(); + } catch (Exception e) { + if (e instanceof ExtendedAnalysisException exception) { + if (exception.getSimpleMessage().contains("TABLE_OR_VIEW_NOT_FOUND")) { + log.error("Failed to find named reference: {}", exception.getSimpleMessage()); + throw new TableNotFoundException("Failed to find named reference: " + exception.getSimpleMessage()) /* remove throwable on purpose, clutters the output */; + } + } + log.error("Malformed query: {}", e.getMessage()); + throw new QueryMalformedException("Malformed query: " + e.getMessage(), e); } - return tableService.getData(database, viewName, subset.getExecution(), page, size, null, null); } @Override diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java index 4d4121f060..466f7539fd 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/TableServiceMariaDbImpl.java @@ -1,7 +1,5 @@ package at.tuwien.service.impl; -import at.tuwien.api.SortTypeDto; -import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.api.database.table.columns.ColumnDto; @@ -16,8 +14,10 @@ import at.tuwien.service.TableService; import at.tuwien.utils.MariaDbUtil; import com.mchange.v2.c3p0.ComboPooledDataSource; import lombok.extern.log4j.Log4j2; -import org.apache.spark.sql.*; -import org.apache.spark.sql.catalyst.ExtendedAnalysisException; +import org.apache.spark.sql.AnalysisException; +import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.Row; +import org.apache.spark.sql.SaveMode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,16 +36,14 @@ import java.util.Properties; public class TableServiceMariaDbImpl extends DataConnector implements TableService { private final DataMapper dataMapper; - private final SparkSession sparkSession; private final MariaDbMapper mariaDbMapper; private final StorageService storageService; private final DatabaseService databaseService; @Autowired - public TableServiceMariaDbImpl(DataMapper dataMapper, SparkSession sparkSession, MariaDbMapper mariaDbMapper, - StorageService storageService, DatabaseService databaseService) { + public TableServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper, StorageService storageService, + DatabaseService databaseService) { this.dataMapper = dataMapper; - this.sparkSession = sparkSession; this.mariaDbMapper = mariaDbMapper; this.storageService = storageService; this.databaseService = databaseService; @@ -368,30 +366,4 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi .getColumnType(); } - @Override - public Dataset<Row> getData(DatabaseDto database, String tableOrView, Instant timestamp, - Long page, Long size, SortTypeDto sortDirection, String sortColumn) - throws QueryMalformedException, TableNotFoundException { - try { - return sparkSession.read() - .format("jdbc") - .option("user", database.getContainer().getUsername()) - .option("password", database.getContainer().getPassword()) - .option("url", getSparkUrl(database)) - .option("query", mariaDbMapper.defaultRawSelectQuery(database.getInternalName(), tableOrView, - timestamp, page, size)) - .load(); - - } catch (Exception e) { - if (e instanceof ExtendedAnalysisException exception) { - if (exception.getSimpleMessage().contains("TABLE_OR_VIEW_NOT_FOUND")) { - log.error("Failed to find named reference: {}", exception.getSimpleMessage()); - throw new TableNotFoundException("Failed to find named reference: " + exception.getSimpleMessage()) /* remove throwable on purpose, clutters the output */; - } - } - log.error("Malformed query: {}", e.getMessage()); - throw new QueryMalformedException("Malformed query: " + e.getMessage(), e); - } - } - } -- GitLab From f2e64511686357c28f8418b9681a370167d3aeaa Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 24 Jan 2025 19:36:56 +0100 Subject: [PATCH 19/52] Fixed the tests with *magic* Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/.openapi/api-data.yaml | 372 +++--- .docs/.openapi/api-metadata.yaml | 814 ++++++------- .docs/.openapi/api.yaml | 1029 +++++++++-------- .../at/tuwien/endpoints/SubsetEndpoint.java | 12 +- .../tuwien/validation/EndpointValidator.java | 10 +- .../endpoint/AccessEndpointUnitTest.java | 30 +- .../endpoint/DatabaseEndpointUnitTest.java | 22 +- .../endpoint/SubsetEndpointUnitTest.java | 260 ++--- .../endpoint/TableEndpointUnitTest.java | 189 +-- .../tuwien/endpoint/ViewEndpointUnitTest.java | 57 +- .../MetadataServiceGatewayUnitTest.java | 12 +- .../DefaultListenerIntegrationTest.java | 14 +- .../listener/DefaultListenerUnitTest.java | 14 +- .../at/tuwien/mvc/SubsetEndpointMvcTest.java | 12 +- .../ContainerServiceIntegrationTest.java | 38 +- .../service/CredentialServiceUnitTest.java | 30 +- .../DatabaseServiceIntegrationTest.java | 63 +- .../service/QueueServiceIntegrationTest.java | 12 +- .../service/SubsetServiceIntegrationTest.java | 22 +- .../service/TableServiceIntegrationTest.java | 167 +-- .../service/ViewServiceIntegrationTest.java | 4 +- .../at/tuwien/listener/DefaultListener.java | 11 +- .../java/at/tuwien/mapper/DataMapper.java | 1 + .../java/at/tuwien/mapper/MariaDbMapper.java | 4 +- .../java/at/tuwien/mapper/MetadataMapper.java | 2 - .../at/tuwien/service/DatabaseService.java | 3 - .../at/tuwien/service/impl/DataConnector.java | 4 +- .../impl/DatabaseServiceMariaDbImpl.java | 29 +- .../foreign/ForeignKeyBriefDto.java | 1 - .../java/at/tuwien/test/AbstractUnitTest.java | 28 +- .../main/java/at/tuwien/test/BaseTest.java | 91 +- 31 files changed, 1650 insertions(+), 1707 deletions(-) diff --git a/.docs/.openapi/api-data.yaml b/.docs/.openapi/api-data.yaml index fad4c0fd74..bd14ba5505 100644 --- a/.docs/.openapi/api-data.yaml +++ b/.docs/.openapi/api-data.yaml @@ -59,35 +59,26 @@ paths: type: string format: date-time responses: - "200": - description: Retrieved view data - headers: - Access-Control-Expose-Headers: - description: Expose `X-Count` custom header - required: true - style: simple - X-Count: - description: Number of rows - required: true - style: simple + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: - type: string - "400": - description: Request pagination is malformed + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find view in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "409": + description: View schema could not be mapped content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find view in metadata database + "400": + description: Request pagination is malformed content: application/json: schema: @@ -98,12 +89,21 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: View schema could not be mapped + "200": + description: Retrieved view data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + type: string security: - basicAuth: [] - bearerAuth: [] @@ -147,35 +147,26 @@ paths: type: string format: date-time responses: - "200": - description: Retrieved view data - headers: - Access-Control-Expose-Headers: - description: Expose `X-Count` custom header - required: true - style: simple - X-Count: - description: Number of rows - required: true - style: simple + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: - type: string - "400": - description: Request pagination is malformed + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find view in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "409": + description: View schema could not be mapped content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find view in metadata database + "400": + description: Request pagination is malformed content: application/json: schema: @@ -186,12 +177,21 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: View schema could not be mapped + "200": + description: Retrieved view data + headers: + Access-Control-Expose-Headers: + description: Expose `X-Count` custom header + required: true + style: simple + X-Count: + description: Number of rows + required: true + style: simple content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + type: string security: - basicAuth: [] - bearerAuth: [] @@ -237,8 +237,8 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to get table data + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -270,8 +270,8 @@ paths: application/json: schema: type: string - "400": - description: Request pagination or table data select query is malformed + "403": + description: Not allowed to get table data content: application/json: schema: @@ -312,8 +312,8 @@ paths: $ref: "#/components/schemas/TupleUpdateDto" required: true responses: - "403": - description: Update table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -324,16 +324,16 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Updated table data "404": description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "202": + description: Updated table data + "403": + description: Update table data not allowed content: application/json: schema: @@ -374,30 +374,30 @@ paths: $ref: "#/components/schemas/TupleDto" required: true responses: - "503": - description: Failed to establish connection with the metadata service or - storage service + "404": + description: Failed to find table in metadata database or blob in storage + service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Create table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table in metadata database or blob in storage - service + "201": + description: Created table data + "503": + description: Failed to establish connection with the metadata service or + storage service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created table data - "400": - description: Request pagination or table data select query is malformed + "403": + description: Create table data not allowed content: application/json: schema: @@ -438,8 +438,8 @@ paths: $ref: "#/components/schemas/TupleDeleteDto" required: true responses: - "403": - description: Delete table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -450,16 +450,16 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted table data "404": description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Request pagination or table data select query is malformed + "202": + description: Deleted table data + "403": + description: Delete table data not allowed content: application/json: schema: @@ -508,8 +508,8 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to get table data + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -541,8 +541,8 @@ paths: application/json: schema: type: string - "400": - description: Request pagination or table data select query is malformed + "403": + description: Not allowed to get table data content: application/json: schema: @@ -573,6 +573,12 @@ paths: schema: type: integer format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time - name: page in: query required: false @@ -586,31 +592,12 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to retrieve subset data - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved subset data headers: @@ -632,6 +619,25 @@ paths: application/json: schema: type: string + "400": + description: Invalid pagination + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -657,6 +663,12 @@ paths: schema: type: integer format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time - name: page in: query required: false @@ -670,31 +682,12 @@ paths: type: integer format: int64 responses: - "403": - description: Not allowed to retrieve subset data - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid pagination - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Retrieved subset data headers: @@ -716,6 +709,25 @@ paths: application/json: schema: type: string + "400": + description: Invalid pagination + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to retrieve subset data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -746,21 +758,20 @@ paths: $ref: "#/components/schemas/QueryPersistDto" required: true responses: - "202": - description: Persisted subset + "503": + description: Failed to communicate with database content: application/json: schema: - $ref: "#/components/schemas/QueryDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Persisted subset content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to communicate with database + $ref: "#/components/schemas/QueryDto" + "403": + description: Not allowed to persist subset content: application/json: schema: @@ -771,8 +782,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to persist subset + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -823,26 +835,26 @@ paths: responses: "202": description: Imported dataset successfully - "403": - description: Import table dataset not allowed + "503": + description: Failed to establish connection with the metadata service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Dataset and/or query are malformed + "404": + description: Failed to find table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to establish connection with the metadata service + "403": + description: Import table dataset not allowed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table in metadata database + "400": + description: Dataset and/or query are malformed content: application/json: schema: @@ -874,15 +886,15 @@ paths: schema: type: boolean responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "503": + description: Failed to communicate with database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to find subsets + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: @@ -895,8 +907,8 @@ paths: type: array items: $ref: "#/components/schemas/QueryDto" - "503": - description: Failed to communicate with database + "403": + description: Not allowed to find subsets content: application/json: schema: @@ -945,15 +957,14 @@ paths: $ref: "#/components/schemas/ExecuteStatementDto" required: true responses: - "417": - description: Failed to insert query into query store of data database + "201": + description: Created subset content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database or query in query - store of the data database + type: string + "503": + description: Failed to communicate with database content: application/json: schema: @@ -970,20 +981,21 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created subset + "404": + description: Failed to find database in metadata database or query in query + store of the data database content: application/json: schema: - type: string - "503": - description: Failed to communicate with database + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Malformed select query content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Malformed select query + "417": + description: Failed to insert query into query store of data database content: application/json: schema: @@ -1020,12 +1032,6 @@ paths: type: string format: date-time responses: - "404": - description: Failed to find view in metadata database or export dataset - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to establish connection with the metadata service content: @@ -1038,6 +1044,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find view in metadata database or export dataset + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Exported view data content: @@ -1083,8 +1095,8 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find table history in data database + "403": + description: Find table history not allowed content: application/json: schema: @@ -1095,8 +1107,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Find table history not allowed + "404": + description: Failed to find table history in data database content: application/json: schema: @@ -1147,8 +1159,8 @@ paths: type: string format: date-time responses: - "403": - description: Export table data not allowed + "400": + description: Request pagination or table data select query is malformed content: application/json: schema: @@ -1159,12 +1171,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find table in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Exported table data content: @@ -1172,8 +1178,14 @@ paths: schema: type: string format: binary - "400": - description: Request pagination or table data select query is malformed + "404": + description: Failed to find table in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Export table data not allowed content: application/json: schema: @@ -1217,9 +1229,8 @@ paths: type: string format: date-time responses: - "404": - description: Failed to find database in metadata database or query in query - store of the data database + "503": + description: Failed to communicate with database content: application/json: schema: @@ -1236,12 +1247,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to communicate with database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found subset content: @@ -1249,6 +1254,13 @@ paths: schema: $ref: "#/components/schemas/QueryDto" text/csv: {} + "404": + description: Failed to find database in metadata database or query in query + store of the data database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "400": description: Malformed select query content: diff --git a/.docs/.openapi/api-metadata.yaml b/.docs/.openapi/api-metadata.yaml index 6792f0f0e9..18fb71db29 100644 --- a/.docs/.openapi/api-metadata.yaml +++ b/.docs/.openapi/api-metadata.yaml @@ -64,18 +64,25 @@ paths: $ref: "#/components/schemas/CreateDatabaseDto" required: true responses: - "409": - description: Query store could not be created + "403": + description: Database create permission is missing or grant permissions + at broker service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Created a new database + "423": + description: Database quota exceeded content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" + $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Database create query is malformed or image is not supported + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to save in search service content: @@ -94,21 +101,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Database create permission is missing or grant permissions - at broker service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "423": - description: Database quota exceeded + "201": + description: Created a new database content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Database create query is malformed or image is not supported + $ref: "#/components/schemas/DatabaseBriefDto" + "409": + description: Query store could not be created content: application/json: schema: @@ -173,6 +173,12 @@ paths: type: string format: uuid responses: + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" "403": description: No access to this database content: @@ -185,12 +191,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Found database access - content: - application/json: - schema: - $ref: "#/components/schemas/DatabaseAccessDto" security: - bearerAuth: [] - basicAuth: [] @@ -228,29 +228,29 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database or user not found + "502": + description: Access could not be updated due to connection error in the + data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Modify access query or database connection is malformed + "503": + description: Access could not be updated in the data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified access - "502": - description: Access could not be updated due to connection error in the - data service + "404": + description: Database or user not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Access could not be updated in the data service + "400": + description: Modify access query or database connection is malformed content: application/json: schema: @@ -291,8 +291,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database or user not found + "503": + description: Access could not be created in the data service content: application/json: schema: @@ -309,8 +309,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Access could not be created in the data service + "404": + description: Database or user not found content: application/json: schema: @@ -351,6 +351,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Revoke of access not permitted as no access was found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted access "400": description: Modify access query or database connection is malformed content: @@ -363,20 +371,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted access "503": description: Access could not be revoked in the data service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Revoke of access not permitted as no access was found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -404,6 +404,12 @@ paths: type: string format: uuid responses: + "200": + description: Found database access + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseAccessDto" "403": description: No access to this database content: @@ -416,12 +422,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Found database access - content: - application/json: - schema: - $ref: "#/components/schemas/DatabaseAccessDto" security: - bearerAuth: [] - basicAuth: [] @@ -443,8 +443,8 @@ paths: type: string format: uuid responses: - "403": - description: Find user is not permitted + "404": + description: User was not found content: application/json: schema: @@ -455,8 +455,8 @@ paths: application/json: schema: $ref: "#/components/schemas/UserDto" - "404": - description: User was not found + "403": + description: Find user is not permitted content: application/json: schema: @@ -484,26 +484,26 @@ paths: $ref: "#/components/schemas/UserUpdateDto" required: true responses: - "400": - description: Modify user query is malformed + "202": + description: Modified user information content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database/user in metadata database + $ref: "#/components/schemas/UserDto" + "403": + description: Not allowed to modify user metadata content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Modified user information + "400": + description: Modify user query is malformed content: application/json: schema: - $ref: "#/components/schemas/UserDto" - "403": - description: Not allowed to modify user metadata + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database/user in metadata database content: application/json: schema: @@ -532,14 +532,20 @@ paths: $ref: "#/components/schemas/UserPasswordDto" required: true responses: - "403": - description: Not allowed to change foreign user password + "400": + description: Invalid password payload content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" "202": description: Modified user password + "403": + description: Not allowed to change foreign user password + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Failed to find database/user in metadata database content: @@ -558,12 +564,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Invalid password payload - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -581,8 +581,8 @@ paths: $ref: "#/components/schemas/RefreshTokenRequestDto" required: true responses: - "502": - description: Connection to auth service failed + "403": + description: Not allowed content: application/json: schema: @@ -599,8 +599,8 @@ paths: application/json: schema: $ref: "#/components/schemas/TokenDto" - "403": - description: Not allowed + "502": + description: Connection to auth service failed content: application/json: schema: @@ -618,18 +618,31 @@ paths: $ref: "#/components/schemas/LoginRequestDto" required: true responses: - "202": - description: Obtained user token + "404": + description: Failed to find user in auth database content: application/json: schema: - $ref: "#/components/schemas/TokenDto" + $ref: "#/components/schemas/ApiErrorDto" + "428": + description: Account is not fully setup in auth service (requires password + change?) + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "400": description: Invalid login request content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Obtained user token + content: + application/json: + schema: + $ref: "#/components/schemas/TokenDto" "403": description: Not allowed to get token content: @@ -648,19 +661,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find user in auth database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "428": - description: Account is not fully setup in auth service (requires password - change?) - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" /api/ontology/{ontologyId}: get: tags: @@ -737,16 +737,16 @@ paths: type: integer format: int64 responses: - "202": - description: Deleted ontology successfully - content: - application/json: {} "404": description: Could not find ontology content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted ontology successfully + content: + application/json: {} security: - bearerAuth: [] - basicAuth: [] @@ -800,16 +800,16 @@ paths: type: integer format: int64 responses: - "202": - description: Deleted message - content: - application/json: {} "404": description: Could not find message content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted message + content: + application/json: {} security: - bearerAuth: [] - basicAuth: [] @@ -828,18 +828,18 @@ paths: type: integer format: int64 responses: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Found image content: application/json: schema: $ref: "#/components/schemas/ImageDto" + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" put: tags: - image-endpoint @@ -929,20 +929,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to find in data service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Identifier could not be found + "502": + description: Connection to data service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "406": - description: Failed to find acceptable representation + "503": + description: Failed to find in data service content: application/json: schema: @@ -975,8 +969,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to data service failed + "404": + description: Identifier could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "406": + description: Failed to find acceptable representation content: application/json: schema: @@ -1004,12 +1004,18 @@ paths: $ref: "#/components/schemas/IdentifierSaveDto" required: true responses: - "202": - description: Saved identifier + "400": + description: Identifier form contains invalid request data content: application/json: schema: - $ref: "#/components/schemas/IdentifierDto" + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Insufficient access rights or authorities content: @@ -1028,18 +1034,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Identifier form contains invalid request data + "202": + description: Saved identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/IdentifierDto" security: - bearerAuth: [] - basicAuth: [] @@ -1063,14 +1063,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted identifier "404": description: Identifier or database could not be found content: @@ -1083,6 +1075,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted identifier security: - bearerAuth: [] - basicAuth: [] @@ -1102,6 +1102,18 @@ paths: type: integer format: int64 responses: + "400": + description: Identifier form contains invalid request data + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "403": description: Insufficient access rights or authorities content: @@ -1126,18 +1138,6 @@ paths: application/json: schema: $ref: "#/components/schemas/IdentifierDto" - "400": - description: Identifier form contains invalid request data - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Failed to find database, table or view" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1169,32 +1169,32 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Visibility modification is not permitted + "202": + description: Visibility modified successfully content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database in metadata database + $ref: "#/components/schemas/DatabaseBriefDto" + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Visibility modified successfully + "404": + description: Failed to find database in metadata database content: application/json: schema: - $ref: "#/components/schemas/DatabaseBriefDto" - "502": - description: Connection to search service failed + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Visibility modification is not permitted content: application/json: schema: @@ -1223,6 +1223,18 @@ paths: type: integer format: int64 responses: + "403": + description: Find view is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Find view successfully headers: @@ -1254,18 +1266,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ViewDto" - "403": - description: Find view is not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1296,12 +1296,6 @@ paths: $ref: "#/components/schemas/ViewUpdateDto" required: true responses: - "400": - description: Update view query is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "403": description: Update not allowed content: @@ -1332,6 +1326,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Update view query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1357,8 +1357,14 @@ paths: responses: "202": description: Delete view successfully - "403": - description: Deletion not allowed + "423": + description: Delete view resulted in an invalid query statement + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Database, view or user could not be found" content: application/json: schema: @@ -1381,14 +1387,8 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "423": - description: Delete view resulted in an invalid query statement - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Database, view or user could not be found" + "403": + description: Deletion not allowed content: application/json: schema: @@ -1420,6 +1420,18 @@ paths: type: integer format: int64 responses: + "502": + description: Failed to establish connection with broker service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: "Table, database or container could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to obtain queue information from broker service content: @@ -1448,18 +1460,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: "Table, database or container could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Failed to establish connection with broker service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1495,18 +1495,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Update table visibility not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Table could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to save in search service content: @@ -1525,6 +1513,18 @@ paths: application/json: schema: $ref: "#/components/schemas/TableBriefDto" + "403": + description: Update table visibility not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Table could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1558,12 +1558,6 @@ paths: $ref: "#/components/schemas/ApiErrorDto" "202": description: Delete table successfully - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "404": description: "Table, database or container could not be found" content: @@ -1582,6 +1576,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1608,6 +1608,12 @@ paths: type: integer format: int64 responses: + "400": + description: Failed to map column statistic to known columns + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to save in search service content: @@ -1632,12 +1638,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to map column statistic to known columns - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Updated table statistics successfully security: @@ -1679,25 +1679,18 @@ paths: $ref: "#/components/schemas/ColumnSemanticsUpdateDto" required: true responses: - "400": - description: Update semantic concept query is malformed or update unit of - measurement query is malformed - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Access to the database is forbidden + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "202": + description: Updated column semantics successfully content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" + $ref: "#/components/schemas/ColumnDto" "404": description: Failed to find user/table/database/ontology in metadata database content: @@ -1710,12 +1703,19 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Updated column semantics successfully + "400": + description: Update semantic concept query is malformed or update unit of + measurement query is malformed content: application/json: schema: - $ref: "#/components/schemas/ColumnDto" + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1747,18 +1747,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Transfer of ownership is not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "202": description: Transfer of ownership was successful content: @@ -1777,6 +1765,18 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Transfer of ownership is not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1797,12 +1797,6 @@ paths: type: integer format: int64 responses: - "404": - description: Failed to find database in metadata database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Refreshed database views metadata content: @@ -1827,6 +1821,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Failed to find database in metadata database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1853,14 +1853,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to refresh table metadata + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to fin user/database in metadata database + "502": + description: Connection to search service failed content: application/json: schema: @@ -1871,14 +1871,14 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "503": - description: Failed to save in search service + "403": + description: Not allowed to refresh table metadata content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "404": + description: Failed to fin user/database in metadata database content: application/json: schema: @@ -1901,12 +1901,6 @@ paths: type: integer format: int64 responses: - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: View of image was successful content: @@ -1916,6 +1910,12 @@ paths: items: type: string format: byte + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -1945,19 +1945,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "410": - description: File was not found in the Storage Service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Modify of image was successful - content: - application/json: - schema: - $ref: "#/components/schemas/DatabaseBriefDto" + $ref: "#/components/schemas/ApiErrorDto" "404": description: Database could not be found content: @@ -1976,6 +1964,18 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Modify of image was successful + content: + application/json: + schema: + $ref: "#/components/schemas/DatabaseBriefDto" + "410": + description: File was not found in the Storage Service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2017,22 +2017,6 @@ paths: $ref: "#/components/schemas/CreateUserDto" required: true responses: - "417": - description: User with e-mail already exists - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Parameters are not well-formed (likely email) - content: - application/json: {} - "503": - description: Failed to create in auth service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Created user content: @@ -2063,6 +2047,22 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "400": + description: Parameters are not well-formed (likely email) + content: + application/json: {} + "417": + description: User with e-mail already exists + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "503": + description: Failed to create in auth service + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" /api/ontology: get: tags: @@ -2274,38 +2274,38 @@ paths: $ref: "#/components/schemas/CreateIdentifierDto" required: true responses: - "403": - description: Insufficient access rights or authorities + "201": + description: Drafted identifier content: application/json: schema: - $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + $ref: "#/components/schemas/IdentifierDto" + "400": + description: Identifier form contains invalid request data content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "404": + description: "Failed to find database, table or view" content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Identifier form contains invalid request data + "403": + description: Insufficient access rights or authorities content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "201": - description: Drafted identifier + "503": + description: Failed to save in search service content: application/json: schema: - $ref: "#/components/schemas/IdentifierDto" - "404": - description: "Failed to find database, table or view" + $ref: "#/components/schemas/ApiErrorDto" + "502": + description: Connection to search service failed content: application/json: schema: @@ -2328,12 +2328,6 @@ paths: type: integer format: int64 responses: - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Find views successfully content: @@ -2342,6 +2336,12 @@ paths: type: array items: $ref: "#/components/schemas/ViewBriefDto" + "404": + description: Database or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2372,38 +2372,38 @@ paths: application/json: schema: $ref: "#/components/schemas/ViewBriefDto" - "400": - description: Create view query is malformed + "423": + description: Create view resulted in an invalid query statement content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Credentials missing + "503": + description: Failed to save in search service content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Failed to find database/user in metadata database. + "502": + description: Connection to search service failed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "503": - description: Failed to save in search service + "400": + description: Create view query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "502": - description: Connection to search service failed + "403": + description: Credentials missing content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "423": - description: Create view resulted in an invalid query statement + "404": + description: Failed to find database/user in metadata database. content: application/json: schema: @@ -2428,6 +2428,12 @@ paths: type: integer format: int64 responses: + "403": + description: List tables not permitted + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Database could not be found content: @@ -2442,12 +2448,6 @@ paths: type: array items: $ref: "#/components/schemas/TableBriefDto" - "403": - description: List tables not permitted - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2471,14 +2471,20 @@ paths: $ref: "#/components/schemas/CreateTableDto" required: true responses: + "409": + description: Create table conflicts with existing table name + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "400": description: Create table query is malformed content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "409": - description: Create table conflicts with existing table name + "404": + description: "Database, container or user could not be found" content: application/json: schema: @@ -2507,12 +2513,6 @@ paths: application/json: schema: $ref: "#/components/schemas/TableBriefDto" - "404": - description: "Database, container or user could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2564,12 +2564,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "404": - description: Container image or user could not be found - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "201": description: Created a new container content: @@ -2582,6 +2576,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "404": + description: Container image or user could not be found + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2639,14 +2639,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Found entities - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/EntityDto" "404": description: Could not find ontology content: @@ -2659,6 +2651,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Found entities + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/EntityDto" security: - bearerAuth: [] - basicAuth: [] @@ -2766,6 +2766,18 @@ paths: type: integer format: int64 responses: + "404": + description: "Database, user or exchange could not be found" + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" + "403": + description: Not allowed to view database + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "200": description: Database found successfully headers: @@ -2782,12 +2794,6 @@ paths: application/json: schema: $ref: "#/components/schemas/DatabaseBriefDto" - "404": - description: "Database, user or exchange could not be found" - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "503": description: Failed to find queue information in broker service content: @@ -2800,12 +2806,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "403": - description: Not allowed to view database - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" security: - bearerAuth: [] - basicAuth: [] @@ -2843,12 +2843,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "400": - description: Failed to parse statistic in search service - content: - application/json: - schema: - $ref: "#/components/schemas/ApiErrorDto" "200": description: Suggested table semantics successfully content: @@ -2857,14 +2851,20 @@ paths: type: array items: $ref: "#/components/schemas/EntityDto" + "417": + description: Generated query is malformed + content: + application/json: + schema: + $ref: "#/components/schemas/ApiErrorDto" "404": description: Failed to find database/table in metadata database content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "417": - description: Generated query is malformed + "400": + description: Failed to parse statistic in search service content: application/json: schema: @@ -2905,6 +2905,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "200": + description: Suggested table column semantics successfully + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/TableColumnEntityDto" "400": description: Generated query is malformed content: @@ -2917,14 +2925,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "200": - description: Suggested table column semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/TableColumnEntityDto" security: - bearerAuth: [] - basicAuth: [] @@ -2975,14 +2975,14 @@ paths: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" - "202": - description: Deleted container "404": description: Container not found content: application/json: schema: $ref: "#/components/schemas/ApiErrorDto" + "202": + description: Deleted container security: - bearerAuth: [] - basicAuth: [] @@ -3395,6 +3395,21 @@ components: family_name: type: string example: Carberry + DatabaseAccessDto: + required: + - type + - user + type: object + properties: + user: + $ref: "#/components/schemas/UserBriefDto" + type: + type: string + example: read + enum: + - read + - write_own + - write_all ApiErrorDto: required: - code @@ -3481,21 +3496,6 @@ components: code: type: string example: error.service.code - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: "#/components/schemas/UserBriefDto" - type: - type: string - example: read - enum: - - read - - write_own - - write_all UserUpdateDto: required: - language diff --git a/.docs/.openapi/api.yaml b/.docs/.openapi/api.yaml index 3338c9d6a2..c5d75bca5a 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.1 + version: 1.6.2 servers: - description: Test Instance url: 'https://test.dbrepo.tuwien.ac.at' @@ -710,6 +710,12 @@ paths: schema: type: integer format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time - name: page in: query required: false @@ -797,6 +803,12 @@ paths: schema: type: integer format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time - name: page in: query required: false @@ -1456,7 +1468,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatabaseCreateDto' + $ref: '#/components/schemas/CreateDatabaseDto' required: true responses: '201': @@ -2713,7 +2725,7 @@ paths: content: '*/*': schema: - $ref: '#/components/schemas/ViewDto' + $ref: '#/components/schemas/ViewBriefDto' '400': description: Update view query is malformed content: @@ -2769,10 +2781,6 @@ paths: responses: '202': description: Delete view successfully - content: - '*/*': - schema: - type: object '400': description: Delete view query is malformed content: @@ -2843,27 +2851,12 @@ paths: X-Username: description: The authentication username style: simple - X-Table: - description: The table internal name - style: simple Access-Control-Expose-Headers: description: Expose custom headers style: simple - X-Type: - description: The JDBC connection type - style: simple - X-Database: - description: The database internal name - style: simple X-Password: description: The authentication password style: simple - X-Host: - description: The database hostname - style: simple - X-Port: - description: The database port number - style: simple content: application/json: schema: @@ -3457,7 +3450,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SignupRequestDto' + $ref: '#/components/schemas/CreateUserDto' required: true responses: '201': @@ -3720,7 +3713,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/IdentifierCreateDto' + $ref: '#/components/schemas/CreateIdentifierDto' required: true responses: '201': @@ -3813,7 +3806,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ViewCreateDto' + $ref: '#/components/schemas/CreateViewDto' required: true responses: '201': @@ -3919,7 +3912,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TableCreateDto' + $ref: '#/components/schemas/CreateTableDto' required: true responses: '201': @@ -5410,24 +5403,10 @@ components: required: - attributes - id + - password + - username type: object properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality id: type: string format: uuid @@ -5435,6 +5414,12 @@ components: name: type: string example: Josiah Carberry + username: + type: string + example: username + password: + type: string + example: p4ssw0rd attributes: $ref: '#/components/schemas/UserAttributesDto' last_retrieved: @@ -5754,105 +5739,53 @@ components: display_name: type: string example: XOR - CreatorSaveDto: - required: - - creator_name - - id - type: object - properties: - id: - type: integer - format: int64 - example: 1 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - creator_name: - type: string - example: 'Carberry, Josiah' - name_type: - type: string - example: Personal - enum: - - Personal - - Organizational - name_identifier: - type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: - type: string - example: ORCID - enum: - - ORCID - - ROR - - ISNI - - GRID - affiliation_identifier: - type: string - example: 'https://ror.org/04d836q62' - affiliation_identifier_scheme: - type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - IdentifierFunderSaveDto: + IdentifierSaveDto: required: - - funder_name + - creators + - database_id - id + - publication_year + - publisher + - titles + - type type: object properties: id: type: integer format: int64 example: 1 - funder_name: - type: string - example: European Commission - funder_identifier: - type: string - example: 'http://doi.org/10.13039/501100000780' - funder_identifier_type: + type: type: string - example: Crossref Funder ID + example: database enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: - type: string - example: 'http://doi.org/' - award_number: - type: string - example: '824087' - award_title: + - database + - subset + - table + - view + doi: type: string - example: EOSC-Life - IdentifierSaveDescriptionDto: - required: - - description - - id - type: object - properties: - id: - type: integer - format: int64 - example: 1 - description: + example: 10.1111/11111111 + titles: + type: array + items: + $ref: '#/components/schemas/SaveIdentifierTitleDto' + descriptions: + type: array + items: + $ref: '#/components/schemas/SaveIdentifierDescriptionDto' + funders: + type: array + items: + $ref: '#/components/schemas/SaveIdentifierFunderDto' + licenses: + type: array + items: + $ref: '#/components/schemas/LicenseDto' + publisher: type: string - example: 'Air quality reports at Stephansplatz, Vienna' + example: TU Wien language: type: string - example: en enum: - ab - aa @@ -6038,63 +5971,123 @@ components: - yo - za - zu - type: + creators: + type: array + items: + $ref: '#/components/schemas/SaveIdentifierCreatorDto' + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + view_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + publication_day: + type: integer + format: int32 + example: 15 + publication_month: + type: integer + format: int32 + example: 12 + publication_year: + type: integer + format: int32 + example: 2022 + related_identifiers: + type: array + items: + $ref: '#/components/schemas/SaveRelatedIdentifierDto' + LicenseDto: + required: + - identifier + - uri + type: object + properties: + identifier: type: string - example: Abstract - enum: - - Abstract - - Methods - - SeriesInformation - - TableOfContents - - TechnicalInfo - - Other - IdentifierSaveDto: + example: MIT + uri: + type: string + example: 'https://opensource.org/licenses/MIT' + description: + type: string + example: >- + A short and simple permissive license with conditions only requiring + preservation of copyright and license notices. Licensed works, + modifications, and larger works may be distributed under different + terms and without source code. + SaveIdentifierCreatorDto: required: - - creators - - database_id + - creator_name - id - - publication_year - - publisher - - titles - - type type: object properties: id: type: integer format: int64 example: 1 - type: + firstname: type: string - example: database + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Wesleyan University + creator_name: + type: string + example: 'Carberry, Josiah' + name_type: + type: string + example: Personal enum: - - database - - subset - - table - - view - doi: + - Personal + - Organizational + name_identifier: type: string - example: 10.1111/11111111 - titles: - type: array - items: - $ref: '#/components/schemas/IdentifierSaveTitleDto' - descriptions: - type: array - items: - $ref: '#/components/schemas/IdentifierSaveDescriptionDto' - funders: - type: array - items: - $ref: '#/components/schemas/IdentifierFunderSaveDto' - licenses: - type: array - items: - $ref: '#/components/schemas/LicenseDto' - publisher: + example: 0000-0002-1825-0097 + name_identifier_scheme: type: string - example: TU Wien + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: 'https://ror.org/04d836q62' + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + SaveIdentifierDescriptionDto: + required: + - description + - id + type: object + properties: + id: + type: integer + format: int64 + example: 1 + description: + type: string + example: 'Air quality reports at Stephansplatz, Vienna' language: type: string + example: en enum: - ab - aa @@ -6280,40 +6273,51 @@ components: - yo - za - zu - creators: - type: array - items: - $ref: '#/components/schemas/CreatorSaveDto' - database_id: + type: + type: string + example: Abstract + enum: + - Abstract + - Methods + - SeriesInformation + - TableOfContents + - TechnicalInfo + - Other + SaveIdentifierFunderDto: + required: + - funder_name + - id + type: object + properties: + id: type: integer format: int64 example: 1 - query_id: - type: integer - format: int64 - view_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierSaveDto' - IdentifierSaveTitleDto: + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: 'http://doi.org/10.13039/501100000780' + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: 'http://doi.org/' + award_number: + type: string + example: '824087' + award_title: + type: string + example: EOSC-Life + SaveIdentifierTitleDto: required: - id - title @@ -6522,26 +6526,7 @@ components: - Subtitle - TranslatedTitle - Other - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: 'https://opensource.org/licenses/MIT' - description: - type: string - example: >- - A short and simple permissive license with conditions only requiring - preservation of copyright and license notices. Licensed works, - modifications, and larger works may be distributed under different - terms and without source code. - RelatedIdentifierSaveDto: + SaveRelatedIdentifierDto: required: - id - relation @@ -7323,196 +7308,77 @@ components: is_schema_public: type: boolean example: true - ViewColumnDto: + ViewBriefDto: required: - database_id - id - internal_name - - is_null_allowed - name - - ord - - type + - query + - query_hash type: object properties: id: type: integer format: int64 - example: 12 + example: 4 name: - maxLength: 64 - minLength: 0 type: string - example: Given Name - size: - type: integer - format: int64 - example: 255 - d: - type: integer - format: int64 - example: 0 - description: - maxLength: 2048 - minLength: 0 + example: Air Quality + query: type: string - example: Column comment + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC database_id: type: integer format: int64 example: 1 - ord: - type: integer - format: int32 - example: 0 internal_name: - maxLength: 64 - minLength: 0 type: string - example: given_name - index_length: - type: integer - format: int64 - example: 255 - length: - type: integer - format: int64 - example: 255 - type: + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: type: string - example: varchar - 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 - is_null_allowed: + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + owned_by: + type: string + format: uuid + example: ac750fcf-ea02-4fce-85ac-d73857e18b35 + TableUpdateDto: + required: + - is_public + - is_schema_public + type: object + properties: + description: + maxLength: 180 + minLength: 0 + type: string + example: Air Quality in Austria + is_public: type: boolean - example: false - ViewDto: + example: true + is_schema_public: + type: boolean + example: true + TableBriefDto: required: - - columns - database_id - id - - identifiers - internal_name + - is_public + - is_schema_public + - is_versioned - name - - owner - - query - - query_hash - type: object - properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality - id: - type: integer - format: int64 - example: 4 - name: - type: string - example: Air Quality - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ViewColumnDto' - last_retrieved: - type: string - format: date-time - database_id: - type: integer - format: int64 - example: 1 - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - TableUpdateDto: - required: - - is_public - - is_schema_public - type: object - properties: - description: - maxLength: 180 - minLength: 0 - type: string - example: Air Quality in Austria - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - TableBriefDto: - required: - - database_id - - id - - internal_name - - is_public - - is_schema_public - - is_versioned - - name - - owned_by + - owned_by type: object properties: id: @@ -7761,7 +7627,7 @@ components: - read - write_own - write_all - SignupRequestDto: + CreateUserDto: required: - email - password @@ -7866,7 +7732,7 @@ components: minimum: 1024 type: integer format: int32 - IdentifierCreateDto: + CreateIdentifierDto: required: - creators - database_id @@ -7890,15 +7756,15 @@ components: titles: type: array items: - $ref: '#/components/schemas/IdentifierSaveTitleDto' + $ref: '#/components/schemas/SaveIdentifierTitleDto' descriptions: type: array items: - $ref: '#/components/schemas/IdentifierSaveDescriptionDto' + $ref: '#/components/schemas/SaveIdentifierDescriptionDto' funders: type: array items: - $ref: '#/components/schemas/IdentifierFunderSaveDto' + $ref: '#/components/schemas/SaveIdentifierFunderDto' licenses: type: array items: @@ -8096,7 +7962,7 @@ components: creators: type: array items: - $ref: '#/components/schemas/CreatorSaveDto' + $ref: '#/components/schemas/SaveIdentifierCreatorDto' database_id: type: integer format: int64 @@ -8125,8 +7991,8 @@ components: related_identifiers: type: array items: - $ref: '#/components/schemas/RelatedIdentifierSaveDto' - DatabaseCreateDto: + $ref: '#/components/schemas/SaveRelatedIdentifierDto' + CreateDatabaseDto: required: - container_id - is_public @@ -8147,7 +8013,7 @@ components: is_schema_public: type: boolean example: true - ViewCreateDto: + CreateViewDto: required: - is_public - is_schema_public @@ -8169,51 +8035,40 @@ components: is_schema_public: type: boolean example: true - ViewBriefDto: + CreateForeignKeyDto: required: - - database_id - - id - - internal_name - - name - - query - - query_hash + - columns + - referenced_columns + - referenced_table type: object properties: - id: - type: integer - format: int64 - example: 4 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - database_id: - type: integer - format: int64 - example: 1 - internal_name: + columns: + type: array + items: + type: string + referenced_table: type: string - example: air_quality - is_public: - type: boolean - example: true - is_schema_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: + referenced_columns: + type: array + items: + type: string + on_update: type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - owned_by: + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: type: string - format: uuid - example: ac750fcf-ea02-4fce-85ac-d73857e18b35 - ColumnCreateDto: + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + CreateTableColumnDto: required: - name - null_allowed @@ -8292,7 +8147,7 @@ components: type: string unit_uri: type: string - ConstraintsCreateDto: + CreateTableConstraintsDto: required: - checks - foreign_keys @@ -8314,46 +8169,13 @@ components: foreign_keys: type: array items: - $ref: '#/components/schemas/ForeignKeyCreateDto' + $ref: '#/components/schemas/CreateForeignKeyDto' primary_key: uniqueItems: true type: array items: type: string - ForeignKeyCreateDto: - required: - - columns - - referenced_columns - - referenced_table - type: object - properties: - columns: - type: array - items: - type: string - referenced_table: - type: string - referenced_columns: - type: array - items: - type: string - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableCreateDto: + CreateTableDto: required: - columns - constraints @@ -8375,9 +8197,9 @@ components: columns: type: array items: - $ref: '#/components/schemas/ColumnCreateDto' + $ref: '#/components/schemas/CreateTableColumnDto' constraints: - $ref: '#/components/schemas/ConstraintsCreateDto' + $ref: '#/components/schemas/CreateTableConstraintsDto' is_public: type: boolean example: true @@ -8440,9 +8262,13 @@ components: - quota type: object properties: - jdbcMethod: + id: + type: integer + format: int64 + example: 4 + name: type: string - example: mariadb + example: Air Quality host: type: string example: data-db @@ -8450,19 +8276,6 @@ components: type: integer format: int32 example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality - id: - type: integer - format: int64 - example: 4 - name: - type: string - example: Air Quality image: $ref: '#/components/schemas/ImageDto' quota: @@ -8473,6 +8286,12 @@ components: type: integer format: int64 example: 10 + username: + type: string + example: username + password: + type: string + example: p4ssw0rd last_retrieved: type: string format: date-time @@ -8782,6 +8601,79 @@ components: type: array items: $ref: '#/components/schemas/PrimaryKeyDto' + DatabaseDto: + required: + - accesses + - contact + - exchange_name + - id + - identifiers + - internal_name + - is_public + - is_schema_public + - name + - owner + - subsets + - tables + - views + type: object + properties: + id: + type: integer + format: int64 + example: 3 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + views: + type: array + items: + $ref: '#/components/schemas/ViewDto' + container: + $ref: '#/components/schemas/ContainerDto' + accesses: + type: array + items: + $ref: '#/components/schemas/DatabaseAccessDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + subsets: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + contact: + $ref: '#/components/schemas/UserBriefDto' + owner: + $ref: '#/components/schemas/UserBriefDto' + last_retrieved: + type: string + format: date-time + exchange_name: + type: string + example: dbrepo + exchange_type: + type: string + example: topic + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + preview_image: + type: string ForeignKeyBriefDto: type: object properties: @@ -8877,22 +8769,6 @@ components: - routing_key type: object properties: - jdbcMethod: - type: string - example: mariadb - host: - type: string - example: data-db - port: - type: integer - format: int32 - example: 3306 - username: - type: string - example: username - database: - type: string - example: air_quality id: type: integer format: int64 @@ -8918,6 +8794,8 @@ components: type: array items: $ref: '#/components/schemas/ColumnDto' + database: + $ref: '#/components/schemas/DatabaseDto' constraints: $ref: '#/components/schemas/ConstraintsDto' last_retrieved: @@ -8988,6 +8866,155 @@ components: type: array items: $ref: '#/components/schemas/ColumnBriefDto' + ViewColumnDto: + required: + - database_id + - id + - internal_name + - is_null_allowed + - name + - ord + - type + type: object + properties: + id: + type: integer + format: int64 + example: 12 + name: + maxLength: 64 + minLength: 0 + type: string + example: Given Name + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + description: + maxLength: 2048 + minLength: 0 + type: string + example: Column comment + database_id: + type: integer + format: int64 + example: 1 + ord: + type: integer + format: int32 + example: 0 + internal_name: + maxLength: 64 + minLength: 0 + type: string + example: given_name + index_length: + type: integer + format: int64 + example: 255 + length: + type: integer + format: int64 + example: 255 + type: + type: string + example: varchar + 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 + is_null_allowed: + type: boolean + example: false + ViewDto: + required: + - columns + - database_id + - id + - identifiers + - internal_name + - name + - owner + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + example: 4 + name: + type: string + example: Air Quality + identifiers: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + database: + $ref: '#/components/schemas/DatabaseDto' + owner: + $ref: '#/components/schemas/UserBriefDto' + columns: + type: array + items: + $ref: '#/components/schemas/ViewColumnDto' + last_retrieved: + type: string + format: date-time + database_id: + type: integer + format: int64 + example: 1 + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + is_schema_public: + type: boolean + example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 TableColumnEntityDto: required: - column_id 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 878502f1bc..90cb9846b2 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 @@ -1,6 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.ExportResourceDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; import at.tuwien.api.database.ViewDto; @@ -163,8 +164,7 @@ public class SubsetEndpoint extends RestEndpoint { Principal principal) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, QueryNotFoundException, FormatNotAvailableException, StorageUnavailableException, UserNotFoundException, - MetadataServiceException, TableNotFoundException, ViewMalformedException, QueryMalformedException, - NotAllowedException { + MetadataServiceException, TableNotFoundException, QueryMalformedException, NotAllowedException { log.debug("endpoint find subset in database, databaseId={}, subsetId={}, accept={}, timestamp={}", databaseId, subsetId, accept, timestamp); final DatabaseDto database = credentialService.getDatabase(databaseId); @@ -341,7 +341,7 @@ public class SubsetEndpoint extends RestEndpoint { @RequestParam(required = false) Long size) throws PaginationException, DatabaseNotFoundException, RemoteUnavailableException, NotAllowedException, QueryNotFoundException, DatabaseUnavailableException, TableMalformedException, QueryMalformedException, - UserNotFoundException, MetadataServiceException, TableNotFoundException, ViewNotFoundException { + UserNotFoundException, MetadataServiceException, TableNotFoundException, ViewNotFoundException, ViewMalformedException { log.debug("endpoint get subset data, databaseId={}, subsetId={}, principal.name={} page={}, size={}", databaseId, subsetId, principal != null ? principal.getName() : null, page, size); endpointValidator.validateDataParams(page, size); @@ -383,6 +383,12 @@ public class SubsetEndpoint extends RestEndpoint { final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, page, size, null, null); metricsService.countSubsetGetData(databaseId, subsetId); final String viewName = metadataMapper.queryDtoToViewName(subset); + databaseService.createView(database, CreateViewDto.builder() + .name(viewName) + .isPublic(false) + .isSchemaPublic(false) + .query(query) + .build()); final ViewDto view = databaseService.inspectView(database, viewName); headers.set("Access-Control-Expose-Headers", "X-Id X-Headers"); headers.set("X-Headers", String.join(",", view.getColumns().stream().map(ViewColumnDto::getInternalName).toList())); diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java index 18307b5ac2..9ad13f5be6 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java @@ -6,7 +6,7 @@ import at.tuwien.api.database.DatabaseDto; import at.tuwien.config.QueryConfig; import at.tuwien.endpoints.RestEndpoint; import at.tuwien.exception.*; -import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.service.CredentialService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,12 +24,12 @@ import java.util.regex.Pattern; public class EndpointValidator extends RestEndpoint { private final QueryConfig queryConfig; - private final MetadataServiceGateway metadataServiceGateway; + private final CredentialService credentialService; @Autowired - public EndpointValidator(QueryConfig queryConfig, MetadataServiceGateway metadataServiceGateway) { + public EndpointValidator(QueryConfig queryConfig, CredentialService credentialService) { this.queryConfig = queryConfig; - this.metadataServiceGateway = metadataServiceGateway; + this.credentialService = credentialService; } public void validateDataParams(Long page, Long size) throws PaginationException { @@ -90,7 +90,7 @@ public class EndpointValidator extends RestEndpoint { if (isSystem(principal)) { return; } - final DatabaseAccessDto access = metadataServiceGateway.getAccess(database.getId(), getId(principal)); + final DatabaseAccessDto access = credentialService.getAccess(database.getId(), getId(principal)); log.trace("found access: {}", access); if (writeAccessOnly && !(access.getType().equals(AccessTypeDto.WRITE_OWN) || access.getType().equals(AccessTypeDto.WRITE_ALL))) { log.error("Access not allowed: no write access"); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java index 3cecdb6457..3cbdf09af1 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java @@ -51,7 +51,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_DTO); @@ -68,7 +68,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_DTO); @@ -85,12 +85,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_DTO); doThrow(SQLException.class) .when(accessService) - .create(DATABASE_1_DTO, USER_4_DTO, AccessTypeDto.READ); + .create(DATABASE_1_PRIVILEGED_DTO, USER_4_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -121,7 +121,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_4_ID); @@ -149,7 +149,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_DTO); @@ -166,12 +166,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_DTO); doThrow(SQLException.class) .when(accessService) - .update(DATABASE_1_DTO, USER_1_DTO, AccessTypeDto.READ); + .update(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO, AccessTypeDto.READ); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -186,7 +186,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_DTO); @@ -229,7 +229,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_1_ID); @@ -248,7 +248,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_DTO); doNothing() @@ -268,7 +268,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_4_ID)) .thenReturn(USER_4_DTO); @@ -311,7 +311,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(UserNotFoundException.class) .when(credentialService) .getUser(USER_1_ID); @@ -329,12 +329,12 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getUser(USER_1_ID)) .thenReturn(USER_1_DTO); doThrow(SQLException.class) .when(accessService) - .delete(DATABASE_1_DTO, USER_1_DTO); + .delete(DATABASE_1_PRIVILEGED_DTO, USER_1_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java index 0c6f9d8521..43f7b9353e 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java @@ -65,13 +65,13 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { when(credentialService.getContainer(CONTAINER_1_ID)) .thenReturn(CONTAINER_1_DTO); when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doNothing() .when(containerService) .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); doNothing() .when(accessService) - .create(eq(DATABASE_1_DTO), any(UserDto.class), any(AccessTypeDto.class)); + .create(eq(DATABASE_1_PRIVILEGED_DTO), any(UserDto.class), any(AccessTypeDto.class)); /* test */ final ResponseEntity<DatabaseDto> response = databaseEndpoint.create(DATABASE_1_CREATE_INTERNAL); @@ -87,13 +87,13 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { when(credentialService.getContainer(CONTAINER_1_ID)) .thenReturn(CONTAINER_1_DTO); when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doNothing() .when(containerService) .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); doNothing() .when(accessService) - .create(eq(DATABASE_1_DTO), any(UserDto.class), any(AccessTypeDto.class)); + .create(eq(DATABASE_1_PRIVILEGED_DTO), any(UserDto.class), any(AccessTypeDto.class)); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -145,7 +145,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .when(credentialService) .getContainer(CONTAINER_1_ID); when(containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(QueryStoreCreateException.class) .when(containerService) .createQueryStore(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); @@ -163,7 +163,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* test */ databaseEndpoint.update(DATABASE_1_ID, USER_1_UPDATE_PASSWORD_DTO); @@ -176,10 +176,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(databaseService) - .update(DATABASE_1_DTO, USER_1_UPDATE_PASSWORD_DTO); + .update(DATABASE_1_PRIVILEGED_DTO, USER_1_UPDATE_PASSWORD_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -193,7 +193,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -224,10 +224,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(DatabaseMalformedException.class) .when(databaseService) - .update(DATABASE_1_DTO, USER_1_UPDATE_PASSWORD_DTO); + .update(DATABASE_1_PRIVILEGED_DTO, USER_1_UPDATE_PASSWORD_DTO); /* test */ assertThrows(DatabaseMalformedException.class, () -> { 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 53393be407..8837ccb0d1 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 @@ -1,14 +1,14 @@ package at.tuwien.endpoint; -import at.tuwien.api.SortTypeDto; +import at.tuwien.api.database.CreateViewDto; import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ExecuteStatementDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.query.QueryPersistDto; import at.tuwien.endpoints.SubsetEndpoint; import at.tuwien.exception.*; -import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.service.CredentialService; +import at.tuwien.service.DatabaseService; import at.tuwien.service.StorageService; import at.tuwien.service.SubsetService; import at.tuwien.test.AbstractUnitTest; @@ -52,15 +52,15 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @MockBean private SubsetService subsetService; - @MockBean - private MetadataServiceGateway metadataServiceGateway; - @MockBean private HttpServletRequest httpServletRequest; @MockBean private StorageService storageService; + @MockBean + private DatabaseService databaseService; + @MockBean private CredentialService credentialService; @@ -75,12 +75,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { RemoteUnavailableException, SQLException, MetadataServiceException { /* mock */ - when(subsetService.findAll(DATABASE_3_DTO, null)) + when(subsetService.findAll(DATABASE_3_PRIVILEGED_DTO, null)) .thenReturn(List.of(QUERY_1_DTO, QUERY_2_DTO, QUERY_3_DTO, QUERY_4_DTO, QUERY_5_DTO, QUERY_6_DTO)); /* test */ assertThrows(NotAllowedException.class, () -> { - generic_list(DATABASE_3_ID, DATABASE_3_DTO, null); + generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, null); }); } @@ -91,11 +91,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { MetadataServiceException { /* mock */ - when(subsetService.findAll(DATABASE_3_DTO, null)) + when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) + .thenReturn(DATABASE_3_USER_1_READ_ACCESS_DTO); + when(subsetService.findAll(DATABASE_3_PRIVILEGED_DTO, null)) .thenReturn(List.of(QUERY_1_DTO, QUERY_2_DTO, QUERY_3_DTO, QUERY_4_DTO, QUERY_5_DTO, QUERY_6_DTO)); /* test */ - final List<QueryDto> response = generic_list(DATABASE_3_ID, DATABASE_3_DTO, USER_3_PRINCIPAL); + final List<QueryDto> response = generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, USER_3_PRINCIPAL); assertEquals(6, response.size()); } @@ -116,14 +118,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(SQLException.class) .when(subsetService) - .findAll(DATABASE_3_DTO, null); + .findAll(DATABASE_3_PRIVILEGED_DTO, null); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { - generic_list(DATABASE_3_ID, DATABASE_3_DTO, USER_3_PRINCIPAL); + generic_list(DATABASE_3_ID, DATABASE_3_PRIVILEGED_DTO, USER_3_PRINCIPAL); }); } @@ -134,7 +136,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -149,8 +151,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); /* test */ @@ -167,8 +169,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -182,8 +184,8 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_4_ID)) - .thenReturn(DATABASE_4_DTO); - when(subsetService.findById(DATABASE_4_DTO, QUERY_7_ID)) + .thenReturn(DATABASE_4_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_7_ID)) .thenReturn(QUERY_7_DTO); /* test */ @@ -202,13 +204,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) + .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))) + .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) - .thenReturn(mock); /* test */ generic_findById(DATABASE_1_ID, QUERY_1_ID, "text/csv", null, USER_1_PRINCIPAL); @@ -221,7 +223,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -238,10 +240,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_4_DTO, QUERY_5_ID)) + .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), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); @@ -275,10 +277,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(SQLException.class) .when(subsetService) - .findById(DATABASE_3_DTO, QUERY_5_ID); + .findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -286,29 +288,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { }); } - @Test - @WithMockUser(username = USER_1_USERNAME) - public void findById_publicDataPrivateSchemaUnavailableExport_fails() throws DatabaseNotFoundException, - RemoteUnavailableException, MetadataServiceException, SQLException, QueryMalformedException, - UserNotFoundException, QueryNotFoundException, TableNotFoundException, StorageUnavailableException { - - /* mock */ - when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) - .thenReturn(QUERY_5_DTO); - when(storageService.transformDataset(any(Dataset.class))) - .thenReturn(EXPORT_RESOURCE_DTO); - doThrow(SQLException.class) - .when(subsetService) - .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString()); - - /* test */ - assertThrows(DatabaseUnavailableException.class, () -> { - generic_findById(DATABASE_3_ID, QUERY_5_ID, "text/csv", null, USER_1_PRINCIPAL); - }); - } - @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"}) public void create_noAccess_succeeds() throws UserNotFoundException, QueryStoreInsertException, @@ -323,11 +302,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); - when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) .thenReturn(QUERY_5_DTO); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_5_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -367,11 +348,17 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.create(any(DatabaseDto.class), eq(QUERY_5_STATEMENT), any(Instant.class), eq(USER_1_ID))) + .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), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); + when(databaseService.createView(any(DatabaseDto.class), any(CreateViewDto.class))) + .thenReturn(QUERY_5_VIEW_DTO); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_5_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -379,38 +366,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null); } - @Test - @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"}) - public void create_unavailable_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, - SQLException, MetadataServiceException, QueryMalformedException, TableNotFoundException, - ViewMalformedException, UserNotFoundException, QueryNotFoundException, QueryStoreInsertException, - NotAllowedException { - final ExecuteStatementDto request = ExecuteStatementDto.builder() - .statement(QUERY_5_STATEMENT) - .build(); - - /* mock */ - when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - doThrow(SQLException.class) - .when(subsetService) - .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString()); - when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) - .thenReturn(QUERY_5_DTO); - when(metadataServiceGateway.getAccess(DATABASE_3_ID, USER_1_ID)) - .thenReturn(DATABASE_3_USER_1_READ_ACCESS_DTO); - doThrow(SQLException.class) - .when(subsetService) - .create(eq(DATABASE_3_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(USER_1_ID)); - when(httpServletRequest.getMethod()) - .thenReturn("POST"); - - /* test */ - assertThrows(DatabaseUnavailableException.class, () -> { - subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null); - }); - } - @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"}) public void create_databaseNotFound_fails() throws RemoteUnavailableException, @@ -432,32 +387,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { }); } - @Test - @WithMockUser(username = USER_4_USERNAME) - public void create_noRole_fails() throws DatabaseNotFoundException, RemoteUnavailableException, - MetadataServiceException, UserNotFoundException, QueryStoreInsertException, TableMalformedException, - NotAllowedException, SQLException, QueryNotFoundException, DatabaseUnavailableException, - StorageUnavailableException, QueryMalformedException, QueryNotSupportedException, PaginationException, - StorageNotFoundException, TableNotFoundException, ViewMalformedException, ViewNotFoundException { - final Dataset<Row> mock = sparkSession.emptyDataFrame(); - final ExecuteStatementDto request = ExecuteStatementDto.builder() - .statement(QUERY_5_STATEMENT) - .build(); - - /* mock */ - when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) - .thenReturn(mock); - when(subsetService.findById(eq(DATABASE_3_DTO), anyLong())) - .thenReturn(QUERY_5_DTO); - when(httpServletRequest.getMethod()) - .thenReturn("POST"); - - /* test */ - subsetEndpoint.create(DATABASE_3_ID, request, USER_4_PRINCIPAL, httpServletRequest, null, null, null); - } - @Test @WithAnonymousUser public void create_publicDataPublicSchemaAnonymous_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, @@ -472,11 +401,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_4_ID)) - .thenReturn(DATABASE_4_DTO); - when(subsetService.findById(eq(DATABASE_4_DTO), anyLong())) + .thenReturn(DATABASE_4_PRIVILEGED_DTO); + when(subsetService.findById(eq(DATABASE_4_PRIVILEGED_DTO), anyLong())) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_5_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -498,11 +429,13 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(eq(DATABASE_1_DTO), anyLong())) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(subsetService.findById(eq(DATABASE_1_PRIVILEGED_DTO), anyLong())) .thenReturn(QUERY_1_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_1_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -522,10 +455,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_2_ID)) - .thenReturn(DATABASE_2_DTO); - when(subsetService.findById(eq(DATABASE_2_DTO), anyLong())) + .thenReturn(DATABASE_2_PRIVILEGED_DTO); + when(subsetService.findById(eq(DATABASE_2_PRIVILEGED_DTO), anyLong())) .thenReturn(QUERY_2_DTO); - when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -540,18 +473,20 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, NotAllowedException, SQLException, QueryNotFoundException, TableMalformedException, QueryMalformedException, DatabaseUnavailableException, PaginationException, MetadataServiceException, TableNotFoundException, - ViewNotFoundException { + ViewNotFoundException, ViewMalformedException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.reExecuteCount(DATABASE_3_DTO, 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), any(SortTypeDto.class), anyString())) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_5_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -565,14 +500,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_head_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, NotAllowedException, SQLException, QueryNotFoundException, TableMalformedException, QueryMalformedException, DatabaseUnavailableException, PaginationException, MetadataServiceException, - TableNotFoundException, ViewNotFoundException { + TableNotFoundException, ViewNotFoundException, ViewMalformedException { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.reExecuteCount(DATABASE_3_DTO, QUERY_5_DTO)) + when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -590,18 +525,20 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_private_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException, TableMalformedException, QueryMalformedException, QueryNotFoundException, PaginationException, SQLException, - MetadataServiceException, TableNotFoundException, ViewNotFoundException { + MetadataServiceException, TableNotFoundException, ViewNotFoundException, ViewMalformedException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); - when(subsetService.reExecuteCount(DATABASE_1_DTO, QUERY_1_DTO)) + when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); - when(subsetService.getData(DATABASE_1_DTO, QUERY_1_STATEMENT, Instant.now(), 0L, 10L, null, null)) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); + when(databaseService.inspectView(any(DatabaseDto.class), anyString())) + .thenReturn(QUERY_1_VIEW_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -618,7 +555,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -633,7 +570,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_1_ID); @@ -649,14 +586,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { public void getData_privateHead_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException, TableMalformedException, QueryMalformedException, QueryNotFoundException, PaginationException, SQLException, - MetadataServiceException, TableNotFoundException, ViewNotFoundException { + MetadataServiceException, TableNotFoundException, ViewNotFoundException, ViewMalformedException { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); - when(subsetService.reExecuteCount(DATABASE_1_DTO, QUERY_1_DTO)) + when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -669,29 +606,6 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { assertEquals(QUERY_1_RESULT_NUMBER, Long.parseLong(response.getHeaders().get("X-Count").get(0))); } - @Test - @WithMockUser(username = USER_1_USERNAME) - public void getData_unavailable_fails() throws DatabaseNotFoundException, RemoteUnavailableException, SQLException, - UserNotFoundException, QueryNotFoundException, MetadataServiceException, QueryMalformedException, - TableNotFoundException { - - /* mock */ - when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(subsetService.findById(DATABASE_1_DTO, QUERY_1_ID)) - .thenReturn(QUERY_1_DTO); - when(httpServletRequest.getMethod()) - .thenReturn("GET"); - doThrow(SQLException.class) - .when(subsetService) - .getData(DATABASE_1_DTO, QUERY_1_STATEMENT, Instant.now(), 0L, 10L, null, null); - - /* test */ - assertThrows(DatabaseUnavailableException.class, () -> { - subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null, null); - }); - } - @Test @WithMockUser(username = USER_3_USERNAME, authorities = {"persist-query"}) public void persist_succeeds() throws NotAllowedException, RemoteUnavailableException, DatabaseNotFoundException, @@ -705,11 +619,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); doNothing() .when(subsetService) - .persist(DATABASE_3_DTO, QUERY_5_ID, true); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .persist(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID, true); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -778,12 +692,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); doThrow(SQLException.class) .when(subsetService) - .persist(DATABASE_3_DTO, QUERY_5_ID, true); + .persist(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID, true); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { 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 ecd745e3ee..b37007a010 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 @@ -1,6 +1,7 @@ package at.tuwien.endpoint; import at.tuwien.api.database.DatabaseAccessDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.query.ImportDto; import at.tuwien.api.database.table.*; import at.tuwien.endpoints.TableEndpoint; @@ -101,11 +102,11 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(databaseService.createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO)) - .thenReturn(TABLE_4_DTO); - when(databaseService.inspectTable(DATABASE_1_DTO, TABLE_4_INTERNALNAME)) - .thenReturn(TABLE_4_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(databaseService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO)) + .thenReturn(TABLE_4_PRIVILEGED_DTO); + when(databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_INTERNALNAME)) + .thenReturn(TABLE_4_PRIVILEGED_DTO); /* test */ final ResponseEntity<TableDto> response = tableEndpoint.create(DATABASE_1_ID, TABLE_4_CREATE_INTERNAL_DTO); @@ -145,10 +146,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(databaseService) - .createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO); + .createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -173,7 +174,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(tableService.getStatistics(any(TableDto.class))) .thenReturn(TABLE_8_STATISTIC_DTO); @@ -189,7 +190,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); doThrow(SQLException.class) .when(tableService) .getStatistics(any(TableDto.class)); @@ -223,10 +224,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doNothing() .when(tableService) - .delete(TABLE_1_DTO); + .delete(TABLE_1_PRIVILEGED_DTO); /* test */ final ResponseEntity<Void> response = tableEndpoint.delete(DATABASE_1_ID, TABLE_1_ID); @@ -266,10 +267,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(tableService) - .delete(TABLE_1_DTO); + .delete(TABLE_1_PRIVILEGED_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -279,15 +280,17 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void getData_succeeds() throws DatabaseUnavailableException, TableNotFoundException, QueryMalformedException, + public void getData_publicDataPrivateSchema_succeeds() throws DatabaseUnavailableException, TableNotFoundException, QueryMalformedException, RemoteUnavailableException, PaginationException, MetadataServiceException, NotAllowedException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); - when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + .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))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -307,10 +310,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); - when(tableService.getCount(eq(TABLE_8_DTO), any(Instant.class))) + .thenReturn(TABLE_8_PRIVILEGED_DTO); + when(tableService.getCount(eq(TABLE_8_PRIVILEGED_DTO), any(Instant.class))) .thenReturn(3L); - when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -332,7 +335,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -347,7 +350,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_2_ID); @@ -361,14 +364,16 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void getData_unavailable_fails() throws TableNotFoundException, RemoteUnavailableException, - MetadataServiceException, QueryMalformedException { + MetadataServiceException, QueryMalformedException, DatabaseNotFoundException { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); + when(credentialService.getDatabase(DATABASE_3_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(QueryMalformedException.class) .when(subsetService) - .getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); + .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -385,7 +390,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doThrow(RemoteUnavailableException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_2_ID); @@ -406,10 +411,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); + when(credentialService.getDatabase(DATABASE_1_ID)) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(subsetService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -449,12 +456,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .createTuple(TABLE_8_DTO, request); + .createTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -515,7 +522,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -539,12 +546,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .createTuple(TABLE_8_DTO, request); + .createTuple(TABLE_8_PRIVILEGED_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -566,7 +573,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); @@ -587,7 +594,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -611,7 +618,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); @@ -636,12 +643,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_DTO, request); + .updateTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -711,7 +718,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -737,12 +744,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .updateTuple(TABLE_8_DTO, request); + .updateTuple(TABLE_8_PRIVILEGED_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -767,12 +774,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_DTO, request); + .updateTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -798,7 +805,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -825,12 +832,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doNothing() .when(tableService) - .updateTuple(TABLE_8_DTO, request); + .updateTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -853,12 +860,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_DTO, request); + .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -916,7 +923,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -938,12 +945,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) .when(tableService) - .deleteTuple(TABLE_8_DTO, request); + .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -964,12 +971,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_DTO, request); + .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -991,7 +998,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -1014,12 +1021,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doNothing() .when(tableService) - .deleteTuple(TABLE_8_DTO, request); + .deleteTuple(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -1036,8 +1043,8 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); - when(tableService.history(TABLE_8_DTO, null)) + .thenReturn(TABLE_8_PRIVILEGED_DTO); + when(tableService.history(TABLE_8_PRIVILEGED_DTO, null)) .thenReturn(List.of()); /* test */ @@ -1052,7 +1059,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -1078,7 +1085,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_4_ID); @@ -1096,10 +1103,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_READ_ACCESS_DTO); - when(tableService.history(TABLE_1_DTO, 10L)) + when(tableService.history(TABLE_1_PRIVILEGED_DTO, 10L)) .thenReturn(List.of()); /* test */ @@ -1114,10 +1121,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); doThrow(SQLException.class) .when(tableService) - .history(TABLE_8_DTO, 100L); + .history(TABLE_8_PRIVILEGED_DTO, 100L); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -1143,14 +1150,16 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void exportData_succeeds() throws TableNotFoundException, NotAllowedException, StorageUnavailableException, + public void exportData_publicDataPrivateSchema_succeeds() throws TableNotFoundException, NotAllowedException, StorageUnavailableException, QueryMalformedException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); - when(subsetService.getData(eq(DATABASE_3_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + .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))) .thenReturn(mock); /* test */ @@ -1161,17 +1170,19 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @ParameterizedTest @WithMockUser(username = USER_2_USERNAME) @MethodSource("anyAccess_parameters") - public void exportData_private_succeeds(String name, DatabaseAccessDto access) throws TableNotFoundException, - NotAllowedException, StorageUnavailableException, QueryMalformedException, RemoteUnavailableException, - MetadataServiceException, DatabaseNotFoundException { + public void exportData_privateDataPrivateSchema_succeeds(String name, DatabaseAccessDto access) + throws TableNotFoundException, NotAllowedException, StorageUnavailableException, QueryMalformedException, + RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(subsetService.getData(eq(DATABASE_1_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + 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))) .thenReturn(mock); /* test */ @@ -1186,7 +1197,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_4_ID); @@ -1205,9 +1216,9 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(databaseService.exploreTables(DATABASE_3_DTO)) - .thenReturn(List.of(TABLE_8_DTO)); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(databaseService.exploreTables(DATABASE_3_PRIVILEGED_DTO)) + .thenReturn(List.of(TABLE_8_PRIVILEGED_DTO)); /* test */ final ResponseEntity<List<TableDto>> response = tableEndpoint.getSchema(DATABASE_3_ID); @@ -1241,10 +1252,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); + .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(SQLException.class) .when(databaseService) - .exploreTables(DATABASE_3_DTO); + .exploreTables(DATABASE_3_PRIVILEGED_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -1264,12 +1275,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); doNothing() .when(tableService) - .importDataset(TABLE_8_DTO, request); + .importDataset(TABLE_8_PRIVILEGED_DTO, request); doNothing() .when(metadataServiceGateway) .updateTableStatistics(DATABASE_3_ID, TABLE_8_ID, TOKEN_ACCESS_TOKEN); @@ -1328,7 +1339,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); doThrow(SQLException.class) @@ -1354,7 +1365,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); doThrow(SQLException.class) @@ -1379,7 +1390,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_READ_ACCESS_DTO); @@ -1402,7 +1413,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_1_WRITE_OWN_ACCESS_DTO); @@ -1422,7 +1433,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_3_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_OWN_ACCESS_DTO); @@ -1445,7 +1456,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); + .thenReturn(TABLE_8_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_3_ID, USER_1_ID)) .thenReturn(DATABASE_3_USER_3_WRITE_ALL_ACCESS_DTO); @@ -1466,7 +1477,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_ALL_ACCESS_DTO); @@ -1487,7 +1498,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_2_ID)) - .thenReturn(TABLE_2_DTO); + .thenReturn(TABLE_2_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO); @@ -1507,7 +1518,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO); @@ -1529,7 +1540,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getTable(DATABASE_1_ID, TABLE_2_ID)) - .thenReturn(TABLE_2_DTO); + .thenReturn(TABLE_2_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(DATABASE_1_USER_2_READ_ACCESS_DTO); 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 c69c8d338e..5dce498856 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 @@ -1,5 +1,6 @@ package at.tuwien.endpoint; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewDto; import at.tuwien.endpoints.ViewEndpoint; import at.tuwien.exception.*; @@ -71,9 +72,9 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO)) - .thenReturn(VIEW_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(databaseService.createView(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); /* test */ final ResponseEntity<ViewDto> response = viewEndpoint.create(DATABASE_1_ID, VIEW_1_CREATE_DTO); @@ -87,10 +88,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(databaseService) - .createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO); + .createView(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -105,9 +106,9 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO)) - .thenReturn(VIEW_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(databaseService.createView(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -138,8 +139,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); - when(databaseService.exploreViews(DATABASE_1_DTO)) + .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(databaseService.exploreViews(DATABASE_1_PRIVILEGED_DTO)) .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)); /* test */ @@ -180,10 +181,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(databaseService) - .exploreViews(DATABASE_1_DTO); + .exploreViews(DATABASE_1_PRIVILEGED_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -208,10 +209,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_DTO); + .thenReturn(VIEW_1_PRIVILEGED_DTO); doNothing() .when(viewService) - .delete(VIEW_1_DTO); + .delete(VIEW_1_PRIVILEGED_DTO); /* test */ final ResponseEntity<Void> response = viewEndpoint.delete(DATABASE_1_ID, VIEW_1_ID); @@ -225,10 +226,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_DTO); + .thenReturn(VIEW_1_PRIVILEGED_DTO); doThrow(SQLException.class) .when(viewService) - .delete(VIEW_1_DTO); + .delete(VIEW_1_PRIVILEGED_DTO); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -243,10 +244,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getDatabase(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); doNothing() .when(viewService) - .delete(VIEW_1_DTO); + .delete(VIEW_1_PRIVILEGED_DTO); /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { @@ -272,17 +273,19 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"view-database-view-data"}) - public void getData_private_succeeds() throws RemoteUnavailableException, ViewNotFoundException, + public void getData_privateDataPrivateSchema_succeeds() throws RemoteUnavailableException, ViewNotFoundException, SQLException, DatabaseUnavailableException, QueryMalformedException, PaginationException, NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException { final Dataset<Row> mock = sparkSession.emptyDataFrame(); /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_DTO); + .thenReturn(VIEW_1_PRIVILEGED_DTO); + when(credentialService.getDatabase(DATABASE_1_ID)) + .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(eq(DATABASE_1_DTO), eq(VIEW_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -301,12 +304,12 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_DTO); + .thenReturn(VIEW_3_PRIVILEGED_DTO); when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID)) .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); - when(viewService.count(eq(VIEW_3_DTO), any(Instant.class))) + when(viewService.count(eq(VIEW_3_PRIVILEGED_DTO), any(Instant.class))) .thenReturn(VIEW_3_DATA_COUNT); /* test */ @@ -328,7 +331,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_DTO); + .thenReturn(VIEW_3_PRIVILEGED_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); doThrow(NotAllowedException.class) @@ -364,7 +367,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_DTO); + .thenReturn(VIEW_3_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_3_ID); @@ -382,7 +385,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_DTO); + .thenReturn(VIEW_3_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_3_ID); @@ -416,7 +419,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { /* mock */ when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_DTO); + .thenReturn(VIEW_3_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) .getAccess(DATABASE_1_ID, USER_1_ID); 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 a2ed7e3817..affb562080 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 @@ -59,7 +59,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.OK) .headers(headers) - .body(TABLE_1_DTO)); + .body(TABLE_1_PRIVILEGED_DTO)); /* test */ final TableDto response = metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID); @@ -105,7 +105,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { /* mock */ when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) - .body(TABLE_1_DTO)); + .body(TABLE_1_PRIVILEGED_DTO)); /* test */ assertThrows(MetadataServiceException.class, () -> { @@ -115,7 +115,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { @Test public void getTableById_headerMissing_fails() { - final List<String> customHeaders = List.of("X-Type", "X-Host", "X-Port", "X-Username", "X-Password", "X-Database", "X-Sidecar-Host", "X-Sidecar-Port"); + final List<String> customHeaders = List.of("X-Username", "X-Password"); for (int i = 0; i < customHeaders.size(); i++) { final HttpHeaders headers = new HttpHeaders(); @@ -126,7 +126,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class))) .thenReturn(ResponseEntity.status(HttpStatus.OK) .headers(headers) - .body(TABLE_1_DTO)); + .body(TABLE_1_PRIVILEGED_DTO)); /* test */ assertThrows(MetadataServiceException.class, () -> { metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID); @@ -163,7 +163,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class))) .thenReturn(ResponseEntity.ok() .headers(headers) - .body(DATABASE_1_DTO)); + .body(DATABASE_1_PRIVILEGED_DTO)); /* test */ final DatabaseDto response = metadataServiceGateway.getDatabaseById(DATABASE_1_ID); @@ -359,7 +359,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest { when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(ViewDto.class))) .thenReturn(ResponseEntity.ok() .headers(headers) - .body(VIEW_1_DTO)); + .body(VIEW_1_PRIVILEGED_DTO)); /* test */ final ViewDto response = metadataServiceGateway.getViewById(CONTAINER_1_ID, VIEW_1_ID); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java index 752a9b0e05..bca5e11410 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerIntegrationTest.java @@ -5,7 +5,7 @@ import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.exception.MetadataServiceException; import at.tuwien.exception.RemoteUnavailableException; import at.tuwien.exception.TableNotFoundException; -import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.service.CredentialService; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -42,13 +42,13 @@ import static org.mockito.Mockito.when; public class DefaultListenerIntegrationTest extends AbstractUnitTest { @MockBean - private MetadataServiceGateway metadataServiceGateway; + private CredentialService credentialService; @Autowired private DefaultListener defaultListener; @Container - private static RabbitMQContainer rabbitContainer = new RabbitMQContainer("rabbitmq:3.10"); + private static RabbitMQContainer rabbitContainer = new RabbitMQContainer(RABBITMQ_IMAGE); @Container private static MariaDBContainer<?> mariaDBContainer = MariaDbContainerConfig.getContainer(); @@ -67,8 +67,8 @@ public class DefaultListenerIntegrationTest extends AbstractUnitTest { final Message request = buildMessage("dbrepo." + DATABASE_1_ID + "." + TABLE_1_ID, "{\"id\":4,\"date\":\"2023-10-03\",\"mintemp\":15.0,\"rainfall\":0.2}", new HashMap<>()); /* mock */ - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ defaultListener.onMessage(request); @@ -83,8 +83,8 @@ public class DefaultListenerIntegrationTest extends AbstractUnitTest { /* mock */ doThrow(TableNotFoundException.class) - .when(metadataServiceGateway) - .getTableById(DATABASE_1_ID, TABLE_1_ID); + .when(credentialService) + .getTable(DATABASE_1_ID, TABLE_1_ID); /* test */ defaultListener.onMessage(request); 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 7a439ed55c..74042aa578 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 @@ -5,7 +5,7 @@ import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.exception.MetadataServiceException; import at.tuwien.exception.RemoteUnavailableException; import at.tuwien.exception.TableNotFoundException; -import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.service.CredentialService; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -38,7 +38,7 @@ import static org.mockito.Mockito.when; public class DefaultListenerUnitTest extends AbstractUnitTest { @MockBean - private MetadataServiceGateway metadataServiceGateway; + private CredentialService credentialService; @Autowired private DefaultListener defaultListener; @@ -54,7 +54,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { genesis(); /* metadata database */ MariaDbConfig.dropAllDatabases(CONTAINER_1_PRIVILEGED_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); } @Test @@ -81,8 +81,8 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { final Message request = buildMessage("dbrepo.1.1", "{,}", new HashMap<>()); /* mock */ - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID)) + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ defaultListener.onMessage(request); @@ -96,8 +96,8 @@ public class DefaultListenerUnitTest extends AbstractUnitTest { /* mock */ doThrow(TableNotFoundException.class) - .when(metadataServiceGateway) - .getTableById(DATABASE_1_ID, TABLE_1_ID); + .when(credentialService) + .getTable(DATABASE_1_ID, TABLE_1_ID); /* test */ defaultListener.onMessage(request); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java index abbe28d55a..158c6743a4 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/SubsetEndpointMvcTest.java @@ -41,8 +41,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -56,8 +56,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) - .thenReturn(DATABASE_3_DTO); - when(subsetService.findById(DATABASE_3_DTO, QUERY_5_ID)) + .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); /* test */ @@ -72,8 +72,8 @@ public class SubsetEndpointMvcTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_4_ID)) - .thenReturn(DATABASE_4_DTO); - when(subsetService.findById(DATABASE_4_DTO, QUERY_7_ID)) + .thenReturn(DATABASE_4_PRIVILEGED_DTO); + when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_7_ID)) .thenReturn(QUERY_5_DTO); /* test */ 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 251dfe53c5..e1579fbe95 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 @@ -42,17 +42,22 @@ public class ContainerServiceIntegrationTest extends AbstractUnitTest { } @BeforeEach - public void beforeEach() throws SQLException { + public void beforeEach() throws SQLException, InterruptedException { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + Thread.sleep(1000) /* wait for test container some more */; } @Test public void create_succeeds() throws SQLException, DatabaseMalformedException { + /* mock */ + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + /* test */ - final DatabaseDto response = containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL); + final DatabaseDto response = containerService.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL); assertNull(response.getName()); assertEquals(DATABASE_1_INTERNALNAME, response.getInternalName()); assertEquals(EXCHANGE_DBREPO_NAME, response.getExchangeName()); @@ -65,45 +70,26 @@ public class ContainerServiceIntegrationTest extends AbstractUnitTest { } @Test - public void create_exists_fails() throws SQLException { - - /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_1_INTERNALNAME); + public void create_exists_fails() { /* test */ assertThrows(DatabaseMalformedException.class, () -> { - containerService.createDatabase(CONTAINER_1_DTO, DATABASE_1_CREATE_INTERNAL); + containerService.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_CREATE_INTERNAL); }); } @Test public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException, InterruptedException { - /* mock */ - MariaDbConfig.dropQueryStore(DATABASE_1_DTO); - /* test */ createQueryStore_generic(DATABASE_1_INTERNALNAME); } - @Test - public void createQueryStore_fails() { - - /* test */ - assertThrows(QueryStoreCreateException.class, () -> { - createQueryStore_generic(DATABASE_1_INTERNALNAME); - }); - } - - protected void createQueryStore_generic(String databaseName) throws SQLException, QueryStoreCreateException, - InterruptedException { - - /* pre-condition */ - Thread.sleep(1000) /* wait for test container some more */; + protected void createQueryStore_generic(String databaseName) throws SQLException, QueryStoreCreateException { /* test */ - containerService.createQueryStore(CONTAINER_1_DTO, databaseName); - final List<Map<String, Object>> response = MariaDbConfig.listQueryStore(DATABASE_1_DTO); + containerService.createQueryStore(CONTAINER_1_PRIVILEGED_DTO, databaseName); + final List<Map<String, Object>> response = MariaDbConfig.listQueryStore(DATABASE_1_PRIVILEGED_DTO); assertEquals(0, response.size()); } } 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 8b5e2cc7c5..07e283640a 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 @@ -48,7 +48,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* test */ final DatabaseDto response = credentialService.getDatabase(DATABASE_1_ID); @@ -62,7 +62,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_1_DTO) + .thenReturn(DATABASE_1_PRIVILEGED_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getDatabase(DATABASE_1_ID); @@ -78,8 +78,8 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_2_DTO) /* needs to be different id for test case */ - .thenReturn(DATABASE_1_DTO); + .thenReturn(DATABASE_2_PRIVILEGED_DTO) /* needs to be different id for test case */ + .thenReturn(DATABASE_1_PRIVILEGED_DTO); /* pre-condition */ final DatabaseDto tmp = credentialService.getDatabase(DATABASE_1_ID); @@ -98,7 +98,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); + .thenReturn(CONTAINER_1_PRIVILEGED_DTO); /* test */ final ContainerDto response = credentialService.getContainer(CONTAINER_1_ID); @@ -128,8 +128,8 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(DATABASE_1_ID)) - .thenReturn(CONTAINER_2_DTO) /* needs to be different id for test case */ - .thenReturn(CONTAINER_1_DTO); + .thenReturn(CONTAINER_2_PRIVILEGED_DTO) /* needs to be different id for test case */ + .thenReturn(CONTAINER_1_PRIVILEGED_DTO); /* pre-condition */ final ContainerDto tmp = credentialService.getContainer(CONTAINER_1_ID); @@ -251,7 +251,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ final TableDto response = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); @@ -265,7 +265,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO) + .thenReturn(TABLE_1_PRIVILEGED_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); @@ -281,8 +281,8 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_2_DTO) /* needs to be different id for test case */ - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_2_PRIVILEGED_DTO) /* needs to be different id for test case */ + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* pre-condition */ final TableDto tmp = credentialService.getTable(DATABASE_1_ID, TABLE_1_ID); @@ -301,7 +301,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_DTO); + .thenReturn(VIEW_1_PRIVILEGED_DTO); /* test */ final ViewDto response = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); @@ -314,7 +314,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_1_DTO) + .thenReturn(VIEW_1_PRIVILEGED_DTO) .thenThrow(RuntimeException.class) /* should never be thrown */; credentialService.getView(DATABASE_1_ID, VIEW_1_ID); @@ -330,8 +330,8 @@ public class CredentialServiceUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) - .thenReturn(VIEW_2_DTO) /* needs to be different id for test case */ - .thenReturn(VIEW_1_DTO); + .thenReturn(VIEW_2_PRIVILEGED_DTO) /* needs to be different id for test case */ + .thenReturn(VIEW_1_PRIVILEGED_DTO); /* pre-condition */ final ViewDto tmp = credentialService.getView(DATABASE_1_ID, VIEW_1_ID); 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 550589df79..6663a71d13 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 @@ -60,31 +60,36 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { } @BeforeEach - public void beforeEach() throws SQLException { + public void beforeEach() throws SQLException, InterruptedException { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_DTO); + Thread.sleep(1000) /* wait for test container some more */; } @Test public void createView_succeeds() throws SQLException, ViewMalformedException { /* test */ - databaseService.createView(DATABASE_1_DTO, VIEW_1_CREATE_DTO); + databaseService.createView(DATABASE_1_PRIVILEGED_DTO, VIEW_1_CREATE_DTO); } @Test public void exploreViews_succeeds() throws SQLException, ViewNotFoundException, DatabaseMalformedException { /* test */ - final List<ViewDto> response = databaseService.exploreViews(DATABASE_1_DTO); + final List<ViewDto> response = databaseService.exploreViews(DATABASE_1_PRIVILEGED_DTO); final ViewDto view0 = response.get(0); assertEquals("not_in_metadata_db2", view0.getName()); assertEquals("not_in_metadata_db2", view0.getInternalName()); assertEquals(DATABASE_1_ID, view0.getVdbid()); - assertEquals(DATABASE_1_OWNER, view0.getOwner().getId()); + assertEquals(USER_1_BRIEF_DTO, view0.getOwner()); assertFalse(view0.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, view0.getIsPublic()); + assertEquals(DATABASE_1_SCHEMA_PUBLIC, view0.getIsSchemaPublic()); assertTrue(view0.getQuery().length() >= 69); assertNotNull(view0.getQueryHash()); assertEquals(4, view0.getColumns().size()); @@ -106,8 +111,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - MariaDbConfig.grantWriteAccess(DATABASE_1_DTO, USER_1_USERNAME); + MariaDbConfig.grantWriteAccess(DATABASE_1_PRIVILEGED_DTO, USER_1_USERNAME); /* pre-condition */ MariaDbConfig.mockQuery(CONTAINER_1_HOST, CONTAINER_1_PORT, DATABASE_1_INTERNALNAME, "CREATE SEQUENCE debug NOCACHE", USER_1_USERNAME, USER_1_PASSWORD); @@ -119,34 +123,31 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { } /* test */ - databaseService.update(DATABASE_1_DTO, request); + databaseService.update(DATABASE_1_PRIVILEGED_DTO, request); MariaDbConfig.mockQuery(CONTAINER_1_HOST, CONTAINER_1_PORT, DATABASE_1_INTERNALNAME, "CREATE SEQUENCE debug2 NOCACHE", USER_1_USERNAME, USER_2_PASSWORD); } @Test - public void update_notExists_fails() throws SQLException { + public void update_notExists_fails() { final UpdateUserPasswordDto request = UpdateUserPasswordDto.builder() .username("i_do_not_exist") .password(USER_1_PASSWORD) .build(); - /* mock */ - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - /* test */ assertThrows(DatabaseMalformedException.class, () -> { - databaseService.update(DATABASE_1_DTO, request); + databaseService.update(DATABASE_1_PRIVILEGED_DTO, request); }); } - + @Test public void inspectTable_sameNameDifferentDb_succeeds() throws TableNotFoundException, SQLException { /* mock */ - MariaDbConfig.execute(DATABASE_2_DTO, "CREATE TABLE not_in_metadata_db (wrong_id BIGINT NOT NULL PRIMARY KEY, given_name VARCHAR(255) NOT NULL, middle_name VARCHAR(255), family_name VARCHAR(255) NOT NULL, age INT NOT NULL) WITH SYSTEM VERSIONING;"); + MariaDbConfig.execute(DATABASE_2_PRIVILEGED_DTO, "CREATE TABLE not_in_metadata_db (wrong_id BIGINT NOT NULL PRIMARY KEY, given_name VARCHAR(255) NOT NULL, middle_name VARCHAR(255), family_name VARCHAR(255) NOT NULL, age INT NOT NULL) WITH SYSTEM VERSIONING;"); /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "not_in_metadata_db"); + final TableDto response = databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "not_in_metadata_db"); assertEquals("not_in_metadata_db", response.getInternalName()); assertEquals("not_in_metadata_db", response.getName()); assertEquals(DATABASE_1_ID, response.getTdbid()); @@ -182,7 +183,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException { /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_2_DTO, "experiments"); + final TableDto response = databaseService.inspectTable(DATABASE_2_PRIVILEGED_DTO, "experiments"); assertEquals("experiments", response.getInternalName()); assertEquals("experiments", response.getName()); assertEquals(DATABASE_2_ID, response.getTdbid()); @@ -215,14 +216,14 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException { /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "weather_aus"); + final TableDto response = databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "weather_aus"); assertEquals("weather_aus", response.getInternalName()); assertEquals("weather_aus", response.getName()); assertEquals(DATABASE_1_ID, response.getTdbid()); assertTrue(response.getIsVersioned()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); assertNotNull(response.getOwner()); - assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); + assertEquals(USER_1_BRIEF_DTO, response.getOwner()); assertEquals(USER_1_NAME, response.getOwner().getName()); assertEquals(USER_1_USERNAME, response.getOwner().getUsername()); assertEquals(USER_1_FIRSTNAME, response.getOwner().getFirstname()); @@ -315,7 +316,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectTable_multipleForeignKeyReferences_succeeds() throws TableNotFoundException, SQLException { /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "complex_foreign_keys"); + final TableDto response = databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "complex_foreign_keys"); final ConstraintsDto constraints = response.getConstraints(); final List<ForeignKeyDto> foreignKeys = constraints.getForeignKeys(); assertEquals(1, foreignKeys.size()); @@ -368,7 +369,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectTable_multiplePrimaryKey_succeeds() throws TableNotFoundException, SQLException { /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "complex_primary_key"); + final TableDto response = databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "complex_primary_key"); final ConstraintsDto constraints = response.getConstraints(); final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); assertEquals(2, primaryKey.size()); @@ -406,7 +407,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectTable_exoticBoolean_succeeds() throws TableNotFoundException, SQLException { /* test */ - final TableDto response = databaseService.inspectTable(DATABASE_1_DTO, "exotic_boolean"); + final TableDto response = databaseService.inspectTable(DATABASE_1_PRIVILEGED_DTO, "exotic_boolean"); final ConstraintsDto constraints = response.getConstraints(); final List<PrimaryKeyDto> primaryKey = new LinkedList<>(constraints.getPrimaryKey()); assertEquals(1, primaryKey.size()); @@ -435,11 +436,11 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void inspectView_succeeds() throws SQLException, ViewNotFoundException { /* test */ - final ViewDto response = databaseService.inspectView(DATABASE_1_DTO, "not_in_metadata_db2"); + final ViewDto response = databaseService.inspectView(DATABASE_1_PRIVILEGED_DTO, "not_in_metadata_db2"); assertEquals("not_in_metadata_db2", response.getInternalName()); assertEquals("not_in_metadata_db2", response.getName()); assertEquals(DATABASE_1_ID, response.getVdbid()); - assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); + assertEquals(USER_1_BRIEF_DTO, response.getOwner()); assertFalse(response.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); assertTrue(response.getQuery().length() >= 69); @@ -467,7 +468,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { public void getSchemas_succeeds() throws TableNotFoundException, SQLException, DatabaseMalformedException { /* test */ - final List<TableDto> response = databaseService.exploreTables(DATABASE_1_DTO); + final List<TableDto> response = databaseService.exploreTables(DATABASE_1_PRIVILEGED_DTO); assertEquals(4, response.size()); final TableDto table0 = response.get(0); Assertions.assertEquals("complex_foreign_keys", table0.getInternalName()); @@ -599,8 +600,8 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { TableExistsException { /* test */ - final TableDto response = databaseService.createTable(DATABASE_1_DTO, TABLE_4_CREATE_INTERNAL_DTO); - assertEquals(TABLE_4_NAME, response.getName()); + final TableDto response = databaseService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_4_CREATE_INTERNAL_DTO); + assertEquals(TABLE_4_INTERNALNAME, response.getName()); assertEquals(TABLE_4_INTERNALNAME, response.getInternalName()); final List<ColumnDto> columns = response.getColumns(); assertEquals(TABLE_4_COLUMNS.size(), columns.size()); @@ -630,7 +631,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(TableMalformedException.class, () -> { - databaseService.createTable(DATABASE_1_DTO, request); + databaseService.createTable(DATABASE_1_PRIVILEGED_DTO, request); }); } @@ -668,7 +669,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { .build(); /* test */ - final TableDto response = databaseService.createTable(DATABASE_1_DTO, request); + final TableDto response = databaseService.createTable(DATABASE_1_PRIVILEGED_DTO, request); assertEquals("composite_primary_key", response.getName()); assertEquals("composite_primary_key", response.getInternalName()); final List<ColumnDto> columns = response.getColumns(); @@ -699,11 +700,11 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { TableExistsException { /* mock */ - MariaDbConfig.dropTable(DATABASE_1_DTO, TABLE_1_INTERNAL_NAME); + MariaDbConfig.dropTable(DATABASE_1_PRIVILEGED_DTO, TABLE_1_INTERNAL_NAME); /* test */ - final TableDto response = databaseService.createTable(DATABASE_1_DTO, TABLE_1_CREATE_INTERNAL_DTO); - assertEquals(TABLE_1_NAME, response.getName()); + final TableDto response = databaseService.createTable(DATABASE_1_PRIVILEGED_DTO, TABLE_1_CREATE_INTERNAL_DTO); + assertEquals(TABLE_1_INTERNAL_NAME, response.getName()); assertEquals(TABLE_1_INTERNAL_NAME, response.getInternalName()); assertEquals(TABLE_1_COLUMNS.size(), response.getColumns().size()); } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java index fc9860909f..18b2dd8e01 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java @@ -53,7 +53,7 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); } @Test @@ -69,12 +69,12 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); + .thenReturn(CONTAINER_1_PRIVILEGED_DTO); when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ - queueService.insert(TABLE_1_DTO, request); + queueService.insert(TABLE_1_PRIVILEGED_DTO, request); } @Test @@ -87,10 +87,10 @@ public class QueueServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); + .thenReturn(TABLE_1_PRIVILEGED_DTO); /* test */ - queueService.insert(TABLE_1_DTO, request); + queueService.insert(TABLE_1_PRIVILEGED_DTO, request); } } 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 ea58aa1da4..56115690b5 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 @@ -45,7 +45,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); } @Test @@ -107,7 +107,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ persist_generic(QUERY_2_ID, List.of(IDENTIFIER_5_BRIEF_DTO), true); - final QueryDto response = queryService.findById(DATABASE_1_DTO, QUERY_2_ID); + final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_2_ID); assertEquals(2L, response.getId()); assertTrue(response.getIsPersisted()); } @@ -123,7 +123,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* test */ persist_generic(QUERY_1_ID, List.of(IDENTIFIER_2_BRIEF_DTO), false); - final QueryDto response = queryService.findById(DATABASE_1_DTO, QUERY_1_ID); + final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID); assertEquals(1L, response.getId()); assertFalse(response.getIsPersisted()); } @@ -140,10 +140,10 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { .thenReturn(List.of(IDENTIFIER_2_BRIEF_DTO)); when(metadataServiceGateway.getUserById(USER_1_ID)) .thenReturn(USER_1_DTO); - MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); /* test */ - final QueryDto response = queryService.findById(DATABASE_1_DTO, queryId); + final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId); assertEquals(QUERY_1_ID, response.getId()); } @@ -155,13 +155,13 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); - MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_2_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); + MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID); when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, null)) .thenReturn(List.of(IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_5_BRIEF_DTO)); /* test */ - return queryService.findAll(DATABASE_1_DTO, filterPersisted); + return queryService.findAll(DATABASE_1_PRIVILEGED_DTO, filterPersisted); } protected void persist_generic(Long queryId, List<IdentifierBriefDto> identifiers, Boolean persist) @@ -174,11 +174,11 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, queryId)) .thenReturn(identifiers); - MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_1_DTO, USER_1_ID); - MariaDbConfig.insertQueryStore(DATABASE_1_DTO, QUERY_2_DTO, USER_1_ID); + 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_DTO, queryId, persist); + queryService.persist(DATABASE_1_PRIVILEGED_DTO, queryId, persist); } } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index e29e418ca8..f235f39d63 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -7,7 +7,6 @@ import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.config.S3Config; import at.tuwien.exception.*; -import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.test.AbstractUnitTest; import com.google.common.io.Files; import lombok.extern.log4j.Log4j2; @@ -18,7 +17,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -42,7 +40,6 @@ import java.util.Map; import java.util.Set; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.when; @Log4j2 @SpringBootTest @@ -59,9 +56,6 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { @Autowired private S3Config s3Config; - @MockBean - private MetadataServiceGateway metadataServiceGateway; - @Container private static MariaDBContainer<?> mariaDBContainer = MariaDbContainerConfig.getContainer(); @@ -85,8 +79,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_3_PRIVILEGED_DTO); /* s3 */ if (s3Client.listBuckets().buckets().stream().noneMatch(b -> b.name().equals(s3Config.getS3Bucket()))) { s3Client.createBucket(CreateBucketRequest.builder() @@ -101,8 +95,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void updateTuple_succeeds() throws SQLException, RemoteUnavailableException, ContainerNotFoundException, - TableNotFoundException, TableMalformedException, QueryMalformedException, MetadataServiceException { + public void updateTuple_succeeds() throws SQLException, TableMalformedException, QueryMalformedException { /* modify row based on primary key */ final TupleUpdateDto request = TupleUpdateDto.builder() .data(new HashMap<>() {{ @@ -116,15 +109,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.updateTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -133,9 +120,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void updateTuple_modifyPrimaryKey_succeeds() throws SQLException, RemoteUnavailableException, - ContainerNotFoundException, TableNotFoundException, TableMalformedException, QueryMalformedException, - MetadataServiceException { + public void updateTuple_modifyPrimaryKey_succeeds() throws SQLException, TableMalformedException, + QueryMalformedException { /* modify row primary key based on primary key */ final TupleUpdateDto request = TupleUpdateDto.builder() .data(new HashMap<>() {{ @@ -150,15 +136,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.updateTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -167,9 +147,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void updateTuple_missingPrimaryKey_succeeds() throws SQLException, RemoteUnavailableException, - ContainerNotFoundException, TableNotFoundException, TableMalformedException, QueryMalformedException, - MetadataServiceException { + public void updateTuple_missingPrimaryKey_succeeds() throws SQLException, TableMalformedException, + QueryMalformedException { /* modify row based on non-primary key column */ final TupleUpdateDto request = TupleUpdateDto.builder() .data(new HashMap<>() {{ @@ -183,15 +162,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.updateTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -200,9 +173,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void updateTuple_notInOrder_succeeds() throws SQLException, RemoteUnavailableException, - ContainerNotFoundException, TableNotFoundException, TableMalformedException, QueryMalformedException, - MetadataServiceException { + public void updateTuple_notInOrder_succeeds() throws SQLException, TableMalformedException, + QueryMalformedException { /* modify row based on non-primary key column */ final TupleUpdateDto request = TupleUpdateDto.builder() .data(new HashMap<>() {{ @@ -216,15 +188,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.updateTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.updateTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 1", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("1", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); // <<< assertEquals("Vienna", result.get(0).get("location")); // <<< @@ -233,9 +199,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void createTuple_succeeds() throws SQLException, RemoteUnavailableException, ContainerNotFoundException, - TableNotFoundException, TableMalformedException, QueryMalformedException, StorageUnavailableException, - StorageNotFoundException, MetadataServiceException { + public void createTuple_succeeds() throws SQLException, TableMalformedException, QueryMalformedException, + StorageUnavailableException, StorageNotFoundException { /* add row with primary key */ final TupleDto request = TupleDto.builder() .data(new HashMap<>() {{ @@ -247,15 +212,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.createTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.createTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); assertEquals("Vienna", result.get(0).get("location")); @@ -264,9 +223,8 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void createTuple_autogeneratedBlob_succeeds() throws SQLException, RemoteUnavailableException, ContainerNotFoundException, - TableNotFoundException, TableMalformedException, QueryMalformedException, StorageUnavailableException, - StorageNotFoundException, MetadataServiceException, IOException { + public void createTuple_autogeneratedBlob_succeeds() throws SQLException, TableMalformedException, + QueryMalformedException, StorageUnavailableException, StorageNotFoundException, IOException { /* add row with primary key */ final TupleDto request = TupleDto.builder() .data(new HashMap<>() {{ @@ -276,26 +234,21 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { .build(); /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_3_ID, TABLE_8_ID)) - .thenReturn(TABLE_8_DTO); s3Client.putObject(PutObjectRequest.builder() .key("s3key") .bucket(s3Config.getS3Bucket()) .build(), RequestBody.fromFile(new File("src/test/resources/csv/keyboard.csv"))); /* test */ - tableService.createTuple(TABLE_8_DTO, request); - final List<Map<String, byte[]>> result = MariaDbConfig.selectQueryByteArr(DATABASE_3_DTO, "SELECT raw FROM mfcc WHERE raw IS NOT NULL", Set.of("raw")); + tableService.createTuple(TABLE_8_PRIVILEGED_DTO, request); + final List<Map<String, byte[]>> result = MariaDbConfig.selectQueryByteArr(DATABASE_3_PRIVILEGED_DTO, "SELECT raw FROM mfcc WHERE raw IS NOT NULL", Set.of("raw")); assertNotNull(result.get(0).get("raw")); assertArrayEquals(Files.toByteArray(new File("src/test/resources/csv/keyboard.csv")), result.get(0).get("raw")); } @Test - public void createTuple_notInOrder_succeeds() throws SQLException, RemoteUnavailableException, - ContainerNotFoundException, TableNotFoundException, TableMalformedException, QueryMalformedException, - StorageUnavailableException, StorageNotFoundException, MetadataServiceException { + public void createTuple_notInOrder_succeeds() throws SQLException, TableMalformedException, QueryMalformedException, + StorageUnavailableException, StorageNotFoundException { /* add row with primary key */ final TupleDto request = TupleDto.builder() .data(new HashMap<>() {{ @@ -307,15 +260,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.createTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); + tableService.createTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id, `date`, location, mintemp, rainfall FROM weather_aus WHERE id = 4", Set.of("id", "date", "location", "mintemp", "rainfall")); assertEquals("4", result.get(0).get("id")); assertEquals("2023-10-03", result.get(0).get("date")); assertEquals("Vienna", result.get(0).get("location")); @@ -324,8 +271,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void deleteTuple_succeeds() throws SQLException, RemoteUnavailableException, ContainerNotFoundException, - TableNotFoundException, TableMalformedException, QueryMalformedException, MetadataServiceException { + public void deleteTuple_succeeds() throws SQLException, TableMalformedException, QueryMalformedException { /* delete row based on primary key */ final TupleDeleteDto request = TupleDeleteDto.builder() .keys(new HashMap<>() {{ @@ -333,22 +279,15 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.deleteTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); + tableService.deleteTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); assertEquals(0, result.size()); } @Test - public void deleteTuple_withoutPrimaryKey_succeeds() throws SQLException, RemoteUnavailableException, - ContainerNotFoundException, TableNotFoundException, TableMalformedException, QueryMalformedException, - MetadataServiceException { + public void deleteTuple_withoutPrimaryKey_succeeds() throws SQLException, TableMalformedException, + QueryMalformedException { /* remove row based on non-primary key */ final TupleDeleteDto request = TupleDeleteDto.builder() .keys(new HashMap<>() {{ @@ -357,15 +296,9 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { }}) .build(); - /* mock */ - when(metadataServiceGateway.getContainerById(CONTAINER_1_ID)) - .thenReturn(CONTAINER_1_DTO); - when(metadataServiceGateway.getTableById(DATABASE_1_ID, TABLE_1_ID)) - .thenReturn(TABLE_1_DTO); - /* test */ - tableService.deleteTuple(TABLE_1_DTO, request); - final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); + tableService.deleteTuple(TABLE_1_PRIVILEGED_DTO, request); + final List<Map<String, String>> result = MariaDbConfig.selectQuery(DATABASE_1_PRIVILEGED_DTO, "SELECT id FROM weather_aus WHERE id = 1", Set.of("id")); assertEquals(0, result.size()); } @@ -374,7 +307,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getStatistics_succeeds() throws TableMalformedException, SQLException, TableNotFoundException { /* test */ - final TableStatisticDto response = tableService.getStatistics(TABLE_2_DTO); + final TableStatisticDto response = tableService.getStatistics(TABLE_2_PRIVILEGED_DTO); assertEquals(TABLE_2_COLUMNS.size(), response.getColumns().size()); log.trace("response rows: {}", response.getRows()); assertEquals(3L, response.getRows()); @@ -403,18 +336,18 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void delete_succeeds() throws SQLException, QueryMalformedException { /* test */ - tableService.delete(TABLE_1_DTO); + tableService.delete(TABLE_1_PRIVILEGED_DTO); } @Test public void delete_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(QueryMalformedException.class, () -> { - tableService.delete(TABLE_5_DTO); + tableService.delete(TABLE_5_PRIVILEGED_DTO); }); } @@ -422,7 +355,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_succeeds() throws SQLException, QueryMalformedException { /* test */ - final Long response = tableService.getCount(TABLE_1_DTO, null); + final Long response = tableService.getCount(TABLE_1_PRIVILEGED_DTO, null); assertEquals(3, response); } @@ -430,7 +363,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_timestamp_succeeds() throws SQLException, QueryMalformedException { /* test */ - final Long response = tableService.getCount(TABLE_1_DTO, Instant.ofEpochSecond(0)); + final Long response = tableService.getCount(TABLE_1_PRIVILEGED_DTO, Instant.ofEpochSecond(0)); assertEquals(0, response); } @@ -438,11 +371,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void getCount_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(QueryMalformedException.class, () -> { - tableService.getCount(TABLE_5_DTO, null); + tableService.getCount(TABLE_5_PRIVILEGED_DTO, null); }); } @@ -450,7 +383,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void history_succeeds() throws SQLException, TableNotFoundException { /* test */ - final List<TableHistoryDto> response = tableService.history(TABLE_1_DTO, 1000L); + final List<TableHistoryDto> response = tableService.history(TABLE_1_PRIVILEGED_DTO, 1000L); assertEquals(1, response.size()); final TableHistoryDto history0 = response.get(0); assertNotNull(history0.getTimestamp()); @@ -462,11 +395,11 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { public void history_notFound_fails() throws SQLException { /* mock */ - MariaDbConfig.createDatabase(CONTAINER_1_DTO, DATABASE_2_INTERNALNAME); + MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME); /* test */ assertThrows(TableNotFoundException.class, () -> { - tableService.history(TABLE_5_DTO, null); + tableService.history(TABLE_5_PRIVILEGED_DTO, null); }); } @@ -488,7 +421,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { .build(), RequestBody.fromFile(new File("src/test/resources/csv/weather_aus.csv"))); /* test */ - tableService.importDataset(TABLE_1_DTO, request); + tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); } @Test @@ -509,7 +442,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(TableMalformedException.class, () -> { - tableService.importDataset(TABLE_1_DTO, request); + tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); }); } @@ -531,7 +464,7 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { /* test */ assertThrows(MalformedException.class, () -> { - tableService.importDataset(TABLE_1_DTO, request); + tableService.importDataset(TABLE_1_PRIVILEGED_DTO, request); }); } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java index 74e2bd3d68..2edf7f5f28 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java @@ -34,14 +34,14 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest { genesis(); /* metadata database */ MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME); - MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO); + MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_PRIVILEGED_DTO); } @Test public void delete_succeeds() throws SQLException, ViewMalformedException { /* test */ - viewService.delete(VIEW_1_DTO); + viewService.delete(VIEW_1_PRIVILEGED_DTO); } } 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 e31455a75e..d2a66ab548 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 @@ -4,7 +4,7 @@ import at.tuwien.api.database.table.TableDto; import at.tuwien.exception.MetadataServiceException; import at.tuwien.exception.RemoteUnavailableException; import at.tuwien.exception.TableNotFoundException; -import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.service.CredentialService; import at.tuwien.service.QueueService; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -28,14 +28,13 @@ public class DefaultListener implements MessageListener { private final ObjectMapper objectMapper; private final QueueService queueService; - private final MetadataServiceGateway metadataServiceGateway; + private final CredentialService credentialService; @Autowired - public DefaultListener(ObjectMapper objectMapper, QueueService queueService, - MetadataServiceGateway metadataServiceGateway) { + public DefaultListener(ObjectMapper objectMapper, QueueService queueService, CredentialService credentialService) { this.objectMapper = objectMapper; this.queueService = queueService; - this.metadataServiceGateway = metadataServiceGateway; + this.credentialService = credentialService; } @Override @@ -59,7 +58,7 @@ public class DefaultListener implements MessageListener { log.trace("received message for table with id {} of database id {}: {} bytes", tableId, databaseId, message.getMessageProperties().getContentLength()); final Map<String, Object> body; try { - final TableDto table = metadataServiceGateway.getTableById(databaseId, tableId); + final TableDto table = credentialService.getTable(databaseId, tableId); body = objectMapper.readValue(message.getBody(), typeRef); queueService.insert(table, body); } catch (IOException e) { 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 e287cd9d9c..956d50b0dd 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 @@ -99,6 +99,7 @@ public interface DataMapper { .vdbid(database.getId()) .isInitialView(false) .isPublic(database.getIsPublic()) + .isSchemaPublic(database.getIsSchemaPublic()) .query(resultSet.getString(9)) .queryHash(Hashing.sha256() .hashString(resultSet.getString(9), StandardCharsets.UTF_8) 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 0e89f79cb1..8be9ef68e3 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 @@ -541,7 +541,7 @@ public interface MariaDbMapper { } /* parameterized query for prepared statement */ final StringBuilder statement = new StringBuilder("UPDATE `") - .append(table.getDatabase()) + .append(table.getDatabase().getInternalName()) .append("`.`") .append(table.getInternalName()) .append("` SET "); @@ -579,7 +579,7 @@ public interface MariaDbMapper { } /* parameterized query for prepared statement */ final StringBuilder statement = new StringBuilder("INSERT INTO `") - .append(table.getDatabase()) + .append(table.getDatabase().getInternalName()) .append("`.`") .append(table.getInternalName()) .append("` ("); 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 359e251ea2..116737e2ed 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 @@ -52,8 +52,6 @@ public interface MetadataMapper { IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data); - TableDto databaseDtoToTableDto(DatabaseDto data); - default String metricToUri(String baseUrl, Long databaseId, Long tableId, Long subsetId, Long viewId) { final StringBuilder uri = new StringBuilder(baseUrl) .append("/database/") diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 314148663b..c325d7b33a 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -37,9 +37,6 @@ public interface DatabaseService { TableDto createTable(DatabaseDto database, TableCreateDto data) throws SQLException, TableMalformedException, TableExistsException, TableNotFoundException; - Boolean existsView(DatabaseDto database, String viewName) throws SQLException, - QueryMalformedException; - /** * Creates a view in given data database with view definition. * @param database The data database object. diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java index 1786ca5cb4..37a345426a 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DataConnector.java @@ -26,11 +26,11 @@ public abstract class DataConnector { } public ComboPooledDataSource getDataSource(ViewDto view) { - return getDataSource(view.getDatabase().getContainer(), null); + return getDataSource(view.getDatabase().getContainer(), view.getDatabase().getInternalName()); } public ComboPooledDataSource getDataSource(TableDto table) { - return getDataSource(table.getDatabase().getContainer(), null); + return getDataSource(table.getDatabase().getContainer(), table.getDatabase().getInternalName()); } public ComboPooledDataSource getDataSource(ContainerDto container) { 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 d733800a36..4d899c9978 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 @@ -93,7 +93,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas @Override public TableDto createTable(DatabaseDto database, TableCreateDto data) throws SQLException, - TableMalformedException, TableExistsException { + TableMalformedException, TableExistsException, TableNotFoundException { final String tableName = mariaDbMapper.nameToInternalName(data.getName()); final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); @@ -116,35 +116,10 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas dataSource.close(); } log.info("Created table with name {}", tableName); - final TableDto table = metadataMapper.databaseDtoToTableDto(database); - table.setInternalName(tableName); + final TableDto table = inspectTable(database, tableName); return table; } - @Override - public Boolean existsView(DatabaseDto database, String viewName) throws SQLException, - QueryMalformedException { - final ComboPooledDataSource dataSource = getDataSource(database); - final Connection connection = dataSource.getConnection(); - final Boolean queryResult; - try { - /* find view data */ - final long start = System.currentTimeMillis(); - final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.selectExistsTableOrViewRawQuery()); - statement.setString(1, database.getInternalName()); - statement.setString(2, viewName); - final ResultSet resultSet = statement.executeQuery(); - log.trace("executed statement in {} ms", System.currentTimeMillis() - start); - queryResult = mariaDbMapper.resultSetToBoolean(resultSet); - } catch (SQLException e) { - log.error("Failed to prepare statement {}", e.getMessage()); - throw new QueryMalformedException("Failed to prepare statement: " + e.getMessage(), e); - } finally { - dataSource.close(); - } - return queryResult; - } - @Override public ViewDto createView(DatabaseDto database, CreateViewDto data) throws SQLException, ViewMalformedException { 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 a22b8749ae..56dd986324 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 @@ -13,7 +13,6 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ForeignKeyBriefDto { - @NonNull @Schema(example = "8") private Long id; } diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java index 9d5ab6b3d7..f78366fe89 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java @@ -37,13 +37,11 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_1_USER_1_READ_ACCESS.setType(AccessType.READ); DATABASE_1.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS, DATABASE_1_USER_2_WRITE_OWN_ACCESS, DATABASE_1_USER_3_WRITE_ALL_ACCESS))); DATABASE_1_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS_DTO, DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO, DATABASE_1_USER_3_WRITE_ALL_ACCESS_DTO))); - TABLE_1.setDatabase(DATABASE_1); + DATABASE_1_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_1_USER_1_READ_ACCESS_DTO, DATABASE_1_USER_2_WRITE_OWN_ACCESS_DTO, DATABASE_1_USER_3_WRITE_ALL_ACCESS_DTO))); UNIT_1.setId(UNIT_1_ID); + TABLE_1.setDatabase(DATABASE_1); TABLE_1.setColumns(new LinkedList<>(TABLE_1_COLUMNS)); TABLE_1.setConstraints(TABLE_1_CONSTRAINTS); - TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); - TABLE_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); - TABLE_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); VIEW_1_DTO.setIdentifiers(VIEW_1_DTO_IDENTIFIERS); DATABASE_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4))); IDENTIFIER_1.setDatabase(DATABASE_1); @@ -58,13 +56,18 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_1_DTO.setViews(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))); TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); TABLE_1_DTO.setConstraints(TABLE_1_CONSTRAINTS_DTO); + TABLE_1_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_1_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); + TABLE_1_PRIVILEGED_DTO.setConstraints(TABLE_1_CONSTRAINTS_DTO); TABLE_2.setDatabase(DATABASE_1); TABLE_2.setColumns(new LinkedList<>(TABLE_2_COLUMNS)); TABLE_2_CONSTRAINTS.getForeignKeys().get(0).getReferences().get(0).setForeignKey(TABLE_2_CONSTRAINTS.getForeignKeys().get(0)); TABLE_2.setConstraints(TABLE_2_CONSTRAINTS); TABLE_2_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); - TABLE_2_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); TABLE_2_DTO.setConstraints(TABLE_2_CONSTRAINTS_DTO); + TABLE_2_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_2_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_2_COLUMNS_DTO)); + TABLE_2_PRIVILEGED_DTO.setConstraints(TABLE_2_CONSTRAINTS_DTO); TABLE_3.setDatabase(DATABASE_1); TABLE_3.setColumns(new LinkedList<>(TABLE_3_COLUMNS)); TABLE_3.setConstraints(TABLE_3_CONSTRAINTS); @@ -75,6 +78,9 @@ public abstract class AbstractUnitTest extends BaseTest { TABLE_4.setConstraints(TABLE_4_CONSTRAINTS); TABLE_4_DTO.setColumns(TABLE_4_COLUMNS_DTO); TABLE_4_DTO.setConstraints(TABLE_4_CONSTRAINTS_DTO); + TABLE_4_PRIVILEGED_DTO.setDatabase(DATABASE_1_PRIVILEGED_DTO); + TABLE_4_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_4_COLUMNS_DTO)); + TABLE_4_PRIVILEGED_DTO.setConstraints(TABLE_4_CONSTRAINTS_DTO); VIEW_1.setDatabase(DATABASE_1); VIEW_1.setColumns(new LinkedList<>(VIEW_1_COLUMNS)); VIEW_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_3))); @@ -93,6 +99,7 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_2.setSubsets(new LinkedList<>()); DATABASE_2.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS, DATABASE_2_USER_3_READ_ACCESS))); DATABASE_2_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO))); + DATABASE_2_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO))); DATABASE_2.setTables(new LinkedList<>(List.of(TABLE_5, TABLE_6, TABLE_7))); VIEW_4.setColumns(new LinkedList<>(VIEW_4_COLUMNS)); DATABASE_2.setViews(new LinkedList<>(List.of(VIEW_4))); @@ -105,8 +112,7 @@ public abstract class AbstractUnitTest extends BaseTest { TABLE_5.setConstraints(TABLE_5_CONSTRAINTS); TABLE_5_DTO.setColumns(new LinkedList<>(TABLE_5_COLUMNS_DTO)); TABLE_5_DTO.setConstraints(TABLE_5_CONSTRAINTS_DTO); - TABLE_5_DTO.setColumns(TABLE_5_COLUMNS_DTO); - TABLE_5_DTO.setConstraints(TABLE_5_CONSTRAINTS_DTO); + TABLE_5_PRIVILEGED_DTO.setDatabase(DATABASE_2_PRIVILEGED_DTO); TABLE_6.setDatabase(DATABASE_2); TABLE_6.setColumns(new LinkedList<>(TABLE_6_COLUMNS)); TABLE_6.setConstraints(TABLE_6_CONSTRAINTS); @@ -123,20 +129,22 @@ public abstract class AbstractUnitTest extends BaseTest { IDENTIFIER_5.setDatabase(DATABASE_2); /* DATABASE 3 */ DATABASE_3.setSubsets(new LinkedList<>()); - DATABASE_3.setAccesses(new LinkedList<>(List.of(DATABASE_3_USER_1_WRITE_ALL_ACCESS))); DATABASE_3.setTables(new LinkedList<>(List.of(TABLE_8))); DATABASE_3.setViews(new LinkedList<>(List.of(VIEW_5))); DATABASE_3.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_6))); + DATABASE_3.setAccesses(new LinkedList<>(List.of(DATABASE_3_USER_1_WRITE_ALL_ACCESS))); DATABASE_3_DTO.setTables(new LinkedList<>(List.of(TABLE_8_DTO))); DATABASE_3_DTO.setViews(new LinkedList<>(List.of(VIEW_5_DTO))); DATABASE_3_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_6_DTO))); + DATABASE_3_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_3_USER_1_WRITE_ALL_ACCESS_DTO))); + DATABASE_3_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_3_USER_1_WRITE_ALL_ACCESS_DTO))); TABLE_8.setDatabase(DATABASE_3); TABLE_8.setColumns(new LinkedList<>(TABLE_8_COLUMNS)); TABLE_8.setConstraints(TABLE_8_CONSTRAINTS); TABLE_8_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); TABLE_8_DTO.setConstraints(TABLE_8_CONSTRAINTS_DTO); - TABLE_8_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); - TABLE_8_DTO.setConstraints(TABLE_8_CONSTRAINTS_DTO); + TABLE_8_PRIVILEGED_DTO.setColumns(new LinkedList<>(TABLE_8_COLUMNS_DTO)); + TABLE_8_PRIVILEGED_DTO.setDatabase(DATABASE_3_PRIVILEGED_DTO); VIEW_5.setDatabase(DATABASE_3); VIEW_5.setColumns(VIEW_5_COLUMNS); VIEW_5_DTO.setColumns(VIEW_5_COLUMNS_DTO); 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 21e7e0519b..f4b89de585 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 @@ -5,23 +5,23 @@ import at.tuwien.api.amqp.CreateVirtualHostDto; 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.auth.CreateUserDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.image.*; import at.tuwien.api.database.*; import at.tuwien.api.database.query.QueryBriefDto; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.CreateTableDto; +import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; import at.tuwien.api.database.table.columns.*; import at.tuwien.api.database.table.columns.concepts.*; -import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.*; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; @@ -151,6 +151,8 @@ public abstract class BaseTest { public final static String MARIADB_IMAGE = "mariadb:11.3.2"; + public final static String RABBITMQ_IMAGE = "rabbitmq:3.13.7"; + public final static String KEYCLOAK_IMAGE = "quay.io/keycloak/keycloak:24.0"; public final static String[] DEFAULT_SEMANTICS_HANDLING = new String[]{"default-semantics-handling", @@ -1268,10 +1270,7 @@ public abstract class BaseTest { public final static String DATABASE_1_EXCHANGE = "dbrepo"; public final static Instant DATABASE_1_CREATED = Instant.ofEpochSecond(1677399741L) /* 2023-02-26 08:22:21 (UTC) */; public final static Instant DATABASE_1_LAST_MODIFIED = Instant.ofEpochSecond(1677399741L) /* 2023-02-26 08:22:21 (UTC) */; - public final static UUID DATABASE_1_OWNER = USER_1_ID; public final static UUID DATABASE_1_CREATED_BY = USER_1_ID; - public final static UserDto DATABASE_1_CREATOR_DTO = USER_1_DTO; - public final static UserDto DATABASE_1_OWNER_DTO = USER_1_DTO; public final static CreateDatabaseDto DATABASE_1_CREATE = CreateDatabaseDto.builder() .name(DATABASE_1_NAME) @@ -1664,7 +1663,7 @@ public abstract class BaseTest { .routingKey(TABLE_1_ROUTING_KEY) .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_1_COLUMNS_DTO */) - .constraints(null) /* TABLE_1_CONSTRAINT_DTO */ + .constraints(null) /* TABLE_1_CONSTRAINTS_DTO */ .owner(USER_1_BRIEF_DTO) .avgRowLength(TABLE_1_AVG_ROW_LENGTH) .numRows(TABLE_1_NUM_ROWS) @@ -2243,6 +2242,28 @@ public abstract class BaseTest { .maxDataLength(TABLE_4_MAX_DATA_LENGTH) .build(); + public final static TableDto TABLE_4_PRIVILEGED_DTO = TableDto.builder() + .id(TABLE_4_ID) + .tdbid(DATABASE_1_ID) + .internalName(TABLE_4_INTERNALNAME) + .description(TABLE_4_DESCRIPTION) + .name(TABLE_4_NAME) + .queueName(TABLE_4_QUEUE_NAME) + .routingKey(TABLE_4_ROUTING_KEY) + .database(null) /* DATABASE_1_DTO */ + .columns(new LinkedList<>()) /* TABLE_4_COLUMNS_DTO */ + .constraints(null) /* TABLE_4_CONSTRAINTS_DTO */ + .isVersioned(TABLE_4_VERSIONED) + .isPublic(TABLE_4_IS_PUBLIC) + .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) + .owner(USER_1_BRIEF_DTO) + .avgRowLength(TABLE_4_AVG_ROW_LENGTH) + .numRows(TABLE_4_NUM_ROWS) + .dataLength(TABLE_4_DATA_LENGTH) + .maxDataLength(TABLE_4_MAX_DATA_LENGTH) + .lastRetrieved(Instant.now()) + .build(); + public final static TableBriefDto TABLE_4_BRIEF_DTO = TableBriefDto.builder() .id(TABLE_4_ID) .databaseId(DATABASE_1_ID) @@ -2909,6 +2930,33 @@ public abstract class BaseTest { .resultNumber(3L) .build(); + public final static ViewDto QUERY_1_VIEW_DTO = ViewDto.builder() + .vdbid(QUERY_1_DATABASE_ID) + .query(QUERY_1_STATEMENT) + .queryHash(QUERY_1_QUERY_HASH) + .owner(USER_1_BRIEF_DTO) + .columns(new LinkedList<>(List.of(ViewColumnDto.builder() + .name("id") + .internalName("id") + .build(), + ViewColumnDto.builder() + .name("date") + .internalName("date") + .build(), + ViewColumnDto.builder() + .name("location") + .internalName("location") + .build(), + ViewColumnDto.builder() + .name("mintemp") + .internalName("mintemp") + .build(), + ViewColumnDto.builder() + .name("rainfall") + .internalName("rainfall") + .build()))) + .build(); + public final static QueryBriefDto QUERY_1_BRIEF_DTO = QueryBriefDto.builder() .id(QUERY_1_ID) .databaseId(QUERY_1_DATABASE_ID) @@ -3080,6 +3128,21 @@ public abstract class BaseTest { .owner(USER_1_BRIEF_DTO) .build(); + public final static ViewDto QUERY_5_VIEW_DTO = ViewDto.builder() + .vdbid(DATABASE_3_ID) + .query(QUERY_5_STATEMENT) + .queryHash(QUERY_5_QUERY_HASH) + .owner(USER_1_BRIEF_DTO) + .columns(new LinkedList<>(List.of(ViewColumnDto.builder() + .name("id") + .internalName("id") + .build(), + ViewColumnDto.builder() + .name("value") + .internalName("value") + .build()))) + .build(); + public final static List<Map<String, Object>> QUERY_5_RESULT_DTO = new LinkedList<>(List.of( Map.of("id", BigInteger.valueOf(1L), "value", 11.2), Map.of("id", BigInteger.valueOf(2L), "value", 11.3), @@ -7518,7 +7581,7 @@ public abstract class BaseTest { .lastModified(DATABASE_1_LAST_MODIFIED) .ownedBy(DATABASE_1_CREATED_BY) .owner(USER_1) - .ownedBy(DATABASE_1_OWNER) + .ownedBy(USER_1_ID) .owner(USER_1) .image(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) .contactPerson(USER_1_ID) @@ -7541,6 +7604,7 @@ public abstract class BaseTest { .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))) .tables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))) .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) + .owner(USER_1_BRIEF_DTO) .build(); public final static DatabaseDto DATABASE_1_PRIVILEGED_DTO = DatabaseDto.builder() @@ -7551,9 +7615,11 @@ public abstract class BaseTest { .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_1_INTERNALNAME) .exchangeName(DATABASE_1_EXCHANGE) + .accesses(new LinkedList<>(List.of())) /* DATABASE_1_USER_1_READ_ACCESS_DTO */ .identifiers(new LinkedList<>(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO))) .tables(new LinkedList<>(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO))) .views(new LinkedList<>(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO))) + .owner(USER_1_BRIEF_DTO) .lastRetrieved(Instant.now()) .build(); @@ -7891,6 +7957,13 @@ public abstract class BaseTest { .user(USER_1) .build(); + public final static DatabaseAccessDto DATABASE_3_USER_1_WRITE_ALL_ACCESS_DTO = DatabaseAccessDto.builder() + .type(AccessTypeDto.WRITE_ALL) + .hdbid(DATABASE_3_ID) + .huserid(USER_1_ID) + .user(USER_1_BRIEF_DTO) + .build(); + public final static DatabaseAccess DATABASE_3_USER_2_READ_ACCESS = DatabaseAccess.builder() .type(AccessType.READ) .hdbid(DATABASE_3_ID) @@ -8087,9 +8160,9 @@ public abstract class BaseTest { .foreignKeys(new LinkedList<>()) .uniques(new LinkedList<>()) .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder() + .id(1L) .table(TABLE_1_BRIEF_DTO) .column(TABLE_1_COLUMNS_BRIEF_0_DTO) - .id(1L) .build()))) .build(); -- GitLab From 82470fac4c972649f4a39f5930bde194fc369d19 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sat, 25 Jan 2025 15:18:11 +0100 Subject: [PATCH 20/52] Added OIDC auth Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-ui/bun.lockb | Bin 381903 -> 441810 bytes dbrepo-ui/components/OntologiesList.vue | 15 +- .../components/database/DatabaseToolbar.vue | 21 +- dbrepo-ui/components/identifier/Persist.vue | 20 +- dbrepo-ui/components/identifier/Select.vue | 15 +- dbrepo-ui/components/identifier/Summary.vue | 4 +- dbrepo-ui/components/subset/Builder.vue | 15 +- dbrepo-ui/components/subset/SubsetList.vue | 9 +- dbrepo-ui/components/subset/SubsetToolbar.vue | 20 +- dbrepo-ui/components/table/TableList.vue | 14 +- dbrepo-ui/components/table/TableToolbar.vue | 27 +- dbrepo-ui/components/user/UserToolbar.vue | 24 +- dbrepo-ui/components/view/ViewList.vue | 5 - dbrepo-ui/components/view/ViewToolbar.vue | 23 +- dbrepo-ui/composables/axios-instance.ts | 36 +-- dbrepo-ui/composables/upload-service.ts | 10 +- dbrepo-ui/composables/user-service.ts | 45 --- dbrepo-ui/layouts/default.vue | 61 ++-- dbrepo-ui/nuxt.config.ts | 29 +- dbrepo-ui/package.json | 1 + dbrepo-ui/pages/container/index.vue | 24 +- .../pages/database/[database_id]/info.vue | 15 +- .../persist/[identifier_id]/index.vue | 18 +- .../database/[database_id]/persist/index.vue | 23 +- .../pages/database/[database_id]/settings.vue | 20 +- .../[database_id]/subset/[subset_id]/info.vue | 7 +- .../persist/[identifier_id]/index.vue | 18 +- .../subset/[subset_id]/persist/index.vue | 17 +- .../database/[database_id]/subset/create.vue | 18 +- .../[database_id]/table/[table_id]/data.vue | 31 +- .../[database_id]/table/[table_id]/import.vue | 15 +- .../[database_id]/table/[table_id]/info.vue | 27 +- .../persist/[identifier_id]/index.vue | 14 +- .../table/[table_id]/persist/index.vue | 7 +- .../[database_id]/table/[table_id]/schema.vue | 25 +- .../table/[table_id]/settings.vue | 31 +- .../[database_id]/table/create/dataset.vue | 14 +- .../[database_id]/table/create/schema.vue | 14 +- .../[database_id]/view/[view_id]/data.vue | 19 +- .../[database_id]/view/[view_id]/info.vue | 24 +- .../persist/[identifier_id]/index.vue | 14 +- .../view/[view_id]/persist/index.vue | 7 +- .../[database_id]/view/[view_id]/schema.vue | 20 +- .../[database_id]/view/[view_id]/settings.vue | 29 +- .../database/[database_id]/view/create.vue | 16 +- dbrepo-ui/pages/index.vue | 35 ++- dbrepo-ui/pages/login.vue | 160 ---------- dbrepo-ui/pages/search.vue | 13 +- dbrepo-ui/pages/semantic/index.vue | 194 ------------- .../semantic/ontology/_ontology_id/index.vue | 273 ------------------ dbrepo-ui/pages/semantic/ontology/index.vue | 96 ------ dbrepo-ui/pages/signup.vue | 6 +- dbrepo-ui/pages/user/authentication.vue | 26 +- dbrepo-ui/pages/user/developer.vue | 230 --------------- dbrepo-ui/pages/user/index.vue | 20 +- dbrepo-ui/pages/user/info.vue | 43 +-- dbrepo-ui/stores/cache.js | 20 ++ dbrepo-ui/stores/user.js | 60 ---- docker-compose.yml | 9 +- 59 files changed, 460 insertions(+), 1586 deletions(-) delete mode 100644 dbrepo-ui/pages/login.vue delete mode 100644 dbrepo-ui/pages/semantic/index.vue delete mode 100644 dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue delete mode 100644 dbrepo-ui/pages/semantic/ontology/index.vue delete mode 100644 dbrepo-ui/pages/user/developer.vue delete mode 100644 dbrepo-ui/stores/user.js diff --git a/dbrepo-ui/bun.lockb b/dbrepo-ui/bun.lockb index 45a8c51c621dab127458d68a4493b23d2df9f88d..7ee1d3897245ee94212d8bfb6a6b97556b64f1d2 100755 GIT binary patch delta 109688 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 delta 75538 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 diff --git a/dbrepo-ui/components/OntologiesList.vue b/dbrepo-ui/components/OntologiesList.vue index c7120cac4a..432d26e428 100644 --- a/dbrepo-ui/components/OntologiesList.vue +++ b/dbrepo-ui/components/OntologiesList.vue @@ -34,29 +34,20 @@ </div> </template> +<script setup> +</script> <script> -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { data () { return { - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, ontologies () { - return this.cacheStore.getOntologies + return [] } }, mounted () { diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue index 4177ae592c..9d43b262e3 100644 --- a/dbrepo-ui/components/database/DatabaseToolbar.vue +++ b/dbrepo-ui/components/database/DatabaseToolbar.vue @@ -81,9 +81,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import { useCacheStore } from '@/stores/cache.js' -import { useUserStore } from '@/stores/user.js' import ResourceStatus from '@/components/ResourceStatus.vue' export default { @@ -94,8 +100,7 @@ export default { return { tab: null, error: false, - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { @@ -103,13 +108,7 @@ export default { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles + return this.cacheStore.getAccess }, isContrastTheme () { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') @@ -172,7 +171,7 @@ export default { if (!this.database || !this.user) { return false } - return this.database.owner.username === this.user.username + return this.database.owner.id === this.userInfo.uid }, buttonVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index 3dba450e63..408d7e8265 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -827,10 +827,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import { formatYearUTC, formatMonthUTC, formatDayUTC, languages } from '@/utils' import { useCacheStore } from '@/stores/cache.js' -import { useUserStore } from '@/stores/user.js' import { MerkleJson } from 'merkle-json' export default { @@ -962,17 +968,10 @@ export default { { value: 'IsObsoletedBy' }, { value: 'Obsoletes' } ], - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, isSubset () { return this.type === 'subset' }, @@ -1045,9 +1044,6 @@ export default { } } }, - isUpdate () { - return 'id' in this.identifier && this.identifier.id - }, canInsertSelf () { if (!this.user) { return false diff --git a/dbrepo-ui/components/identifier/Select.vue b/dbrepo-ui/components/identifier/Select.vue index 4404a09635..84f87e321f 100644 --- a/dbrepo-ui/components/identifier/Select.vue +++ b/dbrepo-ui/components/identifier/Select.vue @@ -41,10 +41,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import Banner from '@/components/identifier/Banner.vue' import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -68,17 +74,10 @@ export default { data () { return { idx: null, - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, displayIdentifiers () { if (!this.identifiers) { return [] diff --git a/dbrepo-ui/components/identifier/Summary.vue b/dbrepo-ui/components/identifier/Summary.vue index 655a7bb907..6ef120599b 100644 --- a/dbrepo-ui/components/identifier/Summary.vue +++ b/dbrepo-ui/components/identifier/Summary.vue @@ -170,10 +170,10 @@ export default { }, computed: { access () { - return this.userStore.getAccess.value + return this.cacheStore.getAccess }, database () { - return this.cacheStore.getDatabase.value + return this.cacheStore.getDatabase }, pid () { return `/pid/${this.database.identifier.id}` diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index b45881479c..ae7df27683 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="loggedIn"> <v-toolbar flat> <v-btn size="small" @@ -303,12 +304,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> import TimeDrift from '@/components/TimeDrift.vue' import Raw from '@/components/subset/Raw.vue' import Results from '@/components/subset/Results.vue' import { useCacheStore } from '@/stores/cache.js' -import { useUserStore } from '@/stores/user.js' import { format } from 'sql-formatter' export default { @@ -359,8 +364,7 @@ export default { tabs: 0, loadingQuery: false, loadingColumns: false, - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { @@ -388,9 +392,6 @@ export default { } return this.database.container.image.data_types }, - user () { - return this.userStore.getUser - }, viewNames () { if (!this.database) { return [] diff --git a/dbrepo-ui/components/subset/SubsetList.vue b/dbrepo-ui/components/subset/SubsetList.vue index 6908b2b438..eb6a27aacd 100644 --- a/dbrepo-ui/components/subset/SubsetList.vue +++ b/dbrepo-ui/components/subset/SubsetList.vue @@ -45,8 +45,6 @@ </template> <script> -import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -55,14 +53,10 @@ export default { loadingSubsets: false, loadingIdentifiers: false, subsets: [], - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -130,7 +124,6 @@ export default { } } </script> - <style lang="scss" scoped> .pid-icon { flex: 0 !important; diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index d5f45e48e3..45ca762628 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -55,10 +55,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +</script> <script> import DownloadButton from '@/components/identifier/DownloadButton.vue' import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -71,7 +76,6 @@ export default { loading: false, loadingSave: false, downloadLoading: false, - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -86,13 +90,7 @@ export default { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles + return this.cacheStore.getAccess }, subset () { return this.cacheStore.getSubset @@ -154,10 +152,10 @@ export default { return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, canGetPid () { - if (!this.user || !this.subset || !this.database) { + if (!this.userInfo || !this.subset || !this.database) { return false } - return this.database.owner.id === this.user.id || (this.subset.owner.id === this.user.id && this.hasReadAccess) + return this.database.owner.id === this.userInfo.uid || (this.subset.owner.id === this.userInfo.uid && this.hasReadAccess) }, title () { if (!this.identifier) { diff --git a/dbrepo-ui/components/table/TableList.vue b/dbrepo-ui/components/table/TableList.vue index b78e20ae3a..d34483422d 100644 --- a/dbrepo-ui/components/table/TableList.vue +++ b/dbrepo-ui/components/table/TableList.vue @@ -38,9 +38,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -74,19 +80,15 @@ export default { { value: 'string', title: 'Character Varying' }, { value: 'text', title: 'Text' } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, tables () { if (!this.database) { diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue index d6fd4868ea..9aee22348f 100644 --- a/dbrepo-ui/components/table/TableToolbar.vue +++ b/dbrepo-ui/components/table/TableToolbar.vue @@ -77,10 +77,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import EditTuple from '@/components/dialogs/EditTuple.vue' import { useCacheStore } from '@/stores/cache.js' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -93,8 +99,7 @@ export default { error: false, edit: false, dropTableDialog: false, - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { @@ -105,7 +110,7 @@ export default { return this.cacheStore.getTable }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -113,17 +118,11 @@ export default { } return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, canUpdateTable () { if (!this.roles || !this.user || !this.table) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.user.id + return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid }, canExecuteQuery () { if (!this.roles || !this.table || !this.user) { @@ -149,7 +148,7 @@ export default { if (!this.user) { return false } - return this.hasReadAccess || this.table.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid }, canViewSchema () { if (!this.table) { @@ -161,7 +160,7 @@ export default { if (!this.user) { return false } - return this.hasReadAccess || this.table.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid }, canImportCsv () { if (!this.roles || !this.table || !this.user) { @@ -173,7 +172,7 @@ export default { if (!this.user || !this.table || !this.database) { return false } - return this.database.owner.id === this.user.id || this.table.owner.id === this.user.id + return this.database.owner.id === this.userInfo.uid || this.table.owner.id === this.userInfo.uid }, buttonVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/components/user/UserToolbar.vue b/dbrepo-ui/components/user/UserToolbar.vue index e5a20c75a3..868bab88a9 100644 --- a/dbrepo-ui/components/user/UserToolbar.vue +++ b/dbrepo-ui/components/user/UserToolbar.vue @@ -1,6 +1,9 @@ <template> - <div> - <v-toolbar title="Settings" flat> + <div + v-if="loggedIn"> + <v-toolbar + title="Settings" + flat> <template v-slot:extension> <v-tabs v-model="tab" @@ -11,31 +14,20 @@ <v-tab :text="$t('toolbars.user.authentication')" to="/user/authentication" /> - <v-tab - :text="$t('toolbars.user.developer')" - to="/user/developer" /> </v-tabs> </template> </v-toolbar> </div> </template> +<script setup> +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> -import { useUserStore } from '@/stores/user.js' - export default { data () { return { tab: null, - userStore: useUserStore() - } - }, - computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles } } } diff --git a/dbrepo-ui/components/view/ViewList.vue b/dbrepo-ui/components/view/ViewList.vue index d6539bd253..58038b7a82 100644 --- a/dbrepo-ui/components/view/ViewList.vue +++ b/dbrepo-ui/components/view/ViewList.vue @@ -34,7 +34,6 @@ </template> <script> -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -43,14 +42,10 @@ export default { loading: false, loadingDetails: false, error: false, - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index 4ed83ff43f..74eac9dedf 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -56,8 +56,14 @@ </v-toolbar> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' import CreateOntology from '@/components/dialogs/CreateOntology.vue' import ViewVisibility from '@/components/dialogs/ViewVisibility.vue' @@ -73,7 +79,6 @@ export default { loading: false, loadingDelete: false, updateViewDialog: false, - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -101,7 +106,7 @@ export default { if (!this.user) { return false } - return this.hasReadAccess || this.view.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.view.owner.id === this.userInfo.id || this.database.owner.id === this.userInfo.id }, canViewSchema () { if (!this.view) { @@ -113,13 +118,13 @@ export default { if (!this.user) { return false } - return this.hasReadAccess || this.view.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.view.owner.id === this.userInfo.id || this.database.owner.id === this.userInfo.id }, canViewSettings () { if (!this.user || !this.view) { return false } - return this.view.owner.id === this.user.id + return this.view.owner.id === this.userInfo.id }, canCreatePid () { if (!this.roles || !this.user || !this.view) { @@ -129,13 +134,7 @@ export default { return this.roles.includes('create-identifier') && userService.hasReadAccess(this.access) }, access () { - return this.userStore.getAccess - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { diff --git a/dbrepo-ui/composables/axios-instance.ts b/dbrepo-ui/composables/axios-instance.ts index 95edea3c28..ca7a7b111c 100644 --- a/dbrepo-ui/composables/axios-instance.ts +++ b/dbrepo-ui/composables/axios-instance.ts @@ -1,11 +1,9 @@ import axios, {type AxiosInstance} from 'axios' -import {useUserStore} from '@/stores/user' let instance: AxiosInstance | null = null; export const useAxiosInstance = () => { const config = useRuntimeConfig() - const userStore = useUserStore() if (!instance) { instance = axios.create({ timeout: 90_000, @@ -18,38 +16,16 @@ export const useAxiosInstance = () => { baseURL: config.public.api.client }); instance.interceptors.request.use((config) => { - const token = userStore.getToken - const refreshToken = userStore.getRefreshToken - if (!token || !refreshToken) { + const { loggedIn, user, login, logout } = useOidcAuth() + if (!loggedIn) { return config } - const authenticationService = useAuthenticationService() - if (authenticationService.isExpiredToken(refreshToken)) { - console.warn('Refresh token is expired: trigger logout of user') - userStore.logout() + const { accessToken } = user.value + if (!accessToken) { return config } - if (!authenticationService.isExpiredToken(token)) { - config.headers.Authorization = `Bearer ${token}` - return config - } - console.warn('Access token expired: request a new one') - const userService = useUserService() - return userService.refreshToken(refreshToken) - .then((response: KeycloakOpenIdTokenDto) => { - userStore.setToken(response.access_token) - userStore.setRefreshToken(response.refresh_token) - console.debug('new access token expires:', authenticationService.tokenToExpiryDate(response.access_token)) - config.headers.Authorization = `Bearer ${response.access_token}` - return config - }) - .catch((error: ApiErrorDto) => { - if (error.code === 'error.user.credentials') { - console.warn('User session expired.') - userStore.logout() - } - return config - }); + config.headers.Authorization = `Bearer ${accessToken}` + return config }) } return instance; diff --git a/dbrepo-ui/composables/upload-service.ts b/dbrepo-ui/composables/upload-service.ts index f7a6964d58..ee0bdd5dc0 100644 --- a/dbrepo-ui/composables/upload-service.ts +++ b/dbrepo-ui/composables/upload-service.ts @@ -1,11 +1,9 @@ import * as tus from 'tus-js-client' import {useCacheStore} from '@/stores/cache' -import {useUserStore} from '@/stores/user' export const useUploadService = (): any => { function create (data: File) { - const userStore = useUserStore() const config = useRuntimeConfig() const endpoint = config.public.upload.client return new Promise<string>((resolve, reject) => { @@ -13,10 +11,16 @@ export const useUploadService = (): any => { console.error('Your browser does not support uploads!') return } + const { loggedIn, user, login, logout } = useOidcAuth() + if (!loggedIn || !user.value?.accessToken) { + console.error('Please login to use the upload!') + return + } + const { accessToken } = user.value const uploadClient: tus.Upload = new tus.Upload(data, { endpoint, headers: { - 'Authorization': `Bearer ${userStore.getToken}` + 'Authorization': `Bearer ${accessToken}` }, retryDelays: [0, 3000, 5000, 10000, 20000], onError (error) { diff --git a/dbrepo-ui/composables/user-service.ts b/dbrepo-ui/composables/user-service.ts index e68b914e0e..5381fee565 100644 --- a/dbrepo-ui/composables/user-service.ts +++ b/dbrepo-ui/composables/user-service.ts @@ -80,32 +80,6 @@ export const useUserService = (): any => { }) } - async function obtainToken(username: string, password: string): Promise<KeycloakOpenIdTokenDto> { - console.debug('obtain user token for user with username', username) - return new Promise<KeycloakOpenIdTokenDto>((resolve, reject) => { - const config = useRuntimeConfig() - const userStore = useUserStore() - const instance = axios.create({ - timeout: 90_000, - params: {}, - baseURL: config.public.api.client - }) - instance.post<KeycloakOpenIdTokenDto>('/api/user/token', {username, password}) - .then((response) => { - console.info('Obtained user token') - // eslint-disable-next-line camelcase - const {access_token, refresh_token} = response.data - userStore.setToken(access_token) - userStore.setRefreshToken(refresh_token) - userStore.setRoles(tokenToRoles(access_token)) - resolve(response.data) - }).catch((error) => { - console.error('Failed to obtain user token', error) - reject(axiosErrorToApiError(error)) - }) - }) - } - async function refreshToken(refreshToken: string): Promise<KeycloakOpenIdTokenDto> { console.debug('refresh user token') return new Promise<KeycloakOpenIdTokenDto>((resolve, reject) => { @@ -136,21 +110,6 @@ export const useUserService = (): any => { return data.realm_access.roles || [] } - function tokenToUserId(token: string): string { - const data: Token = jwtDecode<Token>(token) - return data.uid - } - - function userInfoToUser(data: UserDto) { - const obj: UserDto = Object.assign({}, data) - obj.attributes = { - theme: data.attributes.theme, - orcid: data.attributes.orcid, - affiliation: data.attributes.affiliation - } - return obj - } - function nameIdentifierToNameIdentifierScheme(nameIdentifier: string) { if (nameIdentifier.includes('orcid.org')) { return 'ORCID' @@ -197,11 +156,7 @@ export const useUserService = (): any => { update, create, updatePassword, - obtainToken, refreshToken, - tokenToRoles, - tokenToUserId, - userInfoToUser, nameIdentifierToNameIdentifierScheme, userToFullName, hasReadAccess, diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 0ad4cb818d..e65a256906 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -96,16 +96,16 @@ @click:append-inner="retrieve" /> <v-spacer /> <v-btn - v-if="!user" + v-if="!loggedIn" class="mr-2" color="secondary" variant="flat" :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-login' : null" - to="/login"> + @click="login()"> {{ $t('navigation.login') }} </v-btn> <v-btn - v-if="!user" + v-if="!loggedIn" color="primary" variant="flat" :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-account-plus' : null" @@ -113,12 +113,12 @@ {{ $t('navigation.signup') }} </v-btn> <v-btn - v-if="user" + v-if="loggedIn" to="/user" variant="plain" - :text="user.username" /> + :text="userInfo.preferred_username" /> <v-menu - v-if="user" + v-if="loggedIn" location="bottom"> <template v-slot:activator="{ props }"> <v-btn @@ -140,7 +140,7 @@ </v-list-item> <v-list-item v-if="user" - @click="logout"> + @click="logout()"> {{ $t('navigation.logout') }} </v-list-item> </v-list> @@ -163,6 +163,9 @@ <script setup> import { ref } from 'vue' +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) const runtimeConfig = useRuntimeConfig() const config = ref(runtimeConfig) useServerHead({ @@ -175,10 +178,10 @@ useServerHead({ </script> <script> import JumboBox from '@/components/JumboBox.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' import { errorCodeKey, makeError } from '@/utils' + export default { components: { JumboBox @@ -197,26 +200,13 @@ export default { loadingSearch: false, loadingDatabases: false, search: null, - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - }, - locale () { - return this.userStore.getLocale - }, messages () { return this.cacheStore.getMessages }, - access () { - return this.userStore.getAccess - }, table () { return this.cacheStore.getTable }, @@ -244,9 +234,6 @@ export default { } return 'database' }, - roles () { - return this.userStore.getRoles - }, version () { return this.$config.public.version }, @@ -295,6 +282,9 @@ export default { logo () { return this.$config.public.logo }, + locale () { + return this.cacheStore.getLocale + }, searchVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : 'solo-filled' @@ -319,8 +309,8 @@ export default { .catch((error) => { this.databaseError = error }) - if (this.user) { - this.userStore.setRouteAccess(newObj.database_id) + if (this.userInfo) { + this.cacheStore.setRouteAccess(newObj.database_id, this.userInfo.uid) } /* load table */ if (newObj.table_id) { @@ -357,27 +347,14 @@ export default { this.cacheStore.reloadMessages() }, methods: { - errorCodeKey, - login () { - const redirect = ![undefined, '/', '/login'].includes(this.$router.currentRoute.path) - this.$router.push({ path: '/login', query: redirect ? { redirect: this.$router.currentRoute.path } : {} }) - }, - logout () { - this.$vuetify.theme.global.name = 'tuwThemeLight' - this.userStore.logout() - this.$router.push('/database') - }, retrieve () { console.debug('performing fuzzy search') this.$router.push({ path: '/search', query: { q: this.search } }) }, initEnvironment () { - if (this.token && !this.user) { - console.error('Something went wrong with loading the user: reset user cache') - this.userStore.logout() - } if (!this.locale) { - this.userStore.setLocale('en') + this.cacheStore.setLocale('en') + return } this.$i18n.locale = this.locale }, @@ -398,7 +375,7 @@ export default { } }, setLocale (code) { - this.userStore.setLocale(code) + this.cacheStore.setLocale(code) this.$i18n.locale = this.locale } } diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 4b1833d816..1804b3a3fd 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -107,11 +107,32 @@ export default defineNuxtConfig({ port: 3001 }, + oidc: { + providers: { + keycloak: { + audience: 'account', + baseUrl: 'http://localhost:8080/realms/dbrepo', + clientId: 'dbrepo-client', + clientSecret: '', // inject on runtime + scope: ['openid', 'roles'], + optionalClaims: ['realm_access'], + redirectUri: 'http://localhost/auth/keycloak/callback', + userNameClaim: 'preferred_username', + exposeAccessToken: true, + logoutRedirectUri: 'http://localhost', + }, + }, + middleware: { + globalMiddlewareEnabled: false + }, + }, + modules: [ - '@artmizu/nuxt-prometheus', + ['@artmizu/nuxt-prometheus', {verbose: false}], '@nuxtjs/i18n', '@pinia/nuxt', '@pinia-plugin-persistedstate/nuxt', + 'nuxt-oidc-auth', async (options, nuxt) => { nuxt.hooks.hook('vite:extendConfig', config => config.plugins.push( vuetify() @@ -160,6 +181,8 @@ export default defineNuxtConfig({ }, }, - devtools: {enabled: true}, - compatibilityDate: '2024-07-24' + devtools: { + enabled: false + }, + compatibilityDate: '2025-01-25' }) diff --git a/dbrepo-ui/package.json b/dbrepo-ui/package.json index a135477820..ec3ae1e6a4 100644 --- a/dbrepo-ui/package.json +++ b/dbrepo-ui/package.json @@ -28,6 +28,7 @@ "merkle-json": "^2.6.0", "moment": "^2.30.1", "nuxt": "^3.10.3", + "nuxt-oidc-auth": "^1.0.0-beta.5", "parse-md": "^3.0.3", "pinia": "^2.1.7", "qs": "^6.11.2", diff --git a/dbrepo-ui/pages/container/index.vue b/dbrepo-ui/pages/container/index.vue index 360ce1543f..ec2149372e 100644 --- a/dbrepo-ui/pages/container/index.vue +++ b/dbrepo-ui/pages/container/index.vue @@ -25,19 +25,19 @@ export default { containers: [] } }, - computed: { - roles () { - return this.userStore.getRoles - }, - }, mounted () { - this.loading = true - const containerService = useContainerService(); - containerService.findAll() - .then((containers) => { - this.containers = containers - this.loading = false - }) + this.fetchContainers() + }, + methods: { + fetchContainers () { + this.loading = true + const containerService = useContainerService(); + containerService.findAll() + .then((containers) => { + this.containers = containers + this.loading = false + }) + } } } </script> diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 6e1e35aabb..33d63b29a9 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -163,13 +163,17 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue' import Summary from '@/components/identifier/Summary.vue' import Select from '@/components/identifier/Select.vue' import UserBadge from '@/components/user/UserBadge.vue' import { sizeToHumanLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -197,7 +201,6 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -223,15 +226,9 @@ export default { } return this.database.identifier.publisher }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, - roles () { - return this.userStore.getRoles - }, identifiers () { if (!this.database) { return [] @@ -257,7 +254,7 @@ export default { return this.filteredIdentifiers[0] }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, 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 a57b439b21..2c2e5ef120 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 @@ -8,10 +8,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import Persist from '~/components/identifier/Persist.vue' -import { useUserStore } from '~/stores/user.js' -import { useCacheStore } from '~/stores/cache.js' +import Persist from '@/components/identifier/Persist.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -39,17 +44,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, diff --git a/dbrepo-ui/pages/database/[database_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/index.vue index df675d262e..a3581c0c82 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/index.vue @@ -8,10 +8,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import Persist from '~/components/identifier/Persist.vue' -import { useUserStore } from '~/stores/user.js' -import { useCacheStore } from '~/stores/cache.js' +import Persist from '@/components/identifier/Persist.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -35,17 +41,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -56,10 +55,10 @@ export default { return false }, isOwner () { - if (!this.database || !this.user) { + if (!this.database || !this.userInfo) { return false } - return this.database.owner.username === this.user.username + return this.database.owner.id === this.userInfo.uid }, canCreateIdentifier () { if (!this.roles || this.hasIdentifier) { diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index d0fb517dae..5b0aa2a453 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -244,10 +244,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue' import EditAccess from '@/components/dialogs/EditAccess.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -323,7 +329,6 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -335,16 +340,7 @@ export default { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess - }, - token () { - return this.userStore.getToken - }, - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser + return this.cacheStore.getAccess }, uploadProgress () { return this.cacheStore.getUploadProgress 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 f067fbadb4..a9956278d1 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 @@ -92,7 +92,6 @@ import SubsetToolbar from '@/components/subset/SubsetToolbar.vue' import Select from '@/components/identifier/Select.vue' import UserBadge from '@/components/user/UserBadge.vue' import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -134,7 +133,6 @@ export default { downloadLoading: false, error: false, promises: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -146,14 +144,11 @@ export default { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, subset () { return this.cacheStore.getSubset }, - user () { - return this.userStore.getUser - }, identifiers () { if (!this.database || !this.database.subsets || this.database.subsets.length === 0) { return [] 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 b15ecb3292..0e1dac8c7e 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 @@ -8,10 +8,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import Persist from '~/components/identifier/Persist.vue' -import { useUserStore } from '~/stores/user.js' -import { useCacheStore } from '~/stores/cache.js' +import Persist from '@/components/identifier/Persist.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -47,17 +52,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue index 07be66bc73..cc0dbf4958 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue @@ -9,10 +9,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import Persist from '~/components/identifier/Persist.vue' -import { useUserStore } from '~/stores/user.js' -import { useCacheStore } from '~/stores/cache.js' +import Persist from '@/components/identifier/Persist.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -47,19 +52,15 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, canPersistQuery () { if (this.loadingQuery || !this.query) { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/create.vue b/dbrepo-ui/pages/database/[database_id]/subset/create.vue index 0fb591f9f8..2ea1c5022a 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/create.vue @@ -6,8 +6,13 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> -import { useUserStore } from '@/stores/user.js' import Builder from '@/components/subset/Builder.vue' import {useCacheStore} from '@/stores/cache.js' @@ -36,22 +41,15 @@ export default { disabled: true } ], - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { 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 07747ed0cb..ca120e89f7 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 @@ -81,6 +81,7 @@ @close="pickVersion" /> </v-dialog> <v-dialog + v-if="loggedIn" v-model="addTupleDialog" persistent max-width="640"> @@ -91,6 +92,7 @@ @close="close" /> </v-dialog> <v-dialog + v-if="loggedIn" v-model="editTupleDialog" persistent max-width="640"> @@ -104,12 +106,18 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableHistory from '@/components/table/TableHistory.vue' import TimeDrift from '@/components/TimeDrift.vue' import TableToolbar from '@/components/table/TableToolbar.vue' import { formatTimestamp } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' import EditTuple from '@/components/dialogs/EditTuple.vue' import BlobDownload from '@/components/table/BlobDownload.vue' @@ -179,25 +187,18 @@ export default { ], headers: [], rows: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, table () { return this.cacheStore.getTable }, - user () { - return this.userStore.getUser - }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -230,10 +231,10 @@ export default { return this.version.substring(0, 10) + 'T' + this.version.substring(11, 19) + 'Z' }, canModify () { - if (!this.user || !this.access || !this.table) { + if (!this.userInfo || !this.access || !this.table) { return false } - if (this.access.type === 'write_own' && this.table.owner.id === this.user.id) { + if (this.access.type === 'write_own' && this.table.owner.id === this.userInfo.uid) { return true } return this.access.type === 'write_all' @@ -264,28 +265,28 @@ export default { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.user) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') }, canSelectTuples () { if (!this.roles) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.user) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') }, canEditTuple () { if (!this.roles || this.selection === null || this.selection.length !== 1) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.user) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') }, canDeleteTuple () { if (!this.roles || this.selection === null || this.selection.length < 1) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.user) && this.roles.includes('delete-table-data') + return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('delete-table-data') } }, watch: { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue index 4cf0057ea4..46eb7106fd 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue @@ -28,9 +28,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableImport from '@/components/table/TableImport.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -69,17 +75,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, table () { return this.cacheStore.getTable }, 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 916c72b850..ca295a5587 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 @@ -118,12 +118,18 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' import Select from '@/components/identifier/Select.vue' import Summary from '@/components/identifier/Summary.vue' import UserBadge from '@/components/user/UserBadge.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -165,7 +171,6 @@ export default { loading: false, exchange: null, queue: null, - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -173,18 +178,12 @@ export default { pid () { return this.$route.query.pid }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, table () { return this.cacheStore.getTable }, - roles () { - return this.userStore.getRoles - }, canRead () { if (this.database && this.database.is_public) { return true @@ -204,19 +203,19 @@ export default { if (this.table.is_schema_public || this.table.is_public) { return true } - if (!this.user) { + if (!this.userInfo) { return false } - return this.hasReadAccess || this.table.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid }, canWrite () { if (!this.table || !this.user || !this.access) { return false } - return (this.access.type === 'write_own' && this.table.owned_by === this.user.id) || this.access.type === 'write_all' + return (this.access.type === 'write_own' && this.table.owned_by === this.userInfo.uid) || this.access.type === 'write_all' }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasDescription () { return this.table && this.table.description @@ -237,10 +236,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.user) { + if (!this.userInfo) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.user.id) + return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.userInfo.uid) }, identifier () { if (this.pid) { 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 663b2a5550..0e82a2210b 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 @@ -6,9 +6,14 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import Persist from '@/components/identifier/Persist.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -45,17 +50,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue index 250fedaa5d..ef608876be 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue @@ -13,7 +13,6 @@ <script> import Persist from '@/components/identifier/Persist.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -48,19 +47,15 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, table () { return this.cacheStore.getTable diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue index 0c6a60e15b..4cbb8d37d1 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue @@ -120,9 +120,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -168,14 +174,10 @@ export default { { value: 'description', title: this.$t('pages.table.subpages.schema.description.title') }, ], dateColumns: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -183,7 +185,7 @@ export default { return this.cacheStore.getTable }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -191,9 +193,6 @@ export default { } return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, - roles () { - return this.userStore.getRoles - }, canViewSchema () { if (this.error) { return false @@ -204,16 +203,16 @@ export default { if (this.table.is_schema_public) { return true } - if (!this.user) { + if (!this.userInfo) { return false } - return this.hasReadAccess || this.table.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid }, primaryKeysColumns () { return this.table.constraints.primary_key.map(pk => pk.column.internal_name).join(', ') }, canAssignSemanticInformation () { - if (!this.user) { + if (!this.userInfo) { return false } if (this.roles.includes('modify-foreign-table-column-semantics')) { @@ -222,7 +221,7 @@ export default { if (!this.access) { return false } - return this.roles.includes('modify-table-column-semantics') && (this.access.type === 'write_all' || this.table.owner.username === this.user.username) + return this.roles.includes('modify-table-column-semantics') && (this.access.type === 'write_all' || this.table.owner.id === this.userInfo.uid) }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 f953071136..ddf319328c 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 @@ -3,7 +3,7 @@ v-if="canUpdateTable"> <TableToolbar /> <v-window - v-if="user" + v-if="loggedIn" v-model="tab"> <v-window-item> <v-form @@ -114,9 +114,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' import { max } from '@/utils' @@ -175,14 +181,10 @@ export default { { value: 'description', title: this.$t('pages.table.subpages.schema.description.title') }, ], dateColumns: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -190,7 +192,7 @@ export default { return this.cacheStore.getTable }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -198,9 +200,6 @@ export default { } return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, - roles () { - return this.userStore.getRoles - }, isChange () { if (!this.table) { return false @@ -211,26 +210,26 @@ export default { return this.table.is_schema_public !== this.modify.is_schema_public }, canUpdateTable () { - if (!this.roles || !this.user || !this.table) { + if (!this.roles || !this.userInfo || !this.table) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.user.id + return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid }, canModifyVisibility () { - if (!this.roles || !this.user || !this.table) { + if (!this.roles || !this.userInfo || !this.table) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.user.id + return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid }, canDropTable () { - if (!this.roles || !this.table || !this.user) { + if (!this.roles || !this.table || !this.userInfo) { return false } if (this.roles.includes('delete-foreign-table')) { return true } const tableService = useTableService() - return tableService.isOwner(this.table, this.user) && this.roles.includes('delete-table') && this.table.identifiers.length === 0 + return tableService.isOwner(this.table, this.userInfo) && this.roles.includes('delete-table') && this.table.identifiers.length === 0 }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 df74cc6e70..78bd136751 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -219,10 +219,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -304,7 +309,6 @@ export default { loading: false, url: null, columns: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -316,12 +320,6 @@ export default { this.tableCreate.is_schema_public = this.database.is_schema_public }, computed: { - user() { - return this.userStore.getUser - }, - roles() { - return this.userStore.getRoles - }, database() { return this.cacheStore.getDatabase }, 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 c900ba31aa..cf8de848de 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -185,10 +185,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -247,7 +252,6 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, @@ -259,12 +263,6 @@ export default { const tableService = useTableService() return tableService.tableNameToInternalName(this.tableCreate.name) }, - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, 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 54c54dad00..0b0caa3c4f 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 @@ -34,10 +34,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +</script> <script> import TimeDrift from '@/components/TimeDrift.vue' import QueryResults from '@/components/subset/Results.vue' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -70,14 +75,10 @@ export default { disabled: true } ], - cacheStore: useCacheStore(), - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -85,7 +86,7 @@ export default { return this.cacheStore.getView }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -100,10 +101,10 @@ export default { if (this.view.is_public) { return true } - if (!this.user) { + if (!this.userInfo) { return false } - return this.view.owner.id === this.user.id || this.hasReadAccess + return this.view.owner.id === this.userInfo.uid || this.hasReadAccess }, }, mounted () { 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 c9865a1b4a..0ed006c4be 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 @@ -59,13 +59,18 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +</script> <script> import ViewToolbar from '@/components/view/ViewToolbar.vue' import Summary from '@/components/identifier/Summary.vue' import Select from '@/components/identifier/Select.vue' import UserBadge from '@/components/user/UserBadge.vue' import { formatTimestampUTCLabel } from '@/utils' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -103,22 +108,15 @@ export default { } ], error: false, - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, view () { return this.cacheStore.getView @@ -139,10 +137,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.user) { + if (!this.userInfo) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.user.id) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) }, identifier () { if (this.pid) { @@ -179,10 +177,10 @@ export default { if (this.view.is_public) { return true } - if (!this.user) { + if (!this.userInfo) { return false } - return this.hasReadAccess || this.view.owner.id === this.user.id || this.database.owner.id === this.user.id + return this.hasReadAccess || this.view.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid } }, methods: { 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 8c1f24c2a1..f528c86675 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 @@ -8,9 +8,14 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import Persist from '@/components/identifier/Persist.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -47,17 +52,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue index b76d076645..c5082c3be9 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue @@ -11,7 +11,6 @@ <script> import Persist from '@/components/identifier/Persist.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -45,14 +44,10 @@ export default { disabled: true } ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - roles () { - return this.userStore.getRoles - }, database () { return this.cacheStore.getDatabase }, @@ -63,7 +58,7 @@ export default { return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, canPersistView () { if (!this.view) { diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue index 477654f656..5bd1ff5f9c 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue @@ -51,9 +51,14 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -95,14 +100,10 @@ export default { { value: 'is_null_allowed', title: this.$t('pages.table.subpages.schema.nullable.title') }, { value: 'description', title: this.$t('pages.table.subpages.schema.description.title') }, ], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -110,7 +111,7 @@ export default { return this.cacheStore.getView }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -125,13 +126,10 @@ export default { if (this.view.is_schema_public) { return true } - if (!this.user) { + if (!this.userInfo) { return false } - return this.hasReadAccess || this.view.owner.id === this.user.id || this.database.owner.id === this.user.id - }, - roles () { - return this.userStore.getRoles + return this.hasReadAccess || this.view.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 18d73d0576..575e5b5f27 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 @@ -90,9 +90,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import ViewToolbar from '@/components/view/ViewToolbar.vue' -import { useUserStore } from '@/stores/user.js' import { useCacheStore } from '@/stores/cache.js' export default { @@ -148,14 +154,10 @@ export default { { value: 'description', title: this.$t('pages.table.subpages.schema.description.title') }, ], dateColumns: [], - userStore: useUserStore(), cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, database () { return this.cacheStore.getDatabase }, @@ -163,7 +165,7 @@ export default { return this.cacheStore.getView }, access () { - return this.userStore.getAccess + return this.cacheStore.getAccess }, hasReadAccess () { if (!this.access) { @@ -171,9 +173,6 @@ export default { } return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, - roles () { - return this.userStore.getRoles - }, isChange () { if (!this.view) { return false @@ -184,22 +183,22 @@ export default { return this.view.is_schema_public !== this.modify.is_schema_public }, canUpdateVisibility () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.userInfo || !this.view) { return false } - return this.roles.includes('modify-view-visibility') && this.view.owner.id === this.user.id + return this.roles.includes('modify-view-visibility') && this.view.owner.id === this.userInfo.uid }, canDeleteView () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.userInfo || !this.view) { return false } - return this.roles.includes('delete-database-view') && this.view.owner.id === this.user.id + return this.roles.includes('delete-database-view') && this.view.owner.id === this.userInfo.uid }, canViewSettings () { - if (!this.user || !this.view) { + if (!this.userInfo || !this.view) { return false } - return this.view.owner.id === this.user.id + return this.view.owner.id === this.userInfo.uid }, inputVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue index 47b56cfbad..b9d4a684d7 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue @@ -6,9 +6,14 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import Builder from '@/components/subset/Builder.vue' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -34,17 +39,10 @@ export default { to: `/database/${this.$route.params.database_id}/view/create`, disabled: true } - ], - userStore: useUserStore() + ] } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, canCreateView () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue index 1c30c25e5c..16cbbb283f 100644 --- a/dbrepo-ui/pages/index.vue +++ b/dbrepo-ui/pages/index.vue @@ -27,10 +27,12 @@ </div> </template> +<script setup> +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> import DatabaseList from '@/components/database/DatabaseList.vue' import DatabaseCreate from '@/components/database/DatabaseCreate.vue' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -41,13 +43,21 @@ export default { return { loading: true, dialog: null, - databases: [], - userStore: useUserStore() + databases: [] } }, computed: { + userInfo () { + if (!this.user) { + return null + } + return this.user.userInfo + }, roles () { - return this.userStore.getRoles + if (!this.user) { + return [] + } + return [] }, canCreateDatabase () { if (!this.roles) { @@ -57,17 +67,20 @@ export default { } }, mounted () { - this.loading = true - const databaseService = useDatabaseService(); - databaseService.findAll() - .then((databases) => { - this.databases = databases - this.loading = false - }) + this.fetchDatabases() }, methods: { closed () { this.dialog = false + }, + fetchDatabases () { + this.loading = true + const databaseService = useDatabaseService() + databaseService.findAll() + .then((databases) => { + this.databases = databases + this.loading = false + }) } } } diff --git a/dbrepo-ui/pages/login.vue b/dbrepo-ui/pages/login.vue deleted file mode 100644 index 532a221c48..0000000000 --- a/dbrepo-ui/pages/login.vue +++ /dev/null @@ -1,160 +0,0 @@ -<template> - <div> - <v-toolbar - v-if="!user" - variant="flat" - :title="$t('pages.login.name')"> - </v-toolbar> - <v-card - rounded="0" - variant="flat"> - <v-card-text> - <v-form - v-if="!user" - ref="form" - v-model="valid" - @submit.prevent="submit"> - <v-row - dense> - <v-col - md="8"> - <v-text-field - v-model="username" - autocomplete="off" - autofocus - required - name="username" - persistent-hint - :rules="[v => !!v || $t('validation.required')]" - :label="$t('pages.login.username.label')" - :hint="$t('pages.login.username.hint')"/> - </v-col> - </v-row> - <v-row - dense> - <v-col - md="8"> - <v-text-field - v-model="password" - autocomplete="off" - type="password" - required - name="password" - persistent-hint - :rules="[v => !!v || $t('validation.required')]" - :label="$t('pages.login.password.label')" - :hint="$t('pages.login.password.hint')"/> - </v-col> - </v-row> - <v-row> - <v-col - md="8"> - <v-btn - id="login" - class="mb-2" - :disabled="!valid" - color="primary" - variant="flat" - type="submit" - name="submit" - :loading="loading" - :text="$t('pages.login.submit.label')" - @click="login"/> - </v-col> - </v-row> - </v-form> - </v-card-text> - <v-card-actions> - <v-spacer/> - <v-btn - v-for="(link, i) in loginLinks" - :key="`li-${i}`" - variant="plain" - size="small" - :text="link.text" - :href="link.href"/> - </v-card-actions> - </v-card> - </div> -</template> - -<script> -import {useUserStore} from '@/stores/user.js' - -export default { - data() { - return { - loading: false, - valid: false, - username: null, - password: null, - userStore: useUserStore() - } - }, - computed: { - user() { - return this.userStore.getUser - }, - loginLinks() { - if (!this.$config.public.links) { - return [] - } - return Object.keys(this.$config.public.links).map(key => { - return this.$config.public.links[key] - }) - } - }, - methods: { - submit() { - this.$refs.form.validate() - }, - login() { - this.loading = true - const userService = useUserService() - userService.obtainToken(this.username, this.password) - .then((data) => { - const userId = userService.tokenToUserId(data.access_token) - userService.findOne(userId) - .then((user) => { - const toast = useToastInstance() - toast.success(this.$t('success.user.login', { username : user.username })) - switch (user.attributes.theme) { - case 'dark': - this.$vuetify.theme.global.name = 'tuwThemeDark' - break - case 'light': - this.$vuetify.theme.global.name = 'tuwThemeLight' - break - case 'light-contrast': - this.$vuetify.theme.global.name = 'tuwThemeLightContrast' - break - case 'dark-contrast': - this.$vuetify.theme.global.name = 'tuwThemeDarkContrast' - break - } - this.userStore.setUser(user) - this.$router.push('/database') - }) - .catch(({code}) => { - const toast = useToastInstance() - if (typeof code !== 'string') { - return - } - toast.error(this.$t(code)) - }) - }) - .catch(({code}) => { - this.loading = false - const toast = useToastInstance() - if (typeof code !== 'string') { - return - } - toast.error(this.$t(code)) - }) - .finally(() => { - this.loading = false - }) - } - } -} -</script> diff --git a/dbrepo-ui/pages/search.vue b/dbrepo-ui/pages/search.vue index 15475b212b..ca80b1efda 100644 --- a/dbrepo-ui/pages/search.vue +++ b/dbrepo-ui/pages/search.vue @@ -63,9 +63,14 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import AdvancedSearch from '@/components/search/AdvancedSearch.vue' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -75,14 +80,10 @@ export default { return { results: [], type: 'database', - loading: false, - userStore: useUserStore() + loading: false } }, computed: { - roles () { - return this.userStore.getRoles - }, q () { if (!this.$route.query || !this.$route.query.q) { return null diff --git a/dbrepo-ui/pages/semantic/index.vue b/dbrepo-ui/pages/semantic/index.vue deleted file mode 100644 index db555b4c0d..0000000000 --- a/dbrepo-ui/pages/semantic/index.vue +++ /dev/null @@ -1,194 +0,0 @@ -<template> - <div v-if="canListOntologies"> - <v-toolbar flat> - <v-toolbar-title> - {{ $t('pages.semantics.title') }} - </v-toolbar-title> - <v-spacer /> - <v-btn - v-if="canListOntologies" - to="/semantic/ontology" - variant="flat" - :text="ontologies.length + ' ' + $t('toolbars.semantic.ontologies.text')" - color="secondary" /> - <template v-slot:extension> - <v-tabs - v-model="tab" - color="primary"> - <v-tab> - {{ $t('toolbars.semantic.ontologies.concepts') }} - </v-tab> - <v-tab> - {{ $t('toolbars.semantic.ontologies.units') }} - </v-tab> - </v-tabs> - </template> - </v-toolbar> - <v-card flat> - <v-card-text> - <v-data-table - :headers="headers" - :items="rows" - :options.sync="options" - :server-items-length="total" - :footer-props="footerProps" - :items-per-page-options="footerProps.itemsPerPageOptions"> - <template v-slot:item.uri="{ item }"> - <a :href="item.uri" - target="_blank"> - {{ item.uri }} - </a> - </template> - <template v-slot:item.action="{ item }"> - <v-btn - small - :disabled="disabled(item)" - :text="$t('pages.semantics.usages.text')" - @click="view(item)" /> - </template> - </v-data-table> - </v-card-text> - </v-card> - <v-dialog - v-model="viewSemanticEntityDialog" - max-width="640"> - <ViewSemanticEntity - :mode="mode" - :entity="entity" - @close="close" /> - </v-dialog> - <v-breadcrumbs - :items="items" - class="pa-0 mt-2" /> - </div> -</template> - -<script> -import ViewSemanticEntity from '@/components/dialogs/ViewSemanticEntity.vue' -import { useUserStore } from '@/stores/user.js' -import { useCacheStore } from '@/stores/cache.js' - -export default { - components: { - ViewSemanticEntity - }, - data () { - return { - loadingConcepts: false, - loadingUnits: false, - entity: null, - viewSemanticEntityDialog: false, - headers: [ - { text: 'URI', value: 'uri' }, - { text: 'Name', value: 'name' }, - { text: 'Description', value: 'description' }, - { text: 'Usages', value: 'usages' }, - { text: null, value: 'action' } - ], - options: { - page: 1, - itemsPerPage: 10 - }, - total: -1, - footerProps: { - itemsPerPageOptions: [10, 25, 50, 100] - }, - tab: 0, - tabs: [ - 'concepts', 'units' - ], - concepts: [], - units: [], - createOntologyDialog: false, - items: [ - { - title: `${this.$t('navigation.semantics')}`, - to: '/semantic' - } - ], - userStore: useUserStore(), - cacheStore: useCacheStore() - } - }, - computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, - ontologies () { - return this.cacheStore.getOntologies - }, - rows () { - return this.tab === 0 ? this.concepts : this.units - }, - mode () { - return this.tab === 0 ? 'concept' : 'unit' - }, - canListOntologies () { - if (!this.roles) { - return false - } - return this.roles.includes('list-ontologies') - } - }, - mounted () { - this.loadUnits() - this.loadConcepts() - }, - methods: { - loadConcepts () { - this.loadingConcepts = true - const conceptService = useConceptService() - conceptService.findAll() - .then((concepts) => { - concepts = concepts.map((column) => { - column.usages = column.columns.length - return column - }) - this.concepts = concepts - }) - .catch(() => { - this.loadingConcepts = false - }) - .finally(() => { - this.loadingConcepts = false - }) - }, - loadUnits () { - this.loadingUnits = true - const unitService = useUnitService() - unitService.findAll() - .then((units) => { - units = units.map((unit) => { - unit.usages = unit.columns.length - return unit - }) - this.units = units - }) - .catch(() => { - this.loadingUnits = false - }) - .finally(() => { - this.loadingUnits = false - }) - }, - disabled (item) { - return !item.usages || this.usages === 0 - }, - view (entity) { - this.entity = entity - this.viewSemanticEntityDialog = true - }, - close (event) { - if (this.mode === 'unit') { - this.loadUnits() - } else if (this.mode === 'concept') { - this.loadConcepts() - } - this.viewSemanticEntityDialog = false - } - } -} -</script> diff --git a/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue b/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue deleted file mode 100644 index 14749460c9..0000000000 --- a/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue +++ /dev/null @@ -1,273 +0,0 @@ -<template> - <div - v-if="canListOntologies"> - <v-toolbar flat> - <v-toolbar-title> - <v-btn - id="back-btn" - plain - class="mr-2" - to="/semantic/ontology"> - <v-icon left>mdi-arrow-left</v-icon> - </v-btn> - </v-toolbar-title> - <v-toolbar-title> - <v-skeleton-loader - v-if="loading" - type="text" - class="skeleton-small" /> - <span v-if="!loading"> - Ontology - <a - v-if="ontology" - :href="ontology.uri" - target="_blank"> - {{ ontology.uri }} - </a> - </span> - </v-toolbar-title> - <v-spacer /> - <v-toolbar-title> - <v-btn - v-if="canDeleteOntology" - :loading="loadingDelete" - color="error" - @click="deleteOntology"> - Delete Ontology - </v-btn> - </v-toolbar-title> - </v-toolbar> - <v-form ref="form" v-model="valid" autocomplete="off" @submit.prevent="submit"> - <v-card v-if="ontology" variant="flat"> - <v-card-text> - <v-row dense> - <v-col cols="6"> - <v-text-field - id="prefix" - v-model="ontologyChangeDto.prefix" - name="prefix" - label="Prefix *" - hint="Only lowercase alphanumeric letters, max. 8" - autofocus - :rules="[ - v => notEmpty(v) || $t('validation.required'), - v => validPrefix(v) || $t('validation.prefix.pattern'), - v => validPrefixLength(v,1,8) || $t('validation.prefix.length'), - v => validPrefixNotExists(v) || $t('validation.prefix.exists') - ]" - required /> - </v-col> - </v-row> - <v-row dense> - <v-col cols="6"> - <v-text-field - id="uri" - v-model="ontologyChangeDto.uri" - name="uri" - label="URI *" - :rules="[ - v => notEmpty(v) || $t('validation.required'), - v => validUri(v) || $t('validation.uri.pattern'), - v => validUriNotExists(v) || $t('validation.uri.exists') - ]" - required /> - </v-col> - </v-row> - <v-row dense> - <v-col cols="6"> - <v-text-field - id="sparql-endpoint" - v-model="ontologyChangeDto.sparql_endpoint" - name="sparql-endpoint" - label="SPARQL Endpoint" - :rules="[ - v => validUriOptional(v) || $t('validation.uri.pattern') - ]" /> - </v-col> - </v-row> - </v-card-text> - <v-card-actions> - <v-btn - id="createDB" - class="mb-2 ml-2" - :disabled="!valid || loading" - color="primary" - type="submit" - :loading="loading" - @click="save"> - Update - </v-btn> - </v-card-actions> - </v-card> - </v-form> - <v-breadcrumbs :items="items" class="pa-0 mt-2" /> - </div> -</template> - -<script> -import { notEmpty } from '@/utils' -import { useUserStore } from '@/stores/user.js' -import { useCacheStore } from '@/stores/cache.js' - -export default { - data () { - return { - loading: false, - loadingDelete: false, - ontology: null, - ontologyChangeDto: { - uri: null, - prefix: null, - sparql_endpoint: null - }, - valid: false, - createOntologyDialog: false, - items: [ - { text: `${this.$t('layout.semantics')}`, to: '/semantic', activeClass: '' }, - { text: `${this.$t('layout.ontologies')}`, to: '/semantic/ontology', activeClass: '' }, - { text: `${this.$route.params.ontology_id}`, to: `/semantic/ontology/${this.$route.params.ontology_id}`, activeClass: '' } - ], - userStore: useUserStore(), - cacheStore: useCacheStore() - } - }, - computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, - ontologies () { - return this.cacheStore.getOntologies - }, - canListOntologies () { - if (!this.roles) { - return false - } - return this.roles.includes('list-ontologies') - }, - canDeleteOntology () { - if (!this.roles) { - return false - } - return this.roles.includes('delete-ontology') - } - }, - mounted () { - this.loadOntology() - }, - methods: { - loadOntology () { - this.loading = true - const ontologyService = useOntologyService() - ontologyService.findOne(this.$route.params.ontology_id) - .then((ontology) => { - this.ontology = ontology - this.ontologyChangeDto = Object.assign({}, ontology) - }) - .catch(() => { - this.loading = false - }) - .finally(() => { - this.loading = false - }) - }, - deleteOntology () { - this.loadingDelete = true - const ontologyService = useOntologyService() - ontologyService.remove(this.$route.params.ontology_id) - .then(async () => { - // await this.$store.dispatch('reloadOntologies') - await this.$router.push('/semantic/ontology') - }) - .catch(() => { - this.loadingDelete = false - }) - .finally(() => { - this.loadingDelete = false - }) - }, - save () { - this.loading = true - const payload = { - uri: this.ontologyChangeDto.uri, - prefix: this.ontologyChangeDto.prefix, - sparql_endpoint: this.ontologyChangeDto.sparql_endpoint - } - const ontologyService = useOntologyService() - ontologyService.update(this.$route.params.ontology_id, payload) - .then(() => { - this.loadOntology() - // this.$store.dispatch('reloadOntologies') - const toast = useToastInstance() - toast.success('Successfully update ontology!') - }) - .catch(() => { - this.loading = false - }) - .finally(() => { - this.loading = false - }) - }, - validPrefix (str) { - if (!str) { - return false - } - return str.match(/[a-z0-9]+/g) - }, - validPrefixLength (str, min, max) { - if (!str) { - return false - } - return str.length > min && str.length <= max - }, - validPrefixNotExists (str) { - const ontologies = this.ontologies.filter(o => o.prefix === str) - if (ontologies && ontologies.length !== 0) { - /* same prefix is fine for the same ontology, but not for others */ - return ontologies[0].id === this.ontology.id - } - return !this.ontologies.map(o => o.prefix).includes(str) - }, - validUriNotExists (str) { - const ontologies = this.ontologies.filter(o => o.uri === str) - if (ontologies && ontologies.length !== 0) { - /* same uri is fine for the same ontology, but not for others */ - return ontologies[0].id === this.ontology.id - } - return !this.ontologies.map(o => o.uri).includes(str) - }, - validUriOptional (str) { - if (!str) { - return true - } - return this.validUri(str) - }, - validUri (str) { - if (!str) { - return false - } - return str.match(/^https?:\/\//g) - }, - close (event) { - if (event.success) { - // this.$store.dispatch('reloadOntologies') - } - this.createOntologyDialog = false - }, - submit () { - this.$refs.form.validate() - }, - notEmpty - } -} -</script> -<style> -.skeleton-medium > div { - width: 200px !important; -} -.skeleton-xsmall > div { - width: 50px !important; -} -</style> diff --git a/dbrepo-ui/pages/semantic/ontology/index.vue b/dbrepo-ui/pages/semantic/ontology/index.vue deleted file mode 100644 index 36898d9073..0000000000 --- a/dbrepo-ui/pages/semantic/ontology/index.vue +++ /dev/null @@ -1,96 +0,0 @@ -<template> - <div v-if="canListOntologies"> - <v-toolbar flat> - <v-btn - variant="plain" - size="small" - icon="mdi-arrow-left" - to="/semantic" /> - <v-toolbar-title> - {{ ontologies.length + ' ' + $t('toolbars.semantic.ontologies.title') }} - </v-toolbar-title> - <v-spacer /> - <v-btn - v-if="canCreateOntology" - color="secondary" - variant="flat" - name="create-ontology" - prepend-icon="mdi-plus" - :text="$t('toolbars.semantic.ontology.text')" - @click.stop="createOntologyDialog = true" /> - </v-toolbar> - <OntologiesList /> - <v-dialog - v-model="createOntologyDialog" - persistent - max-width="640"> - <CreateOntology ref="ont" @close="close" /> - </v-dialog> - <v-breadcrumbs :items="items" class="pa-0 mt-2" /> - </div> -</template> - -<script> -import OntologiesList from '@/components/OntologiesList.vue' -import CreateOntology from '@/components/dialogs/CreateOntology.vue' -import { useUserStore } from '@/stores/user.js' -import { useCacheStore } from '@/stores/cache.js' - -export default { - components: { - OntologiesList, - CreateOntology - }, - data () { - return { - createOntologyDialog: false, - items: [ - { - title: `${this.$t('navigation.semantics')}`, - to: '/semantic' - }, - { - title: `${this.$t('navigation.ontologies')}`, - to: '/semantic/ontology' - } - ], - userStore: useUserStore(), - cacheStore: useCacheStore() - } - }, - computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, - ontologies () { - return this.cacheStore.getOntologies - }, - canListOntologies () { - if (!this.roles) { - return false - } - return this.roles.includes('list-ontologies') - }, - canCreateOntology () { - if (!this.roles) { - return false - } - return this.roles.includes('create-ontology') - } - }, - methods: { - close (event) { - if (event.success) { - // this.$store.dispatch('reloadOntologies') - } - this.createOntologyDialog = false - } - } -} -</script> diff --git a/dbrepo-ui/pages/signup.vue b/dbrepo-ui/pages/signup.vue index 54c0060225..19f781572a 100644 --- a/dbrepo-ui/pages/signup.vue +++ b/dbrepo-ui/pages/signup.vue @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="!loggedIn"> <v-toolbar :title="$t('pages.signup.name')" flat /> @@ -91,6 +92,9 @@ </div> </template> +<script setup> +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> export default { data () { diff --git a/dbrepo-ui/pages/user/authentication.vue b/dbrepo-ui/pages/user/authentication.vue index 3a43421a70..03c40e5d82 100644 --- a/dbrepo-ui/pages/user/authentication.vue +++ b/dbrepo-ui/pages/user/authentication.vue @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="loggedIn"> <UserToolbar /> <v-window v-model="tab"> <v-window-item> @@ -10,8 +11,7 @@ rounded="0"> <v-card-text> <v-form - v-model="valid2" - @submit.prevent="submit"> + v-model="valid2"> <v-row dense> <v-col md="6"> <v-text-field @@ -60,9 +60,15 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' -import { useUserStore } from '@/stores/user.js' export default { components: { @@ -87,14 +93,10 @@ export default { ], email: null, password: null, - password2: null, - userStore: useUserStore() + password2: null } }, computed: { - user () { - return this.userStore.getUser - }, inputVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal @@ -104,15 +106,11 @@ export default { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal } }, - mounted () { - }, methods: { - submit () { - }, changePassword () { this.loadingUpdate = true const userService = useUserService() - userService.updatePassword(this.user.id, {'password': this.password}) + userService.updatePassword(this.userInfo.uid, {'password': this.password}) .then(() => { const toast = useToastInstance() toast.success(this.$t('success.user.password')) diff --git a/dbrepo-ui/pages/user/developer.vue b/dbrepo-ui/pages/user/developer.vue deleted file mode 100644 index de52a490af..0000000000 --- a/dbrepo-ui/pages/user/developer.vue +++ /dev/null @@ -1,230 +0,0 @@ -<template> - <div> - <UserToolbar /> - <v-window - v-model="tab"> - <v-window-item> - <v-card - v-if="canHandleMessages" - :title="$t('pages.settings.subpages.developer.maintenance.title')" - rounded="0" - variant="flat"> - <v-data-table - :headers="headers" - :items="messages" - :loading="loadingMessages" - :items-per-page="10"> - <template v-slot:item.action="{ item }"> - <v-btn - size="x-small" - variant="flat" - :text="$t('pages.settings.subpages.developer.maintenance.modify.text')" - @click="modifyMessage(item)" /> - </template> - </v-data-table> - <v-card-text> - <v-btn - size="small" - variant="flat" - :text="$t('pages.settings.subpages.developer.maintenance.add.text')" - :disabled="!canCreateMessage" - @click="createMessage" /> - </v-card-text> - </v-card> - <v-divider - v-if="canHandleMessages" /> - <v-card - :title="$t('pages.settings.subpages.developer.token.title')" - :subtitle="$t('pages.settings.subpages.developer.token.subtitle')" - variant="flat" - rounded="0"> - <v-card-text> - <v-row dense> - <v-col xl="4"> - <v-text-field - v-model="accessTokenField" - disabled - :variant="inputVariant" - :label="$t('pages.settings.subpages.developer.token.access.label')" /> - </v-col> - <v-col xl="2"> - <v-text-field - v-model="tokenExpiry" - disabled - :variant="inputVariant" - :label="expiryLabel(token)" /> - </v-col> - </v-row> - <v-row dense> - <v-col xl="4"> - <v-text-field - v-model="refreshTokenField" - disabled - :variant="inputVariant" - :label="$t('pages.settings.subpages.developer.token.refresh.label')" /> - </v-col> - <v-col xl="2"> - <v-text-field - v-model="refreshTokenExpiry" - disabled - :variant="inputVariant" - :label="expiryLabel(refreshToken)" /> - </v-col> - </v-row> - </v-card-text> - </v-card> - </v-window-item> - </v-window> - <v-breadcrumbs :items="items" class="pa-0 mt-2" /> - <v-dialog - v-model="dialog" - persistent - max-width="640"> - <EditMaintenanceMessage - :id="messageId" - @close-dialog="closeDialog" /> - </v-dialog> - </div> -</template> - -<script> -import UserToolbar from '@/components/user/UserToolbar.vue' -import EditMaintenanceMessage from '@/components/dialogs/EditMaintenanceMessage.vue' -import { formatTimestampUTCLabel, isActiveMessage, timestampsToHumanDifference } from '@/utils' -import { useUserStore } from '@/stores/user.js' -import { useCacheStore } from '@/stores/cache.js' - -export default { - components: { - UserToolbar, - EditMaintenanceMessage - }, - data () { - return { - tab: 0, - accessTokenField: null, - refreshTokenField: null, - headers: [ - { title: this.$t('pages.settings.subpages.developer.maintenance.active'), value: 'active' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.type'), value: 'type' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.message'), value: 'message' }, - { title: this.$t('pages.settings.subpages.developer.maintenance.action'), value: 'action' } - ], - items: [ - { - title: this.$t('navigation.user'), - to: '/user' - }, - { - title: this.$t('toolbars.user.developer'), - to: `/user/developer`, - disabled: true - } - ], - messages: [], - loadingMessages: false, - dialog: false, - messageId: null, - userStore: useUserStore(), - cacheStore: useCacheStore() - } - }, - computed: { - token () { - return this.userStore.getToken - }, - tokenExpiry () { - if (!this.token) { - return null - } - const authenticationService = useAuthenticationService() - return formatTimestampUTCLabel(authenticationService.tokenToExpiryDate(this.token)) - }, - refreshToken () { - return this.userStore.getRefreshToken - }, - refreshTokenExpiry () { - if (!this.refreshToken) { - return null - } - const authenticationService = useAuthenticationService() - return formatTimestampUTCLabel(authenticationService.tokenToExpiryDate(this.refreshToken)) - }, - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, - canCreateMessage () { - if (!this.roles) { - return false - } - return this.roles.includes('create-maintenance-message') - }, - canModifyMessage () { - if (!this.roles) { - return false - } - return this.roles.includes('modify-maintenance-message') - }, - canHandleMessages () { - return this.canCreateMessage || this.canModifyMessage - }, - inputVariant () { - const runtimeConfig = useRuntimeConfig() - return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal - }, - buttonVariant () { - const runtimeConfig = useRuntimeConfig() - return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal - } - }, - mounted () { - this.loadMessages() - if (!this.token || !this.refreshToken) { - return - } - this.accessTokenField = this.token - this.refreshTokenField = this.refreshToken - }, - methods: { - submit () { - }, - modifyMessage (message) { - this.messageId = message.id - this.dialog = true - }, - createMessage () { - this.messageId = null - this.dialog = true - }, - expiryLabel (token) { - const authenticationService = useAuthenticationService() - return this.$t('pages.settings.subpages.developer.token.expiry') + ' ' + timestampsToHumanDifference(Date.now(), authenticationService.tokenToExpiryDate(token)) - }, - loadMessages () { - const messageService = useMessageService() - messageService.findAll() - .then((messages) => { - this.messages = messages.map((message) => { - message.active = isActiveMessage(message) ? '● true' : 'false' - return message - }) - }) - .catch(() => { - this.loadingMessages = false - }) - .finally(() => { - this.loadingMessages = false - }) - }, - closeDialog (event) { - if (event.success) { - this.cacheStore.reloadMessages() - } - this.dialog = false - } - } -} -</script> diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue index accae86105..1d76677059 100644 --- a/dbrepo-ui/pages/user/index.vue +++ b/dbrepo-ui/pages/user/index.vue @@ -2,25 +2,13 @@ <div /> </template> +<script setup> +const { loggedIn, user, login, logout } = useOidcAuth() +</script> <script> -import { useUserStore } from '@/stores/user.js' - export default { - data () { - return { - userStore: useUserStore() - } - }, - computed: { - token () { - return this.userStore.getToken - }, - user () { - return this.userStore.getUser - } - }, mounted () { - if (!this.user) { + if (!this.loggedIn) { return } this.$router.push('/user/info') diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index 9b94dde4da..58e265b59f 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -1,7 +1,8 @@ <template> <div> <UserToolbar /> - <v-window v-model="tab"> + <v-window + v-model="tab"> <v-window-item> <v-form v-model="valid1" @submit.prevent="submit"> <v-card @@ -122,9 +123,16 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const { loggedIn, user, login, logout } = useOidcAuth() +const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' -import { useUserStore } from '@/stores/user.js' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -169,18 +177,12 @@ export default { disabled: true } ], - userStore: useUserStore() + cacheStore: useCacheStore() } }, computed: { - user () { - return this.userStore.getUser - }, - roles () { - return this.userStore.getRoles - }, locale () { - return this.userStore.getLocale + return this.cacheStore.getLocale }, canModifyTheme () { return this.roles.includes('modify-user-theme') @@ -214,14 +216,13 @@ export default { language: this.model.language, } const userService = useUserService() - userService.update(this.user.id, payload) + userService.update(this.userInfo.id, payload) .then((user) => { console.info('Updated user information') const toast = useToastInstance() toast.success(this.$t('success.user.info')) - this.userStore.setUser(user) /* language */ - this.userStore.setLocale(this.model.language) + this.cacheStore.setLocale(this.model.language) this.$i18n.locale = this.locale /* theme */ switch (this.model.theme) { @@ -251,14 +252,14 @@ export default { return } this.model = { - id: this.user.id, - username: this.user.username, - firstname: this.user.given_name, - lastname: this.user.family_name, - orcid: this.user.attributes.orcid, - affiliation: this.user.attributes.affiliation, - theme: this.user.attributes.theme, - language: this.user.attributes.language + id: this.userInfo.id, + username: this.userInfo.username, + firstname: this.userInfo.given_name, + lastname: this.userInfo.family_name, + orcid: this.userInfo.attributes.orcid, + affiliation: this.userInfo.attributes.affiliation, + theme: this.userInfo.attributes.theme, + language: this.userInfo.attributes.language } }, retrieve () { diff --git a/dbrepo-ui/stores/cache.js b/dbrepo-ui/stores/cache.js index 41059ba727..4582dce199 100644 --- a/dbrepo-ui/stores/cache.js +++ b/dbrepo-ui/stores/cache.js @@ -7,7 +7,9 @@ export const useCacheStore = defineStore('cache', { database: null, table: null, view: null, + access: null, subset: null, + locale: null, ontologies: [], messages: [], uploadProgress: null @@ -17,7 +19,9 @@ export const useCacheStore = defineStore('cache', { getDatabase: (state) => state.database, getTable: (state) => state.table, getView: (state) => state.view, + getAccess: (state) => state.access, getSubset: (state) => state.subset, + getLocale: (state) => state.locale, getOntologies: (state) => state.ontologies, getMessages: (state) => state.messages, getUploadProgress: (state) => state.uploadProgress, @@ -32,9 +36,15 @@ export const useCacheStore = defineStore('cache', { setView(view) { this.view = view }, + setAccess(access) { + this.access = access + }, setSubset(subset) { this.subset = subset }, + setLocale(locale) { + this.locale = locale + }, setOntologies(ontologies) { this.ontologies = ontologies }, @@ -117,6 +127,16 @@ export const useCacheStore = defineStore('cache', { tableService.findOne(databaseId, tableId) .then(table => this.table = table) }, + setRouteAccess(databaseId, userId) { + if (!databaseId || !userId) { + this.access = null + console.error('Cannot set route access: missing database id', databaseId, 'or user id', userId) + return + } + const accessService = useAccessService() + accessService.findOne(databaseId, userId) + .then(access => this.access = access) + }, setRouteView(databaseId, viewId) { if (!databaseId || !viewId) { this.view = null diff --git a/dbrepo-ui/stores/user.js b/dbrepo-ui/stores/user.js deleted file mode 100644 index 522ce02a06..0000000000 --- a/dbrepo-ui/stores/user.js +++ /dev/null @@ -1,60 +0,0 @@ -import {defineStore} from 'pinia' - -export const useUserStore = defineStore('user', { - persist: true, - state: () => { - return { - /** @type String */ - token: null, - /** @type String */ - refreshToken: null, - roles: [], - user: null, - access: null, - locale: null - } - }, - getters: { - getToken: (state) => state.token, - getRefreshToken: (state) => state.refreshToken, - getRoles: (state) => state.roles, - getUser: (state) => state.user, - getAccess: (state) => state.access, - getLocale: (state) => state.locale - }, - actions: { - setToken(token) { - this.token = token - }, - setRefreshToken(refreshToken) { - this.refreshToken = refreshToken - }, - setRoles(roles) { - this.roles = roles - }, - setUser(user) { - this.user = user - }, - setAccess(access) { - this.access = access - }, - setLocale (locale) { - this.locale = locale - }, - logout() { - this.token = null - this.refreshToken = null - this.roles = [] - this.user = null - this.access = null - }, - setRouteAccess(databaseId) { - if (!databaseId || !this.user || !this.user.id) { - return - } - const accessService = useAccessService() - accessService.findOne(databaseId, this.user.id) - .then(access => this.access = access) - } - } -}) diff --git a/docker-compose.yml b/docker-compose.yml index ad1dacb6b7..efcc9a76cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -329,8 +329,13 @@ services: network: host environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" - NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}" + NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost:8080}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "${BASE_URL:-http://localhost}" depends_on: dbrepo-search-service: condition: service_healthy @@ -341,6 +346,8 @@ services: interval: 10s timeout: 5s retries: 12 + extra_hosts: + - "localhost:host-gateway" logging: driver: json-file -- GitLab From b2e610ad68b78cf5e2253d9d3f658ed015da27ac Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sat, 25 Jan 2025 15:54:47 +0100 Subject: [PATCH 21/52] Fixed the signup Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-auth-service/dbrepo-realm.json | 36 +++--- dbrepo-ui/layouts/default.vue | 10 +- dbrepo-ui/nuxt.config.ts | 26 ++-- dbrepo-ui/pages/signup.vue | 167 -------------------------- 4 files changed, 36 insertions(+), 203 deletions(-) delete mode 100644 dbrepo-ui/pages/signup.vue diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index b48be9a6bd..cf3fcadb2f 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -27,7 +27,7 @@ "oauth2DevicePollingInterval" : 5, "enabled" : true, "sslRequired" : "none", - "registrationAllowed" : false, + "registrationAllowed" : true, "registrationEmailAsUsername" : false, "rememberMe" : false, "verifyEmail" : true, @@ -2132,11 +2132,15 @@ "protocolMapper" : "oidc-usermodel-realm-role-mapper", "consentRequired" : false, "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "false", + "multivalued" : "true", "user.attribute" : "foo", + "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" + "jsonType.label" : "String" } }, { "id" : "a7bd6723-e58e-47f7-95c0-2925ce99283d", @@ -2166,6 +2170,10 @@ "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, "smtpServer" : { }, + "loginTheme" : "keycloak", + "accountTheme" : "", + "adminTheme" : "", + "emailTheme" : "", "eventsEnabled" : false, "eventsListeners" : [ "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], @@ -2215,7 +2223,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "saml-user-attribute-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2241,7 +2249,7 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2257,8 +2265,8 @@ "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "true" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } }, { @@ -2269,8 +2277,8 @@ "config" : { "ldap.attribute" : [ "sn" ], "is.mandatory.in.ldap" : [ "true" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "false" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "lastName" ] } }, { @@ -2305,13 +2313,13 @@ "config" : { "membership.attribute.type" : [ "DN" ], "group.name.ldap.attribute" : [ "cn" ], - "preserve.group.inheritance" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], + "preserve.group.inheritance" : [ "false" ], "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "mode" : [ "LDAP_ONLY" ], "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], - "membership.ldap.attribute" : [ "member" ], "ignore.missing.groups" : [ "false" ], + "membership.ldap.attribute" : [ "member" ], "memberof.ldap.attribute" : [ "memberOf" ], "group.object.classes" : [ "groupOfNames" ], "drop.non.existing.groups.during.sync" : [ "false" ], @@ -2336,18 +2344,18 @@ "subComponents" : { }, "config" : { "ldap.attribute" : [ "uid" ], - "is.mandatory.in.ldap" : [ "true" ], "attribute.force.default" : [ "false" ], + "is.mandatory.in.ldap" : [ "true" ], "is.binary.attribute" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "username" ] } } ] }, "config" : { - "pagination" : [ "false" ], "fullSyncPeriod" : [ "-1" ], + "pagination" : [ "false" ], "startTls" : [ "false" ], "connectionPooling" : [ "true" ], "usersDn" : [ "ou=users,dc=dbrepo,dc=at" ], @@ -2356,14 +2364,14 @@ "importEnabled" : [ "true" ], "enabled" : [ "true" ], "changedSyncPeriod" : [ "-1" ], + "bindCredential" : [ "admin" ], "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], "usernameLDAPAttribute" : [ "uid" ], - "bindCredential" : [ "admin" ], "lastSync" : [ "1719252666" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], - "connectionUrl" : [ "ldap://identity-service:1389" ], "allowKerberosAuthentication" : [ "false" ], + "connectionUrl" : [ "ldap://identity-service:1389" ], "syncRegistrations" : [ "true" ], "authType" : [ "simple" ], "useTruststoreSpi" : [ "always" ], diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index e65a256906..a08f6f70f5 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -104,14 +104,6 @@ @click="login()"> {{ $t('navigation.login') }} </v-btn> - <v-btn - v-if="!loggedIn" - color="primary" - variant="flat" - :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-account-plus' : null" - to="/signup"> - {{ $t('navigation.signup') }} - </v-btn> <v-btn v-if="loggedIn" to="/user" @@ -288,7 +280,7 @@ export default { searchVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : 'solo-filled' - }, + } }, watch: { '$route.params': { diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 1804b3a3fd..305a753d9e 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -3,19 +3,19 @@ import vuetify from 'vite-plugin-vuetify' const proxy: any = {} -// /* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ -// if (process.env.NODE_ENV === 'development') { -// const api = 'http://localhost' -// proxy['/api'] = api -// proxy['/pid'] = { -// target: api + '/api', -// changeOrigin: true, -// pathRewrite: { -// '^/pid': '/pid' -// } -// } -// process.env.NUXT_PUBLIC_API_SERVER = api -// } +/* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ +if (process.env.NODE_ENV === 'development') { + const api = 'http://localhost' + proxy['/api'] = api + proxy['/pid'] = { + target: api + '/api', + changeOrigin: true, + pathRewrite: { + '^/pid': '/pid' + } + } + process.env.NUXT_PUBLIC_API_SERVER = api +} /** * https://nuxt.com/docs/guide/concepts/rendering#hybrid-rendering diff --git a/dbrepo-ui/pages/signup.vue b/dbrepo-ui/pages/signup.vue deleted file mode 100644 index 19f781572a..0000000000 --- a/dbrepo-ui/pages/signup.vue +++ /dev/null @@ -1,167 +0,0 @@ -<template> - <div - v-if="!loggedIn"> - <v-toolbar - :title="$t('pages.signup.name')" - flat /> - <v-form - ref="form" - v-model="valid" - @submit.prevent="submit"> - <v-card - variant="flat" - rounded="0"> - <v-card-text> - <v-row dense> - <v-col sm="6"> - <v-text-field - v-model="createAccount.email" - type="email" - autocomplete="off" - autofocus - required - name="email" - :rules="[v => !!v || $t('validation.required')]" - :hint="$t('pages.signup.email.hint')" - :label="$t('pages.signup.email.label')" /> - </v-col> - </v-row> - <v-row dense> - <v-col sm="6"> - <v-text-field - v-model="createAccount.username" - autocomplete="off" - required - name="username" - :rules="[v => !!v || $t('validation.required'), - v => /^[a-z0-9]{3,}$/.test(v) || $t('validation.user.pattern'), - v => !usernames.includes(v) || $t('validation.user.exists')]" - persistent-hint - :hint="$t('pages.signup.username.hint')" - :label="$t('pages.signup.username.label')" /> - </v-col> - </v-row> - <v-row dense> - <v-col sm="6"> - <v-text-field - v-model="createAccount.password" - autocomplete="off" - required - name="password" - :rules="[ - v => !!v || $t('validation.required') - ]" - type="password" - persistent-hint - :label="$t('pages.signup.password.label')" - :hint="$t('pages.signup.password.hint')" /> - </v-col> - </v-row> - <v-row dense> - <v-col sm="6"> - <v-text-field - v-model="password2" - autocomplete="off" - required - name="password-confirm" - :rules="[ - v => !!v || $t('validation.required') - ]" - :error-messages="password2 && password2 !== this.createAccount.password ? [this.$t('validation.matching')] : []" - type="password" - persistent-hint - :label="$t('pages.signup.confirm.label')" - :hint="$t('pages.signup.confirm.hint')" /> - </v-col> - </v-row> - </v-card-text> - <v-card-text> - <v-btn - id="login" - variant="flat" - :disabled="!valid" - color="primary" - type="submit" - name="submit" - :text="$t('pages.signup.submit.label')" - :loading="loading" - @click="register" /> - </v-card-text> - </v-card> - </v-form> - </div> -</template> - -<script setup> -const { loggedIn, user, login, logout } = useOidcAuth() -</script> -<script> -export default { - data () { - return { - loading: false, - loadingUsers: false, - usernames: [], - error: false, // XXX: `error` is never changed - valid: false, - password2: null, - privacy: false, - consent: false, - createAccount: { - username: null, - email: null, - password: null - } - } - }, - mounted () { - this.loadUsers() - }, - methods: { - submit () { - this.$refs.form.validate() - }, - register () { - this.loading = true - const userService = useUserService() - userService.create(this.createAccount) - .then(() => { - const toast = useToastInstance() - toast.success(this.$t('success.signup')) - this.$router.push('/login') - this.loading = false - }) - .catch(({code}) => { - this.loading = false - const toast = useToastInstance() - if (typeof code !== 'string') { - return - } - toast.error(this.$t(code)) - }) - .finally(() => { - this.loading = false - }) - }, - loadUsers () { - this.loadingUsers = true - const userService = useUserService() - userService.findAll() - .then((users) => { - this.usernames = users.map(u => u.username) - }) - .catch(({code}) => { - this.loadingUsers = false - const toast = useToastInstance() - if (typeof code !== 'string') { - return - } - toast.error(this.$t(code)) - }) - .finally(() => { - this.loadingUsers = false - }) - } - } -} -</script> -- GitLab From 8232e4e98e1fffbd9246a0ef4193fe86fbc43091 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sat, 25 Jan 2025 19:29:27 +0100 Subject: [PATCH 22/52] Refactored Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-ui/components/JumboBox.vue | 1 + dbrepo-ui/components/Loading.vue | 1 + dbrepo-ui/components/OntologiesList.vue | 64 ------------------- dbrepo-ui/components/ResourceStatus.vue | 1 + .../components/database/DatabaseToolbar.vue | 27 +++----- dbrepo-ui/components/identifier/Banner.vue | 1 + dbrepo-ui/components/identifier/Persist.vue | 37 ++++++----- dbrepo-ui/components/identifier/Select.vue | 13 +--- dbrepo-ui/components/subset/Builder.vue | 5 -- dbrepo-ui/components/subset/SubsetToolbar.vue | 13 ++-- dbrepo-ui/components/table/TableList.vue | 7 -- dbrepo-ui/components/table/TableToolbar.vue | 48 +++++++------- dbrepo-ui/components/user/UserToolbar.vue | 2 +- dbrepo-ui/components/view/ViewToolbar.vue | 31 +++++---- dbrepo-ui/composables/user-service.ts | 5 +- dbrepo-ui/layouts/default.vue | 57 +++++++++-------- dbrepo-ui/nuxt.config.ts | 30 ++++----- dbrepo-ui/package.json | 2 +- dbrepo-ui/pages/container/index.vue | 6 +- .../pages/database/[database_id]/info.vue | 7 +- .../persist/[identifier_id]/index.vue | 12 ++-- .../database/[database_id]/persist/index.vue | 14 ++-- .../pages/database/[database_id]/settings.vue | 16 +++-- .../[database_id]/subset/[subset_id]/data.vue | 4 -- .../[database_id]/subset/[subset_id]/info.vue | 8 ++- .../persist/[identifier_id]/index.vue | 9 +-- .../subset/[subset_id]/persist/index.vue | 6 -- .../database/[database_id]/subset/create.vue | 15 +---- .../database/[database_id]/subset/index.vue | 5 +- .../[database_id]/table/[table_id]/data.vue | 30 +++------ .../[database_id]/table/[table_id]/import.vue | 10 +-- .../[database_id]/table/[table_id]/info.vue | 35 +++++----- .../persist/[identifier_id]/index.vue | 9 +-- .../[database_id]/table/[table_id]/schema.vue | 19 ++++-- .../table/[table_id]/settings.vue | 32 +++------- .../[database_id]/table/create/dataset.vue | 9 +-- .../[database_id]/table/create/schema.vue | 9 +-- .../database/[database_id]/table/index.vue | 5 +- .../[database_id]/view/[view_id]/data.vue | 17 ++--- .../[database_id]/view/[view_id]/info.vue | 28 ++++---- .../persist/[identifier_id]/index.vue | 9 +-- .../view/[view_id]/persist/index.vue | 6 +- .../[database_id]/view/[view_id]/schema.vue | 24 ++++--- .../[database_id]/view/[view_id]/settings.vue | 29 ++++----- .../database/[database_id]/view/create.vue | 9 +-- .../database/[database_id]/view/index.vue | 5 +- dbrepo-ui/pages/index.vue | 14 +--- dbrepo-ui/pages/search.vue | 12 ---- dbrepo-ui/pages/user/authentication.vue | 6 +- dbrepo-ui/pages/user/index.vue | 3 - dbrepo-ui/pages/user/info.vue | 32 ++++------ dbrepo-ui/stores/cache.js | 14 ++-- 52 files changed, 319 insertions(+), 494 deletions(-) delete mode 100644 dbrepo-ui/components/OntologiesList.vue diff --git a/dbrepo-ui/components/JumboBox.vue b/dbrepo-ui/components/JumboBox.vue index d2b804f819..5a26ec6139 100644 --- a/dbrepo-ui/components/JumboBox.vue +++ b/dbrepo-ui/components/JumboBox.vue @@ -21,6 +21,7 @@ </v-row> </div> </template> + <script> export default { props: { diff --git a/dbrepo-ui/components/Loading.vue b/dbrepo-ui/components/Loading.vue index 743701ab67..84094bfef8 100644 --- a/dbrepo-ui/components/Loading.vue +++ b/dbrepo-ui/components/Loading.vue @@ -7,6 +7,7 @@ indeterminate /> </v-list-item-title> </template> + <script> export default { props: { diff --git a/dbrepo-ui/components/OntologiesList.vue b/dbrepo-ui/components/OntologiesList.vue deleted file mode 100644 index 432d26e428..0000000000 --- a/dbrepo-ui/components/OntologiesList.vue +++ /dev/null @@ -1,64 +0,0 @@ -<template> - <div> - <v-card - v-for="(ontology, idx) in ontologies" - :key="idx" - :to="`/semantic/ontology/${ontology.id}`" - variant="flat" - rounded="0"> - <v-divider - class="mx-4" /> - <v-card-title> - {{ ontology.prefix }} - </v-card-title> - <v-card-subtitle> - {{ ontology.uri }} - </v-card-subtitle> - <v-card-text> - <div - class="db-tags"> - <v-chip - v-if="ontology.sparql" - size="small" - color="success" - text="SPARQL" - variant="outlined" /> - <v-chip - v-if="ontology.rdf" - size="small" - text="RDF" - variant="outlined" /> - </div> - </v-card-text> - </v-card> - </div> -</template> - -<script setup> -</script> -<script> -import { useCacheStore } from '@/stores/cache.js' - -export default { - data () { - return { - cacheStore: useCacheStore() - } - }, - computed: { - ontologies () { - return [] - } - }, - mounted () { - }, - methods: { - } -} -</script> - -<style> -.db-tags .v-chip:not(:first-child) { - margin-left: 4px; -} -</style> diff --git a/dbrepo-ui/components/ResourceStatus.vue b/dbrepo-ui/components/ResourceStatus.vue index 5167d899ea..d766f37660 100644 --- a/dbrepo-ui/components/ResourceStatus.vue +++ b/dbrepo-ui/components/ResourceStatus.vue @@ -14,6 +14,7 @@ </span> </span> </template> + <script> export default { props: { diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue index 9d43b262e3..a606bfd2dc 100644 --- a/dbrepo-ui/components/database/DatabaseToolbar.vue +++ b/dbrepo-ui/components/database/DatabaseToolbar.vue @@ -81,13 +81,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import { useCacheStore } from '@/stores/cache.js' import ResourceStatus from '@/components/ResourceStatus.vue' @@ -110,6 +103,12 @@ export default { access () { return this.cacheStore.getAccess }, + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser + }, isContrastTheme () { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') }, @@ -140,12 +139,6 @@ export default { } return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, - canImportCsv () { - if (!this.user || !this.hasWriteAccess) { - return false - } - return this.roles.includes('insert-table-data') - }, canCreateSubset () { if (!this.database) { return false @@ -156,22 +149,22 @@ export default { return this.hasReadAccess }, canCreateView () { - if (!this.user || !this.isOwner) { + if (!this.cacheUser || !this.isOwner) { return false } return this.roles.includes('create-database-view') }, canCreateTable () { - if (!this.user || !this.hasWriteAccess) { + if (!this.cacheUser || !this.hasWriteAccess) { return false } return this.roles.includes('create-table') }, isOwner () { - if (!this.database || !this.user) { + if (!this.database || !this.cacheUser) { return false } - return this.database.owner.id === this.userInfo.uid + return this.database.owner.id === this.cacheUser.uid }, buttonVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/components/identifier/Banner.vue b/dbrepo-ui/components/identifier/Banner.vue index 1450347c41..7c77a1b28b 100644 --- a/dbrepo-ui/components/identifier/Banner.vue +++ b/dbrepo-ui/components/identifier/Banner.vue @@ -3,6 +3,7 @@ {{ prefix }}: <a :href="href">{{ displayName }}</a> </div> </template> + <script> export default { props: { diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index 408d7e8265..b02ff09b76 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -827,13 +827,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import { formatYearUTC, formatMonthUTC, formatDayUTC, languages } from '@/utils' import { useCacheStore } from '@/stores/cache.js' @@ -972,6 +965,12 @@ export default { } }, computed: { + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles + }, isSubset () { return this.type === 'subset' }, @@ -1045,19 +1044,19 @@ export default { } }, canInsertSelf () { - if (!this.user) { + if (!this.cacheUser) { return false } - return this.user.given_name || this.user.family_name || this.user.attributes.affiliation || this.user.attributes.orcid + return this.cacheUser.given_name || this.cacheUser.family_name || this.cacheUser.attributes.affiliation || this.cacheUser.attributes.orcid }, isCreator () { - if (!this.user || !this.identifier) { + if (!this.cacheUser || !this.identifier) { return false } - if (!this.identifier.creator) { + if (!this.identifier.owner) { return true } - return this.identifier.creator.id === this.user.id + return this.identifier.owner.id === this.cacheUser.uid }, formValid () { /* somehow Vue3/Vuetify3 validation form is broken for arrays */ @@ -1119,10 +1118,10 @@ export default { return this.roles.includes('create-identifier') && !this.isPublished }, canRemove () { - if (!this.roles || !this.identifier || !this.identifier.creator || !this.user) { + if (!this.roles || !this.identifier || !this.identifier.owner || !this.cacheUser) { return false } - return this.roles.includes('delete-identifier') && this.identifier.creator.id === this.user.id && !this.isPublished + return this.roles.includes('delete-identifier') && this.identifier.owner.id === this.cacheUser.uid && !this.isPublished }, canPublish () { if (!this.roles || !this.identifier || !this.roles.includes('publish-identifier') || this.isPublished || !this.identifier.id) { @@ -1490,15 +1489,15 @@ export default { if (this.isPublished) { return false } - if (this.user.attributes.orcid) { - creator.name_identifier = this.user.attributes.orcid + if (this.cacheUser.attributes.orcid) { + creator.name_identifier = this.cacheUser.attributes.orcid this.retrieveCreator(creator) return } - creator.firstname = this.user.given_name - creator.lastname = this.user.family_name + creator.firstname = this.cacheUser.given_name + creator.lastname = this.cacheUser.family_name creator.creator_name = (creator.lastname ? creator.lastname + ', ' : '') + creator.firstname - creator.affiliation = this.user.attributes.affiliation + creator.affiliation = this.cacheUser.attributes.affiliation }, canShiftUp (creator, idx) { if (this.isPublished) { diff --git a/dbrepo-ui/components/identifier/Select.vue b/dbrepo-ui/components/identifier/Select.vue index 84f87e321f..ca5f3ce21e 100644 --- a/dbrepo-ui/components/identifier/Select.vue +++ b/dbrepo-ui/components/identifier/Select.vue @@ -41,16 +41,8 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Banner from '@/components/identifier/Banner.vue' -import { formatTimestampUTCLabel } from '@/utils' import { useCacheStore } from '@/stores/cache.js' export default { @@ -82,10 +74,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.user) { + if (!this.userInfo) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.user.id) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) }, listVariant () { const runtimeConfig = useRuntimeConfig() @@ -104,7 +96,6 @@ export default { this.init() }, methods: { - formatTimestampUTCLabel, href (identifier) { if (identifier.status === 'published') { return `/pid/${identifier.id}` diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index ae7df27683..4261b098b6 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -304,11 +304,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -</script> <script> import TimeDrift from '@/components/TimeDrift.vue' import Raw from '@/components/subset/Raw.vue' diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index 45ca762628..61e26e9967 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -55,12 +55,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -</script> <script> import DownloadButton from '@/components/identifier/DownloadButton.vue' import { formatTimestampUTCLabel } from '@/utils' @@ -95,6 +89,9 @@ export default { subset () { return this.cacheStore.getSubset }, + cacheUser () { + return this.cacheStore.getUser + }, identifiers () { if (!this.subset) { return [] @@ -152,10 +149,10 @@ export default { return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, canGetPid () { - if (!this.userInfo || !this.subset || !this.database) { + if (!this.cacheUser || !this.subset || !this.database) { return false } - return this.database.owner.id === this.userInfo.uid || (this.subset.owner.id === this.userInfo.uid && this.hasReadAccess) + return this.database.owner.id === this.cacheUser.uid || (this.subset.owner.id === this.cacheUser.uid && this.hasReadAccess) }, title () { if (!this.identifier) { diff --git a/dbrepo-ui/components/table/TableList.vue b/dbrepo-ui/components/table/TableList.vue index d34483422d..71106f7c65 100644 --- a/dbrepo-ui/components/table/TableList.vue +++ b/dbrepo-ui/components/table/TableList.vue @@ -38,13 +38,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import { formatTimestampUTCLabel } from '@/utils' import { useCacheStore } from '@/stores/cache.js' diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue index 9aee22348f..e09cd67cba 100644 --- a/dbrepo-ui/components/table/TableToolbar.vue +++ b/dbrepo-ui/components/table/TableToolbar.vue @@ -77,13 +77,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import EditTuple from '@/components/dialogs/EditTuple.vue' import { useCacheStore } from '@/stores/cache.js' @@ -112,31 +105,40 @@ export default { access () { return this.cacheStore.getAccess }, + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles + }, hasReadAccess () { if (!this.access) { return false } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + const userService = useUserService() + return userService.hasReadAccess(this.access) }, canUpdateTable () { - if (!this.roles || !this.user || !this.table) { + if (!this.roles || !this.cacheUser || !this.table) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid + return this.roles.includes('update-table') && this.table.owner.id === this.cacheUser.uid }, canExecuteQuery () { - if (!this.roles || !this.table || !this.user) { + if (!this.roles || !this.table || !this.cacheUser) { return false } - const userService = useUserService() - return userService.hasReadAccess(this.access) && this.roles.includes('execute-query') + return this.hasReadAccess && this.roles.includes('execute-query') + }, + isOwner () { + const databaseService = useDatabaseService() + return databaseService.isOwner(this.database, this.cacheUser) }, canCreateView () { - if (!this.roles || !this.table || !this.user) { + if (!this.roles || !this.table || !this.cacheUser) { return false } - const databaseService = useDatabaseService() - return databaseService.isOwner(this.database, this.user) && this.roles.includes('create-database-view') + return this.isOwner && this.roles.includes('create-database-view') }, canViewData () { if (!this.table) { @@ -145,10 +147,10 @@ export default { if (this.table.is_public) { return true } - if (!this.user) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + return this.hasReadAccess || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, canViewSchema () { if (!this.table) { @@ -157,22 +159,22 @@ export default { if (this.table.is_schema_public) { return true } - if (!this.user) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + return this.hasReadAccess || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, canImportCsv () { - if (!this.roles || !this.table || !this.user) { + if (!this.roles || !this.table || !this.cacheUser) { return false } return this.roles.includes('insert-table-data') }, canGetPid () { - if (!this.user || !this.table || !this.database) { + if (!this.cacheUser || !this.table || !this.database) { return false } - return this.database.owner.id === this.userInfo.uid || this.table.owner.id === this.userInfo.uid + return this.hasReadAccess && this.database.owner.id === this.cacheUser.uid || this.table.owner.id === this.cacheUser.uid }, buttonVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/components/user/UserToolbar.vue b/dbrepo-ui/components/user/UserToolbar.vue index 868bab88a9..54210130d3 100644 --- a/dbrepo-ui/components/user/UserToolbar.vue +++ b/dbrepo-ui/components/user/UserToolbar.vue @@ -21,7 +21,7 @@ </template> <script setup> -const { loggedIn, user, login, logout } = useOidcAuth() +const { loggedIn } = useOidcAuth() </script> <script> export default { diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index 74eac9dedf..d9e0bfb6bf 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -56,13 +56,6 @@ </v-toolbar> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import { useCacheStore } from '@/stores/cache.js' import CreateOntology from '@/components/dialogs/CreateOntology.vue' @@ -96,6 +89,12 @@ export default { view () { return this.cacheStore.getView }, + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles + }, canViewData () { if (!this.view) { return false @@ -103,10 +102,10 @@ export default { if (this.view.is_public) { return true } - if (!this.user) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.view.owner.id === this.userInfo.id || this.database.owner.id === this.userInfo.id + return this.hasReadAccess || this.view.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, canViewSchema () { if (!this.view) { @@ -115,23 +114,23 @@ export default { if (this.view.is_schema_public) { return true } - if (!this.user) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.view.owner.id === this.userInfo.id || this.database.owner.id === this.userInfo.id + return this.hasReadAccess || this.view.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, canViewSettings () { - if (!this.user || !this.view) { + if (!this.cacheUser || !this.view) { return false } - return this.view.owner.id === this.userInfo.id + return this.view.owner.id === this.cacheUser.uid }, canCreatePid () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.cacheUser || !this.view) { return false } - const userService = useUserService() - return this.roles.includes('create-identifier') && userService.hasReadAccess(this.access) + const cacheUserService = useUserService() + return cacheUserService.hasReadAccess(this.access) && this.roles.includes('create-identifier') }, access () { return this.cacheStore.getAccess diff --git a/dbrepo-ui/composables/user-service.ts b/dbrepo-ui/composables/user-service.ts index 5381fee565..3425dbaa5c 100644 --- a/dbrepo-ui/composables/user-service.ts +++ b/dbrepo-ui/composables/user-service.ts @@ -141,13 +141,13 @@ export const useUserService = (): any => { } function hasWriteAccess(table: TableDto, access: DatabaseAccessDto, user: UserDto): boolean { - if (!table || !access) { + if (!table || !access || !user) { return false } if (access.type === 'write_all') { return true } - return access.type === 'write_own' && table.owner.id === user.id + return access.type === 'write_own' && table.owner.id === user.uid } return { @@ -156,7 +156,6 @@ export const useUserService = (): any => { update, create, updatePassword, - refreshToken, nameIdentifierToNameIdentifierScheme, userToFullName, hasReadAccess, diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index a08f6f70f5..816d74c26a 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -105,10 +105,10 @@ {{ $t('navigation.login') }} </v-btn> <v-btn - v-if="loggedIn" + v-if="cacheUser" to="/user" variant="plain" - :text="userInfo.preferred_username" /> + :text="cacheUser.preferred_username" /> <v-menu v-if="loggedIn" location="bottom"> @@ -119,19 +119,18 @@ </template> <v-list> <v-list-item - v-if="user" + v-if="cacheUser" exact - :to="`/search?type=database&owner.username=${user.username}`"> + :to="`/search?type=database&owner.username=${cacheUser.username}`"> {{ $t('navigation.databases') + ' ' + $t('navigation.mine')}} </v-list-item> <v-list-item - v-if="user" + v-if="cacheUser" exact - :to="`/search?type=identifier&identifiers.creator.username=${user.username}`"> + :to="`/search?type=identifier&identifiers.creator.username=${cacheUser.username}`"> {{ $t('navigation.identifiers') + ' ' + $t('navigation.mine') }} </v-list-item> <v-list-item - v-if="user" @click="logout()"> {{ $t('navigation.logout') }} </v-list-item> @@ -154,10 +153,12 @@ <script setup> import { ref } from 'vue' +import { useCacheStore } from '@/stores/cache.js' const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +const cacheStore = useCacheStore() +cacheStore.setUser(loggedIn ? user.value?.userInfo : null) +cacheStore.setRoles(loggedIn ? user.value?.claims?.realm_access?.roles : []) const runtimeConfig = useRuntimeConfig() const config = ref(runtimeConfig) useServerHead({ @@ -173,7 +174,6 @@ import JumboBox from '@/components/JumboBox.vue' import { useCacheStore } from '@/stores/cache.js' import { errorCodeKey, makeError } from '@/utils' - export default { components: { JumboBox @@ -211,6 +211,12 @@ export default { database () { return this.cacheStore.getDatabase }, + access () { + return this.cacheStore.getAccess + }, + cacheUser () { + return this.cacheStore.getUser + }, resource () { if (!this.$route.params.database_id) { return null @@ -248,13 +254,13 @@ export default { if (!this.user) { return null } - if (this.table && !this.table.is_public && !this.table.is_schema_public && this.table.owner.id !== this.user.id) { + if (this.table && !this.table.is_public && !this.table.is_schema_public && this.table.owner.id !== this.cacheUser.uid) { return makeError(403, null, null) } - if (this.view && !this.view.is_public && !this.view.is_schema_public && this.view.owner.id !== this.user.id) { + if (this.view && !this.view.is_public && !this.view.is_schema_public && this.view.owner.id !== this.cacheUser.uid) { return makeError(403, null, null) } - if (this.subset && !this.subset.is_public && !this.subset.is_schema_public && this.subset.owner.id !== this.user.id) { + if (this.subset && !this.subset.is_public && !this.subset.is_schema_public && this.subset.owner.id !== this.cacheUser.uid) { return makeError(403, null, null) } return null @@ -266,10 +272,7 @@ export default { return this.roles.includes('list-ontologies') }, canListContainers () { - if (!this.roles) { - return false - } - return this.roles.includes('list-containers') + return this.cacheUser }, logo () { return this.$config.public.logo @@ -291,19 +294,18 @@ export default { this.cacheStore.setTable(null) this.cacheStore.setView(null) this.cacheStore.setSubset(null) + this.cacheStore.setAccess(null) return } if (import.meta.server) { return } /* load database and optional access */ + this.cacheStore.setRouteAccess(newObj.database_id, this.cacheUser?.uid) this.cacheStore.setRouteDatabase(newObj.database_id) .catch((error) => { this.databaseError = error }) - if (this.userInfo) { - this.cacheStore.setRouteAccess(newObj.database_id, this.userInfo.uid) - } /* load table */ if (newObj.table_id) { this.cacheStore.setRouteTable(newObj.database_id, newObj.table_id) @@ -328,14 +330,14 @@ export default { } }, mounted () { - this.initEnvironment() if (this.$route.query && this.$route.query.q) { this.search = this.$route.query.q } - if (!this.user) { + if (!this.cacheUser) { return } this.setTheme() + this.setLocale() this.cacheStore.reloadMessages() }, methods: { @@ -343,7 +345,7 @@ export default { console.debug('performing fuzzy search') this.$router.push({ path: '/search', query: { q: this.search } }) }, - initEnvironment () { + setLocale () { if (!this.locale) { this.cacheStore.setLocale('en') return @@ -351,7 +353,10 @@ export default { this.$i18n.locale = this.locale }, setTheme () { - switch (this.user.attributes.theme) { + if (!this.cacheUser?.attributes?.theme) { + return + } + switch (this.cacheUser.attributes.theme) { case 'dark': this.$vuetify.theme.global.name = 'tuwThemeDark' break @@ -365,10 +370,6 @@ export default { this.$vuetify.theme.global.name = 'tuwThemeDarkContrast' break } - }, - setLocale (code) { - this.cacheStore.setLocale(code) - this.$i18n.locale = this.locale } } } diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 305a753d9e..0f2099a387 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -3,19 +3,19 @@ import vuetify from 'vite-plugin-vuetify' const proxy: any = {} -/* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ -if (process.env.NODE_ENV === 'development') { - const api = 'http://localhost' - proxy['/api'] = api - proxy['/pid'] = { - target: api + '/api', - changeOrigin: true, - pathRewrite: { - '^/pid': '/pid' - } - } - process.env.NUXT_PUBLIC_API_SERVER = api -} +// /* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ +// if (process.env.NODE_ENV === 'development') { +// const api = 'http://localhost' +// proxy['/api'] = api +// proxy['/pid'] = { +// target: api + '/api', +// changeOrigin: true, +// pathRewrite: { +// '^/pid': '/pid' +// } +// } +// process.env.NUXT_PUBLIC_API_SERVER = api +// } /** * https://nuxt.com/docs/guide/concepts/rendering#hybrid-rendering @@ -116,10 +116,10 @@ export default defineNuxtConfig({ clientSecret: '', // inject on runtime scope: ['openid', 'roles'], optionalClaims: ['realm_access'], - redirectUri: 'http://localhost/auth/keycloak/callback', + redirectUri: 'http://localhost:3001/auth/keycloak/callback', userNameClaim: 'preferred_username', exposeAccessToken: true, - logoutRedirectUri: 'http://localhost', + logoutRedirectUri: 'http://localhost:3001', }, }, middleware: { diff --git a/dbrepo-ui/package.json b/dbrepo-ui/package.json index ec3ae1e6a4..7110d273f2 100644 --- a/dbrepo-ui/package.json +++ b/dbrepo-ui/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "build": "nuxt build", - "dev": "VERSION=bun-dev NODE_ENV=development nuxt dev", + "dev": "VERSION=bun-dev NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG NODE_ENV=development nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", diff --git a/dbrepo-ui/pages/container/index.vue b/dbrepo-ui/pages/container/index.vue index ec2149372e..20fed36801 100644 --- a/dbrepo-ui/pages/container/index.vue +++ b/dbrepo-ui/pages/container/index.vue @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="loggedIn"> <v-toolbar flat :title="$t('pages.container.title')"> @@ -11,6 +12,9 @@ </div> </template> +<script setup> +const { loggedIn } = useOidcAuth() +</script> <script> import ContainerList from '@/components/container/ContainerList.vue' diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 33d63b29a9..9da8daab62 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -242,7 +242,7 @@ export default { if (!this.user) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.user.id) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) }, identifier () { if (this.pid) { @@ -336,7 +336,10 @@ export default { if (this.error) { return false } - return this.database + if (!this.database) { + return false + } + return this.database.is_schema_public } } } 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 2c2e5ef120..75f267944f 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 @@ -8,12 +8,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' @@ -51,6 +45,12 @@ export default { database () { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser + }, canCreateIdentifier () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/index.vue index a3581c0c82..570c5d9da5 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/index.vue @@ -8,13 +8,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' @@ -48,6 +41,9 @@ export default { database () { return this.cacheStore.getDatabase }, + cacheUser () { + return this.cacheStore.getUser + }, hasIdentifier () { if (this.database && 'identifier' in this.database && this.database.identifier) { return 'id' in this.database.identifier @@ -55,10 +51,10 @@ export default { return false }, isOwner () { - if (!this.database || !this.userInfo) { + if (!this.database || !this.cacheUser) { return false } - return this.database.owner.id === this.userInfo.uid + return this.database.owner.id === this.cacheUser.uid }, canCreateIdentifier () { if (!this.roles || this.hasIdentifier) { diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 5b0aa2a453..1d71474805 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -349,16 +349,16 @@ export default { if (!this.database || !this.user) { return false } - if (this.database.owner.id === null || this.user.id === null) { + if (this.database.owner.id === null || this.userInfo.uid === null) { return false } - return this.database.owner.id === this.user.id + return this.database.owner.id === this.userInfo.uid }, isSameOwner () { - if (!this.modifyOwner || !this.user) { + if (!this.modifyOwner || !this.userInfo) { return false } - return this.modifyOwner.id === this.user.id + return this.modifyOwner.id === this.userInfo.uid }, isSameVisibility () { if (!this.modifyVisibility || !this.database) { @@ -406,7 +406,13 @@ export default { if (this.error) { return false } - return this.database + if (!this.database) { + return false + } + if (!this.cacheUser) { + return false + } + return this.database.owner.id === this.cacheUser.uid }, previewImage () { if (this.file) { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue index e9719cd0ef..ee6d25eda7 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue @@ -139,10 +139,6 @@ export default { this.loadingSubset = false }) }, - loadResult () { - if (this.subset) { - } - }, download () { this.downloadLoading = true const queryService = useQueryService() 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 a9956278d1..eeb0a70c3e 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 @@ -50,7 +50,9 @@ v-if="subset.creator" :title="$t('pages.subset.creator.title')" density="compact"> - <UserBadge :user="subset.creator" :other-user="user" /> + <UserBadge + :user="subset.creator" + :other-user="cacheUser" /> </v-list-item> <v-list-item :title="$t('pages.subset.query.title')" @@ -143,8 +145,8 @@ export default { database () { return this.cacheStore.getDatabase }, - access () { - return this.cacheStore.getAccess + cacheUser () { + return this.cacheStore.getUser }, subset () { return this.cacheStore.getSubset 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 0e1dac8c7e..65154f38a5 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 @@ -8,12 +8,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' @@ -59,6 +53,9 @@ export default { database () { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, canCreateIdentifier () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue index cc0dbf4958..82a4ba5f70 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue @@ -9,12 +9,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' diff --git a/dbrepo-ui/pages/database/[database_id]/subset/create.vue b/dbrepo-ui/pages/database/[database_id]/subset/create.vue index 2ea1c5022a..94fd8e8ec9 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/create.vue @@ -6,12 +6,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Builder from '@/components/subset/Builder.vue' import {useCacheStore} from '@/stores/cache.js' @@ -51,12 +45,6 @@ export default { access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' - }, canCreateSubset () { if (!this.database) { return false @@ -64,7 +52,8 @@ export default { if (this.database.is_public) { return true } - return this.hasReadAccess + const userService = useUserService() + return userService.hasReadAccess(this.access) } } } diff --git a/dbrepo-ui/pages/database/[database_id]/subset/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/index.vue index 2f68604881..93be3df024 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/index.vue @@ -43,7 +43,10 @@ export default { if (this.error) { return false } - return this.database + if (!this.database) { + return false + } + return this.database.is_schema_public } } } 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 ca120e89f7..cf304cbf71 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 @@ -107,11 +107,7 @@ </template> <script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +const { loggedIn } = useOidcAuth() </script> <script> import TableHistory from '@/components/table/TableHistory.vue' @@ -197,15 +193,12 @@ export default { table () { return this.cacheStore.getTable }, + roles () { + return this.cacheStore.getRoles + }, access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' - }, title () { return (this.version ? this.$t('toolbars.database.history') : this.$t('toolbars.database.current')) + ' ' + this.versionFormatted }, @@ -230,15 +223,6 @@ export default { } return this.version.substring(0, 10) + 'T' + this.version.substring(11, 19) + 'Z' }, - canModify () { - if (!this.userInfo || !this.access || !this.table) { - return false - } - if (this.access.type === 'write_own' && this.table.owner.id === this.userInfo.uid) { - return true - } - return this.access.type === 'write_all' - }, primaryKeyColumns () { if (!this.table) { return [] @@ -258,7 +242,11 @@ export default { if (!this.roles || !this.roles.includes('view-table-data')) { return false } - return this.hasReadAccess + if (!this.access) { + return false + } + const userService = useUserService() + return userService.hasReadAccess(this.access) }, canAddTuple () { if (!this.roles) { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue index 46eb7106fd..1b54076c65 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue @@ -28,13 +28,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import TableImport from '@/components/table/TableImport.vue' import { useCacheStore } from '@/stores/cache.js' @@ -82,6 +75,9 @@ export default { table () { return this.cacheStore.getTable }, + roles () { + return this.cacheStore.getRoles + }, title () { if (!this.table) { return this.$t('pages.table.import.title') diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue index ca295a5587..6ab884a826 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 @@ -64,7 +64,7 @@ :title="$t('pages.table.owner.title')"> <UserBadge :user="table.owner" - :other-user="user" /> + :other-user="cacheUser" /> </v-list-item> </v-list> </v-card-text> @@ -118,13 +118,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' import Select from '@/components/identifier/Select.vue' @@ -184,14 +177,21 @@ export default { table () { return this.cacheStore.getTable }, + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles + }, canRead () { if (this.database && this.database.is_public) { return true } - if (!this.user || !this.access) { + if (!this.access) { return false } - return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' + const userService = useUserService() + return userService.hasReadAccess(this.access) }, canViewSchema () { if (this.error) { @@ -203,16 +203,15 @@ export default { if (this.table.is_schema_public || this.table.is_public) { return true } - if (!this.userInfo) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, canWrite () { - if (!this.table || !this.user || !this.access) { - return false - } - return (this.access.type === 'write_own' && this.table.owned_by === this.userInfo.uid) || this.access.type === 'write_all' + const userService = useUserService() + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) }, access () { return this.cacheStore.getAccess @@ -236,10 +235,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.userInfo) { + if (!this.cacheUser) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.userInfo.uid) + return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.cacheUser.uid) }, identifier () { if (this.pid) { 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 0e82a2210b..50c06f569a 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 @@ -6,12 +6,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' @@ -57,6 +51,9 @@ export default { database () { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, canCreateIdentifier () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue index 4cbb8d37d1..32a6dd9dad 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue @@ -123,9 +123,7 @@ <script setup> import { ref } from 'vue' -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +const { loggedIn } = useOidcAuth() </script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' @@ -187,6 +185,12 @@ export default { access () { return this.cacheStore.getAccess }, + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles + }, hasReadAccess () { if (!this.access) { return false @@ -203,16 +207,17 @@ export default { if (this.table.is_schema_public) { return true } - if (!this.userInfo) { + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.table.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid }, primaryKeysColumns () { return this.table.constraints.primary_key.map(pk => pk.column.internal_name).join(', ') }, canAssignSemanticInformation () { - if (!this.userInfo) { + if (!this.cacheUser) { return false } if (this.roles.includes('modify-foreign-table-column-semantics')) { @@ -221,7 +226,7 @@ export default { if (!this.access) { return false } - return this.roles.includes('modify-table-column-semantics') && (this.access.type === 'write_all' || this.table.owner.id === this.userInfo.uid) + return this.roles.includes('modify-table-column-semantics') && (this.access.type === 'write_all' || this.table.owner.id === this.cacheUser.uid) }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 ddf319328c..a2ac279f2e 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 @@ -3,7 +3,6 @@ v-if="canUpdateTable"> <TableToolbar /> <v-window - v-if="loggedIn" v-model="tab"> <v-window-item> <v-form @@ -114,13 +113,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' import { useCacheStore } from '@/stores/cache.js' @@ -194,11 +186,11 @@ export default { access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + cacheUser () { + return this.cacheStore.getUser + }, + roles () { + return this.cacheStore.getRoles }, isChange () { if (!this.table) { @@ -210,26 +202,20 @@ export default { return this.table.is_schema_public !== this.modify.is_schema_public }, canUpdateTable () { - if (!this.roles || !this.userInfo || !this.table) { - return false - } - return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid - }, - canModifyVisibility () { - if (!this.roles || !this.userInfo || !this.table) { + if (!this.roles || !this.cacheUser || !this.table) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.userInfo.uid + return this.roles.includes('update-table') && this.table.owner.id === this.cacheUser.uid }, canDropTable () { - if (!this.roles || !this.table || !this.userInfo) { + if (!this.roles || !this.table || !this.cacheUser) { return false } if (this.roles.includes('delete-foreign-table')) { return true } const tableService = useTableService() - return tableService.isOwner(this.table, this.userInfo) && this.roles.includes('delete-table') && this.table.identifiers.length === 0 + return tableService.isOwner(this.table, this.cacheUser) && this.roles.includes('delete-table') && this.table.identifiers.length === 0 }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 78bd136751..50eb6305d7 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -219,12 +219,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' @@ -323,6 +317,9 @@ export default { database() { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, generatedTableName() { if (!this.tableCreate.name) { return null 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 cf8de848de..d6bd4414df 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -185,12 +185,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' @@ -266,6 +260,9 @@ export default { database () { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, canCreateTable () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/table/index.vue b/dbrepo-ui/pages/database/[database_id]/table/index.vue index ae3e3c13f1..95fdf1643e 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/index.vue @@ -52,7 +52,10 @@ export default { if (this.error) { return false } - return this.database + if (!this.database) { + return false + } + return this.database.is_schema_public } } } 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 0b0caa3c4f..bb3d953d76 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 @@ -38,7 +38,7 @@ import { ref } from 'vue' const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) +const cacheUser = ref(loggedIn ? user.value?.cacheUser : null) </script> <script> import TimeDrift from '@/components/TimeDrift.vue' @@ -88,11 +88,8 @@ export default { access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' + cacheUser () { + return this.cacheStore.getUser }, canReadData () { if (!this.view) { @@ -101,10 +98,14 @@ export default { if (this.view.is_public) { return true } - if (!this.userInfo) { + if (!this.access) { + return false + } + if (!this.cacheUser) { return false } - return this.view.owner.id === this.userInfo.uid || this.hasReadAccess + const userService = useUserService() + return userService.hasReadAccess(this.access) || this.database.owner.id === this.cacheUser.uid }, }, mounted () { 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 0ed006c4be..5864740846 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 @@ -59,12 +59,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -</script> <script> import ViewToolbar from '@/components/view/ViewToolbar.vue' import Summary from '@/components/identifier/Summary.vue' @@ -121,11 +115,11 @@ export default { view () { return this.cacheStore.getView }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser }, identifiers () { if (!this.view) { @@ -137,10 +131,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.userInfo) { + if (!this.cacheUser) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid) }, identifier () { if (this.pid) { @@ -177,10 +171,14 @@ export default { if (this.view.is_public) { return true } - if (!this.userInfo) { + if (!this.access) { return false } - return this.hasReadAccess || this.view.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + if (!this.cacheUser) { + return false + } + const userService = useUserService() + return userService.hasReadAcess(this.access) || this.database.owner.id === this.cacheUser.uid } }, methods: { 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 f528c86675..691336be2a 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 @@ -8,12 +8,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Persist from '@/components/identifier/Persist.vue' import { useCacheStore } from '@/stores/cache.js' @@ -59,6 +53,9 @@ export default { database () { return this.cacheStore.getDatabase }, + roles () { + return this.cacheStore.getRoles + }, canCreateIdentifier () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue index c5082c3be9..6351650736 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue @@ -51,15 +51,15 @@ export default { database () { return this.cacheStore.getDatabase }, + access () { + return this.cacheStore.getAccess + }, view () { if (!this.database) { return null } return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] }, - access () { - return this.cacheStore.getAccess - }, canPersistView () { if (!this.view) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue index 5bd1ff5f9c..2cc851a41c 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue @@ -51,12 +51,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' import { useCacheStore } from '@/stores/cache.js' @@ -113,11 +107,11 @@ export default { access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser }, canViewSchema () { if (!this.view) { @@ -126,10 +120,14 @@ export default { if (this.view.is_schema_public) { return true } - if (!this.userInfo) { + if (!this.access) { + return false + } + if (!this.cacheUser) { return false } - return this.hasReadAccess || this.view.owner.id === this.userInfo.uid || this.database.owner.id === this.userInfo.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) || this.database.owner.id === this.cacheUser.uid }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 575e5b5f27..8d77881cec 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 @@ -90,13 +90,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import ViewToolbar from '@/components/view/ViewToolbar.vue' import { useCacheStore } from '@/stores/cache.js' @@ -167,11 +160,11 @@ export default { access () { return this.cacheStore.getAccess }, - hasReadAccess () { - if (!this.access) { - return false - } - return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser }, isChange () { if (!this.view) { @@ -183,22 +176,22 @@ export default { return this.view.is_schema_public !== this.modify.is_schema_public }, canUpdateVisibility () { - if (!this.roles || !this.userInfo || !this.view) { + if (!this.roles || !this.cacheUser || !this.view) { return false } - return this.roles.includes('modify-view-visibility') && this.view.owner.id === this.userInfo.uid + return this.roles.includes('modify-view-visibility') && this.view.owner.id === this.cacheUser.uid }, canDeleteView () { - if (!this.roles || !this.userInfo || !this.view) { + if (!this.roles || !this.cacheUser || !this.view) { return false } - return this.roles.includes('delete-database-view') && this.view.owner.id === this.userInfo.uid + return this.roles.includes('delete-database-view') && this.view.owner.id === this.cacheUser.uid }, canViewSettings () { - if (!this.userInfo || !this.view) { + if (!this.cacheUser || !this.view) { return false } - return this.view.owner.id === this.userInfo.uid + return this.view.owner.id === this.cacheUser.uid }, inputVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue index b9d4a684d7..ab52fd2405 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue @@ -6,12 +6,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import Builder from '@/components/subset/Builder.vue' @@ -43,6 +37,9 @@ export default { } }, computed: { + roles () { + return this.cacheStore.getRoles + }, canCreateView () { if (!this.roles) { return false diff --git a/dbrepo-ui/pages/database/[database_id]/view/index.vue b/dbrepo-ui/pages/database/[database_id]/view/index.vue index 64f777dce3..8c3ab4b0e0 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/index.vue @@ -52,7 +52,10 @@ export default { if (this.error) { return false } - return this.database + if (!this.database) { + return false + } + return this.database.is_schema_public } } } diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue index 16cbbb283f..b6c225025e 100644 --- a/dbrepo-ui/pages/index.vue +++ b/dbrepo-ui/pages/index.vue @@ -27,9 +27,6 @@ </div> </template> -<script setup> -const { loggedIn, user, login, logout } = useOidcAuth() -</script> <script> import DatabaseList from '@/components/database/DatabaseList.vue' import DatabaseCreate from '@/components/database/DatabaseCreate.vue' @@ -47,17 +44,8 @@ export default { } }, computed: { - userInfo () { - if (!this.user) { - return null - } - return this.user.userInfo - }, roles () { - if (!this.user) { - return [] - } - return [] + return this.cacheStore.getRoles }, canCreateDatabase () { if (!this.roles) { diff --git a/dbrepo-ui/pages/search.vue b/dbrepo-ui/pages/search.vue index ca80b1efda..507f81b731 100644 --- a/dbrepo-ui/pages/search.vue +++ b/dbrepo-ui/pages/search.vue @@ -63,12 +63,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import AdvancedSearch from '@/components/search/AdvancedSearch.vue' @@ -93,12 +87,6 @@ export default { header () { return `${this.results.length} ${this.results.length !== 1 ? this.$t('toolbars.search.results') : this.$t('toolbars.search.result')}` }, - canCreateDatabase () { - if (!this.roles) { - return false - } - return this.roles.includes('create-database') - }, isDatabaseSearch () { return this.type === 'database' } diff --git a/dbrepo-ui/pages/user/authentication.vue b/dbrepo-ui/pages/user/authentication.vue index 03c40e5d82..64d76f7535 100644 --- a/dbrepo-ui/pages/user/authentication.vue +++ b/dbrepo-ui/pages/user/authentication.vue @@ -61,11 +61,7 @@ </template> <script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) +const { loggedIn } = useOidcAuth() </script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue index 1d76677059..be3fe8cf67 100644 --- a/dbrepo-ui/pages/user/index.vue +++ b/dbrepo-ui/pages/user/index.vue @@ -2,9 +2,6 @@ <div /> </template> -<script setup> -const { loggedIn, user, login, logout } = useOidcAuth() -</script> <script> export default { mounted () { diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index 58e265b59f..d8739fbab9 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -123,13 +123,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' import { useCacheStore } from '@/stores/cache.js' @@ -184,8 +177,11 @@ export default { locale () { return this.cacheStore.getLocale }, - canModifyTheme () { - return this.roles.includes('modify-user-theme') + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser }, canModifyInformation () { return this.roles.includes('modify-user-information') @@ -216,7 +212,7 @@ export default { language: this.model.language, } const userService = useUserService() - userService.update(this.userInfo.id, payload) + userService.update(this.cacheUser.uid, payload) .then((user) => { console.info('Updated user information') const toast = useToastInstance() @@ -252,14 +248,14 @@ export default { return } this.model = { - id: this.userInfo.id, - username: this.userInfo.username, - firstname: this.userInfo.given_name, - lastname: this.userInfo.family_name, - orcid: this.userInfo.attributes.orcid, - affiliation: this.userInfo.attributes.affiliation, - theme: this.userInfo.attributes.theme, - language: this.userInfo.attributes.language + id: this.cacheUser.uid, + username: this.cacheUser.username, + firstname: this.cacheUser.given_name, + lastname: this.cacheUser.family_name, + orcid: this.cacheUser.attributes.orcid, + affiliation: this.cacheUser.attributes.affiliation, + theme: this.cacheUser.attributes.theme, + language: this.cacheUser.attributes.language } }, retrieve () { diff --git a/dbrepo-ui/stores/cache.js b/dbrepo-ui/stores/cache.js index 4582dce199..8ba0d2702f 100644 --- a/dbrepo-ui/stores/cache.js +++ b/dbrepo-ui/stores/cache.js @@ -12,6 +12,8 @@ export const useCacheStore = defineStore('cache', { locale: null, ontologies: [], messages: [], + user: null, + roles: [], uploadProgress: null } }, @@ -24,6 +26,8 @@ export const useCacheStore = defineStore('cache', { getLocale: (state) => state.locale, getOntologies: (state) => state.ontologies, getMessages: (state) => state.messages, + getUser: (state) => state.user, + getRoles: (state) => state.roles, getUploadProgress: (state) => state.uploadProgress, }, actions: { @@ -48,6 +52,12 @@ export const useCacheStore = defineStore('cache', { setOntologies(ontologies) { this.ontologies = ontologies }, + setUser(user) { + this.user = user + }, + setRoles(roles) { + this.roles = roles + }, setUploadProgress(uploadProgress) { this.uploadProgress = uploadProgress }, @@ -120,7 +130,6 @@ export const useCacheStore = defineStore('cache', { setRouteTable(databaseId, tableId) { if (!databaseId || !tableId) { this.table = null - console.error('Cannot set route table: missing database id', databaseId, 'or table id', tableId) return } const tableService = useTableService() @@ -130,7 +139,6 @@ export const useCacheStore = defineStore('cache', { setRouteAccess(databaseId, userId) { if (!databaseId || !userId) { this.access = null - console.error('Cannot set route access: missing database id', databaseId, 'or user id', userId) return } const accessService = useAccessService() @@ -140,7 +148,6 @@ export const useCacheStore = defineStore('cache', { setRouteView(databaseId, viewId) { if (!databaseId || !viewId) { this.view = null - console.error('Cannot set route view: database view id', databaseId, 'or view id', viewId) return } const viewService = useViewService() @@ -150,7 +157,6 @@ export const useCacheStore = defineStore('cache', { setRouteSubset(databaseId, subsetId) { if (!databaseId || !subsetId) { this.subset = null - console.error('Cannot set route subset: missing database id', databaseId, 'or subset id', subsetId) return } const subsetService = useQueryService() -- GitLab From a5ac00ad6ecce40fc0441ac9f91f973bcbe818a8 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 26 Jan 2025 00:47:22 +0100 Subject: [PATCH 23/52] WIP on listener Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 42 +++--- .../lib/dbrepo-1.6.2-py3-none-any.whl | Bin 30864 -> 30963 bytes .../lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40677 bytes dbrepo-auth-service/create-event-listener.jar | Bin 0 -> 9338 bytes .../create-event-listener/.gitignore | 30 +++++ .../create-event-listener/pom.xml | 96 ++++++++++++++ .../src/main/java/at/tuwien/Client.java | 53 ++++++++ .../tuwien/CreateEventListenerProvider.java | 124 ++++++++++++++++++ .../CreateEventListenerProviderFactory.java | 36 +++++ .../META-INF/jboss-deployment-structure.xml | 8 ++ ...ycloak.events.EventListenerProviderFactory | 1 + dbrepo-auth-service/dbrepo-realm.json | 18 +-- .../at/tuwien/endpoints/ViewEndpoint.java | 2 +- dbrepo-metadata-service/pom.xml | 2 +- .../src/test/resources/init/dbrepo-realm.json | 4 +- .../main/java/at/tuwien/test/BaseTest.java | 6 +- dbrepo-search-service/Pipfile.lock | 20 +-- dbrepo-search-service/init/Pipfile.lock | 14 +- .../init/lib/dbrepo-1.6.2-py3-none-any.whl | Bin 30864 -> 30963 bytes .../init/lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40677 bytes .../lib/dbrepo-1.6.2-py3-none-any.whl | Bin 30864 -> 30963 bytes dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz | Bin 40094 -> 40677 bytes dbrepo-ui/components/identifier/Select.vue | 7 +- dbrepo-ui/layouts/default.vue | 2 +- .../pages/database/[database_id]/info.vue | 13 +- .../persist/[identifier_id]/index.vue | 17 ++- .../database/[database_id]/persist/index.vue | 20 +-- .../pages/database/[database_id]/settings.vue | 59 +++------ .../[database_id]/subset/[subset_id]/data.vue | 16 ++- .../persist/[identifier_id]/index.vue | 20 ++- .../subset/[subset_id]/persist/index.vue | 17 ++- .../database/[database_id]/subset/index.vue | 12 +- .../[database_id]/table/[table_id]/data.vue | 21 ++- .../[database_id]/table/[table_id]/import.vue | 8 +- .../[database_id]/table/[table_id]/info.vue | 15 +-- .../persist/[identifier_id]/index.vue | 20 ++- .../table/[table_id]/persist/index.vue | 10 +- .../[database_id]/table/[table_id]/schema.vue | 9 +- .../table/[table_id]/settings.vue | 5 +- .../[database_id]/table/create/dataset.vue | 6 + .../database/[database_id]/table/index.vue | 9 +- .../[database_id]/view/[view_id]/data.vue | 5 +- .../[database_id]/view/[view_id]/info.vue | 5 +- .../persist/[identifier_id]/index.vue | 20 ++- .../view/[view_id]/persist/index.vue | 18 ++- .../[database_id]/view/[view_id]/schema.vue | 5 +- .../[database_id]/view/[view_id]/settings.vue | 5 +- .../database/[database_id]/view/create.vue | 6 +- .../database/[database_id]/view/index.vue | 12 +- dbrepo-ui/pages/index.vue | 4 +- dbrepo-ui/pages/user/authentication.vue | 9 +- dbrepo-ui/pages/user/info.vue | 4 +- dbrepo-upload-service/pre-create.sh | 6 +- docker-compose.yml | 3 + 54 files changed, 650 insertions(+), 194 deletions(-) create mode 100644 dbrepo-auth-service/create-event-listener.jar create mode 100644 dbrepo-auth-service/create-event-listener/.gitignore create mode 100644 dbrepo-auth-service/create-event-listener/pom.xml create mode 100644 dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java create mode 100644 dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java create mode 100644 dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java create mode 100644 dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml create mode 100644 dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index f177d904cb..239b3d7c01 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -159,11 +159,11 @@ }, "attrs": { "hashes": [ - "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", - "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308" + "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", + "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a" ], "markers": "python_version >= '3.8'", - "version": "==24.3.0" + "version": "==25.1.0" }, "blinker": { "hashes": [ @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:53a5307f6a3526ee2f8590e3c45efa504a3ea4532c1bfe4926c0c19bf188d141", - "sha256:f9843a5d06f501d66ada06f5a5417f671823af2cf319e36ceefa1bafaaaaa953" + "sha256:6d473f0f340d02b4e9ad5b8e68786a09728101a8b950231b89ebdaf72b6dca21", + "sha256:b36feae061dc0793cf311468956a0a9e99215ce38bc99a1a4e55a5b105f16297" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.3" + "version": "==1.36.6" }, "botocore": { "hashes": [ - "sha256:536ab828e6f90dbb000e3702ac45fd76642113ae2db1b7b1373ad24104e89255", - "sha256:775b835e979da5c96548ed1a0b798101a145aec3cd46541d62e27dda5a94d7f8" + "sha256:4864c53d638da191a34daf3ede3ff1371a3719d952cc0c6bd24ce2836a38dd77", + "sha256:f77bbbb03fb420e260174650fb5c0cc142ec20a96967734eed2b0ef24334ef34" ], "markers": "python_version >= '3.8'", - "version": "==1.36.3" + "version": "==1.36.6" }, "certifi": { "hashes": [ @@ -412,7 +412,7 @@ }, "dbrepo": { "hashes": [ - "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" + "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1230,12 +1230,12 @@ }, "pydantic": { "hashes": [ - "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff", - "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53" + "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", + "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.10.5" + "version": "==2.10.6" }, "pydantic-core": { "hashes": [ @@ -1427,11 +1427,11 @@ }, "referencing": { "hashes": [ - "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", - "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade" + "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", + "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" ], "markers": "python_version >= '3.9'", - "version": "==0.36.1" + "version": "==0.36.2" }, "requests": { "hashes": [ @@ -1553,11 +1553,11 @@ }, "s3transfer": { "hashes": [ - "sha256:3f25c900a367c8b7f7d8f9c34edc87e300bde424f779dc9f0a8ae4f9df9264f6", - "sha256:8fa0aa48177be1f3425176dfe1ab85dcd3d962df603c3dbfc585e6bf857ef0ff" + "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f", + "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc" ], "markers": "python_version >= '3.8'", - "version": "==0.11.1" + "version": "==0.11.2" }, "setuptools": { "hashes": [ @@ -1612,7 +1612,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "werkzeug": { @@ -2236,7 +2236,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "wrapt": { diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.2-py3-none-any.whl index 24256263e2fb3156ac0eea01079116e4b40e36fd..256d325e8bdbdacd8c967d852c98e39d8d3b9eb9 100644 GIT binary patch delta 16793 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 delta 16703 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 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.2.tar.gz index 2ae1ea50b1610050f5bd5746f7e9596b1c483c9d..ad4d6f9c5590836360d1a919f4be84b5cc5f9ade 100644 GIT binary patch literal 40677 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 H0V@LlC1iD+ literal 40094 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 Hz{&ssdmpy^ diff --git a/dbrepo-auth-service/create-event-listener.jar b/dbrepo-auth-service/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..fd07f62a743ee039a934e33de6d18ae9e28ac653 GIT binary patch literal 9338 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 MjfH`sPaebr0O2a{UjP6A literal 0 HcmV?d00001 diff --git a/dbrepo-auth-service/create-event-listener/.gitignore b/dbrepo-auth-service/create-event-listener/.gitignore new file mode 100644 index 0000000000..5d6e1ae3b1 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/.gitignore @@ -0,0 +1,30 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ +target/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/dbrepo-auth-service/create-event-listener/pom.xml b/dbrepo-auth-service/create-event-listener/pom.xml new file mode 100644 index 0000000000..47abc95613 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/pom.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-parent</artifactId> + <version>24.0.5</version> + </parent> + + <groupId>at.tuwien</groupId> + <artifactId>create-event-listener</artifactId> + <name>dbrepo-auth-service</name> + <version>24.0.5</version> + + <description>Create event listener</description> + + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> + <developers> + <developer> + <name>Martin Weise</name> + <email>martin.weise@tuwien.ac.at</email> + <organization>TU Wien</organization> + </developer> + </developers> + + <properties> + <java.version>17</java.version> + <maven.version>3.9.8</maven.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + <maven.compiler.release>${java.version}</maven.compiler.release> + <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-server-spi</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-server-spi-private</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-services</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-saml-core-public</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.jboss.logging</groupId> + <artifactId>jboss-logging</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.jboss.spec.javax.ws.rs</groupId> + <artifactId>jboss-jaxrs-api_2.1_spec</artifactId> + </dependency> + </dependencies> + + <build> + <finalName>create-event-listener</finalName> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${maven-compiler-plugin.version}</version> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + <plugin> + <groupId>org.wildfly.plugins</groupId> + <artifactId>wildfly-maven-plugin</artifactId> + <configuration> + <skip>false</skip> + </configuration> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java new file mode 100644 index 0000000000..acba01a663 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java @@ -0,0 +1,53 @@ +package at.tuwien; + +import org.jboss.logging.Logger; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URL; + +public class Client { + private static final Logger log = Logger.getLogger(Client.class); + private static final String WEBHOOK_URL = "WEBHOOK_URL"; + + public static void postService(String data) throws IOException { + try { + final String urlString = System.getenv(WEBHOOK_URL); + log.debugf("WEBHOOK_URL: %s", urlString); + + if (urlString == null || urlString.isEmpty()) { + throw new IllegalArgumentException("Environment variable WEBHOOK_URL is not set or is empty."); + } + + URL url = URI.create(urlString).toURL(); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setDoOutput(true); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json; utf-8"); + + OutputStream os = conn.getOutputStream(); + os.write(data.getBytes()); + os.flush(); + + final int responseCode = conn.getResponseCode(); + if (responseCode != HttpURLConnection.HTTP_CREATED && responseCode != HttpURLConnection.HTTP_OK) { + throw new RuntimeException("Failed : HTTP error code : " + responseCode); + } + + final BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String output; + log.debugf("Output from Server .... \n"); + while ((output = br.readLine()) != null) { + System.out.println(output); + log.debugf("Input from Server: %s", output); + } + conn.disconnect(); + } catch (IOException e) { + throw new IOException("Failed to post service: " + e.getMessage(), e); + } + } +} diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java new file mode 100644 index 0000000000..8ff079f8c3 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java @@ -0,0 +1,124 @@ +package at.tuwien; + +import org.jboss.logging.Logger; +import org.keycloak.events.Event; +import org.keycloak.events.EventListenerProvider; +import org.keycloak.events.EventType; +import org.keycloak.events.admin.AdminEvent; +import org.keycloak.events.admin.OperationType; +import org.keycloak.events.admin.ResourceType; +import org.keycloak.models.KeycloakSession; +import org.keycloak.models.RealmModel; +import org.keycloak.models.RealmProvider; +import org.keycloak.models.UserModel; + +import java.util.StringJoiner; + +public class CreateEventListenerProvider implements EventListenerProvider { + + private static final Logger log = Logger.getLogger(CreateEventListenerProvider.class); + + private final KeycloakSession session; + private final RealmProvider model; + + public CreateEventListenerProvider(KeycloakSession session) { + this.session = session; + this.model = session.realms(); + } + + @Override + public void onEvent(Event event) { + + log.debugf("New %s Event", event.getType()); + log.debugf("onEvent-> %s", toString(event)); + + if (EventType.REGISTER.equals(event.getType())) { + + event.getDetails().forEach((key, value) -> log.debugf("%s : %s", key, value)); + + RealmModel realm = this.model.getRealm(event.getRealmId()); + UserModel user = this.session.users().getUserById(realm, event.getUserId()); + sendUserData(user); + } + + } + + @Override + public void onEvent(AdminEvent adminEvent, boolean b) { + log.debug("onEvent(AdminEvent)"); + log.debugf("Resource path: %s", adminEvent.getResourcePath()); + log.debugf("Resource type: %s", adminEvent.getResourceType()); + log.debugf("Operation type: %s", adminEvent.getOperationType()); + log.debugf("AdminEvent.toString(): %s", toString(adminEvent)); + if (ResourceType.USER.equals(adminEvent.getResourceType()) + && OperationType.CREATE.equals(adminEvent.getOperationType())) { + RealmModel realm = this.model.getRealm(adminEvent.getRealmId()); + UserModel user = this.session.users().getUserById(realm, adminEvent.getResourcePath().substring(6)); + + sendUserData(user); + } + } + + private void sendUserData(UserModel user) { + try { + Client.postService("{\"ldap\":\"" + user.getFirstAttribute("LDAP_ID") + "\", \"id\":\"" + user.getId() + "\",\"username\":\"" + user.getUsername() + "\"}"); + log.debug("A new user has been created and post API"); + } catch (Exception e) { + log.errorf("Failed to call API: %s", e); + } + } + + @Override + public void close() { + } + + private String toString(Event event) { + final StringJoiner joiner = new StringJoiner(", "); + joiner.add("type=" + event.getType()) + .add("realmId=" + event.getRealmId()) + .add("clientId=" + event.getClientId()) + .add("userId=" + event.getUserId()) + .add("ipAddress=" + event.getIpAddress()); + if (event.getError() != null) { + joiner.add("error=" + event.getError()); + } + if (event.getDetails() != null) { + event.getDetails().forEach((key, value) -> { + if (value == null || !value.contains(" ")) { + joiner.add(key + "=" + value); + } else { + joiner.add(key + "='" + value + "'"); + } + }); + } + return joiner.toString(); + } + + private String toString(AdminEvent event) { + RealmModel realm = this.model.getRealm(event.getRealmId()); + UserModel newRegisteredUser = this.session.users().getUserById(realm, event.getAuthDetails().getUserId()); + + StringJoiner joiner = new StringJoiner(", "); + + joiner.add("operationType=" + event.getOperationType()) + .add("realmId=" + event.getAuthDetails().getRealmId()) + .add("clientId=" + event.getAuthDetails().getClientId()) + .add("userId=" + event.getAuthDetails().getUserId()); + + if (newRegisteredUser != null) { + joiner.add("email=" + newRegisteredUser.getEmail()) + .add("username=" + newRegisteredUser.getUsername()) + .add("firstName=" + newRegisteredUser.getFirstName()) + .add("lastName=" + newRegisteredUser.getLastName()); + } + + joiner.add("ipAddress=" + event.getAuthDetails().getIpAddress()) + .add("resourcePath=" + event.getResourcePath()); + + if (event.getError() != null) { + joiner.add("error=" + event.getError()); + } + + return joiner.toString(); + } +} diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java new file mode 100644 index 0000000000..61477ffa33 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java @@ -0,0 +1,36 @@ +package at.tuwien; + +import org.keycloak.Config; +import org.keycloak.events.EventListenerProvider; +import org.keycloak.events.EventListenerProviderFactory; +import org.keycloak.models.KeycloakSession; +import org.keycloak.models.KeycloakSessionFactory; + +public class CreateEventListenerProviderFactory implements EventListenerProviderFactory { + + @Override + public EventListenerProvider create(KeycloakSession keycloakSession) { + return new CreateEventListenerProvider(keycloakSession); + } + + @Override + public void init(Config.Scope scope) { + + } + + @Override + public void postInit(KeycloakSessionFactory keycloakSessionFactory) { + + } + + @Override + public void close() { + + } + + @Override + public String getId() { + return "create-event-listener"; + } + +} diff --git a/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml b/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml new file mode 100644 index 0000000000..c0330ba082 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jboss-deployment-structure> + <deployment> + <dependencies> + <module name="org.keycloak.keycloak-services" /> + </dependencies> + </deployment> +</jboss-deployment-structure> \ No newline at end of file diff --git a/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory b/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory new file mode 100644 index 0000000000..df3c5521f0 --- /dev/null +++ b/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory @@ -0,0 +1 @@ +at.tuwien.CreateEventListenerProviderFactory \ No newline at end of file diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index cf3fcadb2f..4dbc95d099 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -2175,7 +2175,7 @@ "adminTheme" : "", "emailTheme" : "", "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], + "eventsListeners" : [ "create-event-listener", "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], "adminEventsEnabled" : false, "adminEventsDetailsEnabled" : false, @@ -2223,7 +2223,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "saml-user-attribute-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "oidc-full-name-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2249,7 +2249,7 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-role-list-mapper", "oidc-full-name-mapper" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2265,8 +2265,8 @@ "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "true" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } }, { @@ -2322,8 +2322,8 @@ "membership.ldap.attribute" : [ "member" ], "memberof.ldap.attribute" : [ "memberOf" ], "group.object.classes" : [ "groupOfNames" ], - "drop.non.existing.groups.during.sync" : [ "false" ], - "groups.path" : [ "/" ] + "groups.path" : [ "/" ], + "drop.non.existing.groups.during.sync" : [ "false" ] } }, { "id" : "b6ff3285-35af-4e86-8bb4-d94b8e0d70bb", @@ -2354,8 +2354,8 @@ } ] }, "config" : { - "fullSyncPeriod" : [ "-1" ], "pagination" : [ "false" ], + "fullSyncPeriod" : [ "-1" ], "startTls" : [ "false" ], "connectionPooling" : [ "true" ], "usersDn" : [ "ou=users,dc=dbrepo,dc=at" ], @@ -2363,15 +2363,15 @@ "useKerberosForPasswordAuthentication" : [ "false" ], "importEnabled" : [ "true" ], "enabled" : [ "true" ], - "changedSyncPeriod" : [ "-1" ], "bindCredential" : [ "admin" ], "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], + "changedSyncPeriod" : [ "-1" ], "usernameLDAPAttribute" : [ "uid" ], "lastSync" : [ "1719252666" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], - "allowKerberosAuthentication" : [ "false" ], "connectionUrl" : [ "ldap://identity-service:1389" ], + "allowKerberosAuthentication" : [ "false" ], "syncRegistrations" : [ "true" ], "authType" : [ "simple" ], "useTruststoreSpi" : [ "always" ], 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 d4eccd0772..25dfd50dd4 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 @@ -214,7 +214,7 @@ public class ViewEndpoint extends RestEndpoint { @RequestMapping(value = "/{viewId}/data", method = {RequestMethod.GET, RequestMethod.HEAD}) @Observed(name = "dbrepo_view_data") @Operation(summary = "Get view data", - description = "Gets data from a view of a database. For private databases, the user needs at least *READ* access to the associated database. Requires role `view-database-view-data`.", + description = "Gets data from a view of a database. For private databases, the user needs at least *READ* access to the associated database.", security = {@SecurityRequirement(name = "basicAuth"), @SecurityRequirement(name = "bearerAuth")}) @ApiResponses(value = { @ApiResponse(responseCode = "200", diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 04af8a795f..e08d81603d 100644 --- a/dbrepo-metadata-service/pom.xml +++ b/dbrepo-metadata-service/pom.xml @@ -27,7 +27,7 @@ <module>report</module> </modules> - <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/</url> + <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> <developers> <developer> <name>Martin Weise</name> diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json b/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json index 7ee28b34a4..56f2003e96 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json @@ -73,7 +73,7 @@ "description" : "${default-system-roles}", "composite" : true, "composites" : { - "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-database-view-data", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] + "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", @@ -396,7 +396,7 @@ "description" : "${default-query-handling}", "composite" : true, "composites" : { - "realm" : [ "delete-database-view", "export-query-data", "execute-query", "delete-table-data", "export-table-data", "list-queries", "find-query", "list-database-views", "persist-query", "view-database-view-data", "view-table-data", "re-execute-query", "view-table-history", "create-database-view", "find-database-view", "insert-table-data" ] + "realm" : [ "delete-database-view", "export-query-data", "execute-query", "delete-table-data", "export-table-data", "list-queries", "find-query", "list-database-views", "persist-query", "view-table-data", "re-execute-query", "view-table-history", "create-database-view", "find-database-view", "insert-table-data" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", 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 f4b89de585..5c60849dc1 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 @@ -186,9 +186,9 @@ public abstract class BaseTest { "modify-identifier-metadata", "update-foreign-identifier", "create-foreign-identifier"}; public final static String[] DEFAULT_QUERY_HANDLING = new String[]{"default-query-handling", "view-table-data", - "execute-query", "view-table-history", "list-database-views", "view-database-view-data", - "export-query-data", "create-database-view", "delete-database-view", "delete-table-data", - "export-table-data", "persist-query", "re-execute-query", "insert-table-data", "find-database-view"}; + "execute-query", "view-table-history", "list-database-views", "export-query-data", "create-database-view", + "delete-database-view", "delete-table-data", "export-table-data", "persist-query", "re-execute-query", + "insert-table-data", "find-database-view"}; public final static String[] ESCALATED_QUERY_HANDLING = new String[]{"escalated-query-handling"}; diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index d75a0069a1..ded9023e43 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -124,11 +124,11 @@ }, "attrs": { "hashes": [ - "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", - "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308" + "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", + "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a" ], "markers": "python_version >= '3.8'", - "version": "==24.3.0" + "version": "==25.1.0" }, "blinker": { "hashes": [ @@ -360,7 +360,7 @@ }, "dbrepo": { "hashes": [ - "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" + "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -1099,11 +1099,11 @@ }, "pydantic": { "hashes": [ - "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff", - "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53" + "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", + "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236" ], "markers": "python_version >= '3.8'", - "version": "==2.10.5" + "version": "==2.10.6" }, "pydantic-core": { "hashes": [ @@ -1330,11 +1330,11 @@ }, "referencing": { "hashes": [ - "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", - "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade" + "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", + "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" ], "markers": "python_version >= '3.9'", - "version": "==0.36.1" + "version": "==0.36.2" }, "requests": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index e4a2e7d718..ef08434670 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -124,11 +124,11 @@ }, "attrs": { "hashes": [ - "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", - "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308" + "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", + "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a" ], "markers": "python_version >= '3.8'", - "version": "==24.3.0" + "version": "==25.1.0" }, "blinker": { "hashes": [ @@ -254,7 +254,7 @@ }, "dbrepo": { "hashes": [ - "sha256:a41ca60353510cbecf8fb647cf2483acb100258743794a16bc8ad6f8e9ea4481" + "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" ], "path": "./lib/dbrepo-1.6.2.tar.gz" }, @@ -808,11 +808,11 @@ }, "pydantic": { "hashes": [ - "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff", - "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53" + "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", + "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236" ], "markers": "python_version >= '3.8'", - "version": "==2.10.5" + "version": "==2.10.6" }, "pydantic-core": { "hashes": [ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl index 24256263e2fb3156ac0eea01079116e4b40e36fd..256d325e8bdbdacd8c967d852c98e39d8d3b9eb9 100644 GIT binary patch delta 16793 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 delta 16703 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz index 2ae1ea50b1610050f5bd5746f7e9596b1c483c9d..ad4d6f9c5590836360d1a919f4be84b5cc5f9ade 100644 GIT binary patch literal 40677 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 H0V@LlC1iD+ literal 40094 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 Hz{&ssdmpy^ diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl index 24256263e2fb3156ac0eea01079116e4b40e36fd..256d325e8bdbdacd8c967d852c98e39d8d3b9eb9 100644 GIT binary patch delta 16793 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 delta 16703 zcmezTk#WLD#tn|_yd~|1QM~g+UnglYFmz7#W0$S}TYlT3X#ex|319Ecdm1)z^X=Eu z<8RhR9>489+xJ`2``p`mZQ8{YyT!Y%Oq#OSF8<&5BsO^#hY3oW6Q{`j-0LF5d5)*? z;F$yiV~%O7El$oc*te5&(d=}_-;&E8MOW$XPdhltM%Z5H)9YDFB7fz~JK~-G)OFu< zt3UU&^*`_Px4Bh6>+YWKdo{Sz9({ZIw`<Rry`gTC($}=s&z%rz^EXrU*t~i%HkDH@ z$zNw(yAjPAY~Ss=d%yl2mHlT=XmLOCxb$`26764;=Nz@O^q*ug)53nKN~gxs=lfZ| zr2aVid8v5It*P4!m;L?s*|_~*t-Sj6#`lvu;{P7xeqOjqWnaZ9mOsbqO+DY~Z?X`4 zalZaELw!Zz{IrynjP*OuiLvZD+g$!&yT-Al(*v{O?ga_$eLcbFMf5|D4`SjfJ9*Pw z{+Eim3(oYkI6v>>!+CMlnFfo?pC3G1(YN95;`PVkteQ94`ORH_?1JU-^ZWm??Q4HB zt>w)j`@`>5J%iu3ZL^+bQE^_hAbx-S-+y;m;t&7v-rQ2*J$=(vle2#+=E~Yvf6Ec8 z%H%pcd1Is9QFr&nf^~6v9YyC8do{P7(}~l&F8D2=<nbNWn}-(GKHKx_o$XV`=YM}5 zUHbXc@$13QQze4<SlgEDooi*RU$m}s@}x5#51EwZF`rkwm^<OfMInI=|Mq{K#9(DH z*CM69%J}Frl~3V?4zm^X912_oW9II!{rY(K^?ZHxbF(&2zW88y_vi2V@&5|^98)*1 z{Jj68RA)!N=Oh-phZ2q7B%hwwi9D~-ze447dGO0AB7XB9eqR2gLFLnwQknOxm6fmd z9FBb08vI;zX7%d{+hlY%<&;(x6+KRUa&CA1JfnS*D+}t6?v^Y#n##KF*Oe~5Yq4{F z91DI_bTU|T=33#dm+4ll8=k*(nSc4<qBned6<Yd**{*j^zjOKDLT8zyTl_tQ&b;3^ zQC%%y!d>f+cXsw)?=1fL?9r1)k9t$iN_uWe;L~vlO803!c4a5?oYx`|TB;BKR7%}( zIdVNpPCNGdN2AEe{lWFU$)6P$G{4*tQscss|D-nK&WYV8cPLgpvg&g#l+FK<@-8Np zHE=>~Y;R-0=^Epg7LN|g95dFBIg(kHQhCB{@zR;SN#4fIbuZQ=KmS>u@cD9j<>~^v zshdwP{gr;ovbM^3)5pNXRe_z#v*cd~JP}#bp!Do<pj|Sr#-q2Z7X10~ss7QU=jHF? z12q;^@~O_4ZeLMY_wDlU&x@1QJtk&;-8aEx!@AXr9GHq;-f+4u=c&=+H%)8Co9-M1 zmhJxQuA3*n-T70{Ao4-$!T6UZ9xwJRR+3OP^innCdDm>#G5_<rQu!n1RTF(LtTy3& z$hhF)=ZhN;T`ce19yPJ0aEtTN`$}m#^==PU75}$6DcP3RNgh7`n7`@oi{5Gj@tAMf zjyChX&IcdoPm8qd4hl6=4p-1qnO%22g*Q0tSLl;C#fD{vmRN+c+p)h0*nL9sb&V&x zEXToUtMwnPkN?`C8aF{`wxz+m{(Z~C7-U7XWHaYCGKo)_`|J_F{DIewPJaT=E!txL z(!2g_e@|oeg6sD3Qwxs$@!&bh{F`ZU_%#vsp2o{+Y|{IR-kCq_cvzPZ&y$fe;gz#+ z^REN@LiRQY#POfHW4NJMZgqd0(NpIC%b0Y|MKRuYRg;qsKh&3WbDoy(=F5dyQ-rmo zc09UW;`#Q;hg0$T;aqVk*{+VAfh*2GF8ea)L%iF8`j>@5e?)(lu@qO^{pzdW^!#DL z5i#F=>RdzT&C~j3^dC!-`LTI&HXHjr$JeE|xjBqx?_qf_Q+v$+%ktIj7ZynImb9N- z7BesFf&KGW$7S^kY>U?HiE-LgD)dySyIykh%h#LuMb_#4HFu2B`=g$+b+y6%yUW7= z|C@Ad;%P|_uY~FK^;{?4ZtCxh;eF7)h;7BJ-M>!9wi!)X&9pi)X{%F!)Bo$SY&}!> z`!}3@@cwS;GuD#W7nc9OepZ#<^5d6&N$ZmbN<k6*eCEvuwc6Pas2thKU^e6Ii%;!c z_x!KKu!wn{n4@)^b@w6Pq92=Qou72^h4_^FT|3lv?pz;~XnIFg#`8!0@tT!i0%QGr ze49#6$9(!Wjm6W#l;f0Ul8;ww(%O$R795Ct%y8!VLN<;msab1|_|Lsw%%bFSXYTY% z51ClL#IC<t<hUn<aoWC9?h%<hm)XSUX0QjIe&hCDS@S^G2c21a)Gqv4sTA_ttDgD6 z%p6|jIEnj4Dy0s`uO}U2xS^1AkG1}Qh>NL#XpCue$waHqnvZ9Ac};(C>XYN-O}n(N z@|p$rpIX|i_TBtutol7I3&s+44aYta&U3$->{OQi=+e7)EGTX91=rsX5>+_lo*qhk z)WagUxTdYn?%EsX#?)D9aohaXr)_zj82j;Tcm9{}yZioDtF&%sf6^9vsFZK|!8?6B z>X&MB%;%bH$graI*LVH68$OA(MZt4tMjs5xZ{S#XY--EQiT8~Tr)eMm-fvd3i($iK z=Hdg~hkx|_FfFY8yngH18fm9hb&pKvGB?aPb>M@X&c3gwB#WKx&;Bgf_F<9qr?-W+ zhyI<E$#<I(yYEKk?9<*;!uP&5@GuQ*77m;Huat9heP5r}WV4CP(-VRkc(fE77<D`3 zty3(G8{MY96uD&2o&C{6`QA5k`$dz_O76F@w*LR|)1RvwdwZ959y!Z<*+*!4VB3Pw zEjMMV&d*c)E9Jtrboz_y+Le#IH}OYh7QM61TXJ^yrH$4X^Ir>nT~>JZMac6-%U4`F zGUr9`+Dr@S)!V*_Nx2-}-72<H`G{$ZGuNlxu5WaiMeb`%&gU1e=X9Ag_12N4=lBnA zVZHMB=ZOM`o;ATo^X#|<@*m&1vTVxVyDJ`Sys+KsfHDLBl1lfzoR{8+-#GABkMqQz z=Dpkh377wLa+wxo&2`|wKY?vG)>z&0@a^iJRH1FQ(?_cHz!afNTGAWsm)6hOo$t0K z-tAI#aPY6a8QOoR%>BLb;_u_Z^@=>}!@f`1a$-Vf>9Qv_9W`b=bI+U*KlkHqefW9T zCz~`*aK*T-zxv3i;@VG<qvb*Dmm5E2Y_H(^Q~q}8x0_ls1sL8i3I`d<@e7|icvDvR zkO9xBmX&vyo7aao&cFT1;HB1$32O@qZsa#b-#OhT+8@7CwJLe%x;1IGPVP}(e!Q!z z_qib;m=PGvHs9t$-~T=9g&BV&a64~V8K|+eSUUfB_x;-&UN(od=E|*C-oLPQd4oin z(s?1KMJHyQE)qU`WA6+LmPhBlRQ45}wYzy<z-rA+<)Zcp+4)vSa*9qopCf-Q<Zq1d zgz6H;u=3RhSd#6I-DjV7aQ*C$d8!Mo;;tCmn|0S;H!i=f`#Sf*GKE8(ku3R~)+TKn zuA;JcCiHEpx1aGRMdwZN+(%1)rmT5>+}v3+H1EcjF8>to<nU>BJN^_u-BhU_#&+1i zkx|EdTJ(vZrvl!|cI(IR?fg+6+kWc$Z4E<_BHLXd62Zk+FHH7!J$%!zr(|iC>7^~4 z>wUjHlly&tfBg@0X-%<*;eP&kXQUQwRO5{Q-`&d+taJ6C|2*xW)!F_t+z!{hSw3aL z5&it_ix(YycOc^TEy?+N?dx}56yF~AQ>@!}%|3%45mNaJ#qX}!EB&!pP9-ypCxFxT zbg1^(do^+`j9g5zE_2Q_B{g{e)cT-a)4AoIm%(=7kGieAPSKq8*}U~>-1^0rT=($R zZn-Yd8o%L3#s8RR{enF_{TH6ev>rUmRC43Q_euUAI>qN5&I@|9^pjuR!Ul!+C7sSO zMFy)PB`k#0I|Xz!4+XjLG;S<^6r0MOdHux(TdVKW94q#}jLcnd_4rijE&m<$&oFP8 z<gHkEE+BDFb^W(rp(ii@&Z&?6zVFBVW9tuE?e=y*l(qI&m6yv#?!<e%J@#rm7k(T* z`Qp+4onMNMin})L{1naWGR@x5GUj9IqD|XY*E~OT_UM1>`+II*O1yOCOiIk9^)pvK z2nl;@`y+eH^sBwc+qN~ZWuEA@JSwq6s5Wyemx;Nb@6$PweNz~xY<+iCkjo``Zgc&) z4X=9CAI+3-V4cTt?$%trEh~1(AI;IVFrT-fFYwuC@g+GtN0uGBdGpbp1yN>~H_M;? z=DX$N@7rtdhpN=@S}b|iCL1ERD56KgQrP@e&Wq;(THD`#PCNYmu6NY8()*h>H0Jl5 zI9K-ZbD(6Ac6`vmT=$>SxfUJ?Y}cmL25jA|FJB+}_Q<5Uf6dlJZsSzBShjIS-qG9Y z{8{Gj-iqy&xvJ~awCt4NqRXkzx7@ciKfq&N?{a5~=JEKCuS<{YXbH3oO<Dc0b%#P~ zyyR|$!(T7nn8`8Sd6T$IMXRN`r99iBkY3Aa=`&_;p7}Y#dg@o7bJZ+8>?il$E|N>v z?%<tv{=<^QHT9K-zusDY`}^X@Mq|P4Oh^3BatKUbaf<DP<<cu`3GZZinSbOQX<ZfJ zaB&%XbfUZ8l-DZ%TsD4v<aV=V_4<>QpBC`EyC-GeG`o6B?UtAKHo7lh%AY%R|2glw zYyNtlOq%oV&n~rWRVUfWFTGx7>EyBV?KWXqCsY<0(HNLHJ#Ou_lKKT{QA<~SdaHlS zZm#Z$OPg)OoTqJ`q2oKJnf=(lL#Op`J*nBpyY^Vwvzu&g#ebjbn@*G!G3T7p*SKxF zqf`vLqW(%X0pGwg8;x=$-!fD-i>B>X<7*bYXUwp0Z&^!}m#_N47unXTYbK_oYX`c` zF8h+Z)>{7IK9AbHc_KU4I9^;||AA%htS=MKooSg;adOS_yVHDke7n$Q-sHWV!y;jl zuZR5_`B$4H7(zeoc*XDfXV<6b-4~dD7(Z>zj(cIVqLh7_|LGamV!nTqzP{>qjBNgY zk%DK3RxUgmF0?SKV?)-H)&LLJIgKtCCjGDKl3ttJb?No4Ew4<<wk*2bv|`Q#Ho+xx z>u=2~UF@-wG0W<oD7Q$~`cLZ*UfQj=Q*joX-OS39Q!hEiG)Y}s6Kc72waSjAu|>{* zw2iN8>`z`I>$$_|QHku6AKJ-bAN#kNIbOMWslq?+#h13MnpLb)7aw+}2|V#l%U<*P zjp*8h7n?LaI1VMnuDIn>ygNlLC;O+1-=D8m#g91ZS3RxRo=}|blrDa$q;ciC%38Av zhqlOS>)4w1JTp1`=y1yq&HA?E7rd9;RO-BL&K;)pbg}&TgvP0Bl)ou0pIQFc=DU4Z z<hQPd!!`Ab6{U6dD#mO!J12S0;NQbtxtt3&FZuZCO`N6K+{(B7hxaCxOzNHd_4#MD zoadJ7+XMK#`K#)++NZiZ%-o=(-*olqdc(k`*|RUmi#F~qYPxy+%*W;u(W>t*X^|gS zxt8oYvv<;|>MN%r9)EhT+@Ptq_=(BZ3-{RWyU(w6ULntDID2~P>BTi>bvIux-kx^v z{_D!Zhy6mlk&Vlbf7~;faeEAVjIW39B0cqn)3HDFuP<Ep<5Jzn1)lZR;eQuuCx!pr z$ZFL+qgeNPS+gR4yLMc1S;Ow9uL}-7`*gl@f|cI?H#IM}cFTUBmaU(<eb4=)(>LC} zfBu!X<F40Fuirj<va#%qYvs*6(TllvoDZj%?7TX;+Q$2v0C(OS&(8U~+M1(!gQu%) zd{-QrlX^5VcGKyIbpJ~kcc#9s)UW?@I(~_8WM7$o_2K@zFQctb+}meZGwJgOftBg@ zN9qjr{}0yNniF^LZe@0K`y2iTYoC6+BzEvt`G<W|TmCuy@V>||bs~Rhmc7l&uNr5X ze@R=1&fofSwp-XFxfAiJACHvp{JtgQjR@D`ts61~oaK-CgkF-n;_T$a7k2QV){A>u z4)tNL75?|V{9SI5&V2u=Ont!ptsWLD@|k~L4!m!z@U!zpaoY9m{SDhz6-fA$d0fwR z5M3ElRle|w_m#~j=Gw1#DZ46D=1AO>64PahAzKn238%c9`|{Pcosv(jc3eDt;E&Cw zrhC6?XYCXIbJf65qW5=Fn!!iQ8J&t3_!Ht*toVL-OTB=|+vVX4JYwa=S`OU0P?ezg zcN&A1NZr!Y^{U%eKHKKr`MyZ3{q@ol%zs<oTEsKGGT!qs@sPjn5-*mnL)pAfz6#y2 z^Gx^LVATC<;o4?}Zx_Q8&ua)wbu0|ox8bZ*Ge@s{MNapQfc3jo&Tm})(S5JFY2TrV zXY_9<=B#7rc)QK4KC0P0XY;M*q8pbMB|4lt_$T$x_K!6iv}SMIcz5^X4&^Clv$h28 z-n)9*M3Ylf%BH>-R@997w=z>L{O7&O8NA>8|0|lE5UXv!Ua;hE>opCIYR+X3f6UmD z9g|f3I)$~bZnNrIu2p`YMYu#(UQhKq9@fbvbF|^1YrqtSl^&~QiZX=jALpzOPH#PU zyD{8%N=hPw`E0e{Y5qLHoC`MIlG&Elb0};!*ReMt>zp%{k45bDC>5QXvLN@A5of|- zQR9_yGatwLc7^DaMurL>y`;A$?c(<HuJ5;b-=1T#^Ic_%Qpd$RllkNHdaENla*mlT ziLk8{IJ0@XX!y3Rr=n#!ug|Z{Sycae{TA<B;jP<O>9KZgnWXpX$*sW9>F;>1Nm;cU zncRFKptox7C+8{giU<A%+4NsMd9C{7`r~h;oc-?IGri^~xiNFgU$%{!-hsbM9{)&G z`Tpj|#fje*-0b40zL;xu>+g+II*U8w?{D*K;oHZY8@AiS@_OdiQ_lI9QZijjUtDtH zTvV_B<w=gl#0SL-3c9&AKAFeu(z&%_)z4$AI5;DZZD;A59&%b?h5r%l^oL8k`+eT) zdFTaot(~lz9UXFdHrJfmK&kD?qFbA*?(~PNf1Uq6+U3styjzZ*AC;CUK3)GMIhHeV zn{Q^^FRKUFt}pUm$>8(;a*xjZ`;%0b8hhoO{G8OktzM&VZBo$p3xcK-j;F0>(x^V0 zn(>}z`kC9C!|xo}JvTgt(QHHYpRQX`k#nY~zs~;0wL<SxxKdU|?cYbPXPX}U^m+1P zg8=_hos)h$_Vk7;%zkktZ;xTRiQeZ#iL*Dl6Mo#Nsyyp-O++eZYs-t@cASUTOf0VR zw-u57aoXP^zm9uN{X@G0|JT;O=nqsgH#JylAv}4PIrrtJo&K>4l5?LhXFf~akgz6r z%iTK*vsN!FT60)a^Te?mGQU2m-&$q!Liy;N)mzTTte%j6TIrE`!IIEUj;qC~-*RSO z<ay$tc2lcm@zpSeO%BzI16vK>nCO@aK3ry|zHs^KM;ZpKo6hB&5mwt?fA7{LmrWjj zm^^ZS9s0Ysb7_T0(1Rz9<sa^~$ub0glPzVay%c}Ju`gHK(Rj+7hm|+By80?Eel_u= z+~SF!j4H(htj{Dj8BevHac%vjvI$9#s+R|yDLD3$y_VVfmRDD4T)~p`!sDBDs)Z|9 zYjR!Yv88zE+xx4o6{+=7)0}trf=>PFlIEN#>b8c8!Oy<G*RB>`p<#3AzSO+L_V6o} zFA9u8-cDY4rS8w7%R1-lPcN8PTG4nr$!db?iMl-T4i=|#eP5<>=1NbjxEp)uX|g`| zwf&b9uX|2kadGM#Z<!kL|MwpX1|F8@-@26XqEY#zmyha#)vJx8xPHu1@vBR&weDV{ zRquYXHC*6f16S*<Rhze;Tb?5F*4-qY)3e~$xpjRtug)A>Guz`N^Uqn9pI)(ixw=i_ zcgZu`FzKcLw05qWsPyOwpPSeGhws<U<?J`Vup#{H+J|rS_iXS#yLO?8iTVEa;9bi< z{I0!pT~+0+OMLc*_P#$Zj6s55GOdn;7X-=opQ}n_tIs|evG%=i!M-WKPNb&1kXu={ zSg`uMcZ~nC*9Ohpjz_*QaX;T=<q#L*(kRM!aPK6G4PMi&_uUIFS+HUH?TN8YlC!vb z+1gHC_Iq%xmn~=NX^|(_ryTn6v{@@Cyh27zT5!X)LN%u6tHetmo>K5l)KRLpv11Z& z_bHQ+58uYJ!`-KTjfU=Qw_}DY^nPbVzX@gAyU<{^)2|PqPHBaYmM0(Hc`@<F>^blD zw(Zl5sOG9RHpq*ApE>zsvI6TtM&bUKzpm+ZKf74Y#k=anibVF@Eo{%+tvfCUzj&Q@ zd7ocL-1L{4I#usERTjVbD_7wu_{Q1J>*gJ41=*u*+j7miII~}*OsPM$v~OZ((9Ua` zcS}w-sd~J5%EfBcI6wHKt8Vq3jJZ=fyQ;s6dC7{uHkie`Kg{Umxpsy7r`7jQygBQo zpTwkDR~zQP30nPMWbWQrQPE2!a;JB71Sv-DwF~>n!K$%eJ}kO2$m{)SUD4e2nQm*v zV%`?_e5;tbSjeKMcahw;3nzRY*6)=%WA=8%zGEd3*ZzMwS#kd@*S91liG7M0Ijc@b zs)|m#*F9UTCfXpF`>Jq+YKJmg%qqoeMqCD;&#ZW+dv%BLu`Ip(d$sN#*E-8bGJC|V zOH%mwW5M&eZ@<_`zd1MM&o#$5Hy-g7n+z8eJlsERVMy$|m7D&_I6aOu_`cwa*M@fy z_3uTe9Ap!cdUZ%wbZ%<{<KxyDIXMeIJo{3+PQm1pmfweit1Fe9uFu{7G%O`FCdJF) zc#1;RjY5~jCpnaKANQQlu9v&$&Hd<Sz#?|1J1>vE-)pdzMTSjqr;^}XbFGs_0T(kS z7ahCT@G14BZW$v>TJqT-{`iXM-nV=9?6Ik@{`sr^?rj<SQ=x6s`wW7ooL_m;S7^c^ z&CW{-iv#}mvF2-+=w8o!rjuYSQ>t*}diUXKmkT_{?l5Z{_ue`wbLMo9=GF4ni>Acu z1#WNlOWq~)Tax?8#diX$Zg>8a4oquQoj+r3q0{`{nqOrMLW*LtQkK&@^-}&$xgRJi zc<k~V>ByI6HT7K2?PAin%C{|eyTUYx)#ZbJ=!UFS*KIsr2rzBtn!hoD!DqUMx}VQ% z)pCW9o^Ot)f~9ge87%C(B)N{Q*>R+*>do{QH7&mPQ%~C3h5bl>KlkH#$0x_jUw%AT zSFQE!whj-+uF(3ZgBEiio;U3L6Y8^cp0&K~0$(+~8aM0w-dz9sgmcT3@2VH=S9(0j zv!2H%p>XdZc{`?04jpfQW>ihm4L>h`A(`WUZ@+#2mh?YAGx_-BHZC@uH#6;{s3=>q z0~_!9>&4+o^DpfCbTVHr*tCXebNtWjNd|X4{;~x<s5`PEjoBbI)@s^>qFF^p*5<wy zHk;0Na&^L~Qki4MPfEh~{Hj-(et6xVV`mw}|L4z(K6t#l)@R0(;3KnEcOIJNIcu&S z&kRR{BZn4r?CfuClzlyYtAWP1gA*D%<wAdb*NhfvFc5!QSt4j|*z<$aRP&m5=E~-k zv8L4vKZc66CwcSVw)SE1QrNLmr|fmZl<6K(6SkQ=I;iqI|2fNn6i(xSM<SE8>L;$4 z!r6Prp{YHDSzz~)3@h!un|l*)pXxB3pQyZW`SeX61;4(ZQ_|QbX1Xcwnu_m2rJ}qd zH^bdt@%s;LJKHYs_P@oF1B)ep{eAM->QZ5W@KMekJkKkdS6}6lX;M5>KJjkXVeQ{> z&rWZ8&Xs>u?|I}_mBgYOKQ|v+wdd1j*1TiIb{Q{sJ$@u#EW6G??1%H^o>lUzS$VHa z&#U~^lBva|{CrDXxxM$Agf}m(_0PI)Zum0k{Ic#?snv4xpOzJy&fuQBQAwnJ=So{+ zJ0X8rUzLW(ofqBC{a1Ds6OTG*W1TeleieV3!G8Yu&*3MxN1HC5y!mJ66~4FL8ryE} z%8AuK9HMBuY#-Ou$^Ngdxy1&5KGkNmJ$-|UKzaVmt`!S;lbyHlyPZ)lioaf`X>9jz z_MP&a@->qZIHj|v-1uvzGjEpFy#Pb!!1@zcw)|YO<Mb54;xrN2QxlrknWZ0d4F7C4 zyW}fdDtFMEi7z5uqxhC4E!^IAaRX0rXVcyXOg|raYDPRuV`<q^-xL|Cd;iks2>mCM z%buQEDrU{fAwK!w8ScW{Eq-50<e5vnw{T`p_<lwCx>*0Gg6n##I73z+xO6mF_I&L* z9og{M`dr<2y_Pl&C(M_JzMr(;qv6Vj8J}k5Og)${5b*M(-tvrczPGY%%cf1ve)8vZ zbaeXv>5FB8rhhuM<2K8Dza4J_l?A4X>WMb4s9tWXYq0uIK;-?c{Z6JAHpa1(Y}gXK zA<)(+n&a%GBjrZdmNhI`e1fCquXBZq`a{8<PBxzWwP)7Xn`HC7zPL8$+3pYb<=&-# z7TUx7COz8Vd-(Q>6Mu8KIsd*(kLHjF+P&)dHuFpCwwh|$AOAZs<BDx?A^X#(Im`Ey z)z7F7{<?MJir94rZ-hAVZabglZM$H1{MOWicRpWyAHV9>rY{FCe0^9n*EMkM;x)H# zalTof$I8l;=lqsMrBYtDev8}YX`&)_`!w8cZC|zU!^dpyC3iytAA}t7YBUc#`G<S$ z%7PW~*Qd_Buuh9v;UD{fKe{$=><;{&U!QKfXlvZT*0L0hB{F~graw7ao3!=gcK2`B zCr;VL|0#R2(?NlQ``$jxyyNb#S{iq>(e>E!;8k(Q-2Z?6!;|tQFg#Rt2Ajlz`YtV{ zcZ>h*7tQ>B^h;Mo_3Gu}nHNQ0zPi3Z`;q**e^b|d*?n+=_LLX-DQR#09q(sVyG;7? zW$h&Az`Kmyuj)Lbw*8OV%DQLo%NzGzUlqIXZgN|0{E;$su5Ht$w$A>tdJ3mpR{tuk zt@;~TW#r=u`*gOw3|u+wg|{F3k>9d@RjvE2>a`k6Z|$2G{I_fJsT&uh3`|=;zH>{v zU$9zGvcEJWKlJ^Yirdq+=`u*K$h*^Y#?Ex2-GtbnA~)>@FaAZ(6{@0c&fjqUnqS(6 z=Z50jl^63`RF_}g&vM6ssX?@FjXL8Ck6>@^`ovR`KI?*yDy&SM-?4el&p$ocUhD_< z{LPBL#Lru=>akd`TGzSbjoSqqJNAY*XDt$C!;Bv#+&=K@)zx2mwanEo#S>ymKOK<V z*7<sG;zm!i_~Qrm>;1WIG$&Dmd(%_LeXJjEzn{6!`NoFO71FL=CYGz#SN)B5y7+8r z{mE7J?HB*f&YYdurPFb$V^yl~l!V*O8~(}pGK<NdDSBG5-N|p$&f_BI4~AIG;9?I> z+`i0d@qxekXM!T0ce*)8aHYQZeVXZpviHKCMYS75%q|~`esd&9<M1|iO|D#>)~J=7 z)wzN)BHtYg#U-~VAKh!1I+<Txy#Aw@b>Q;U8&(0!OZ&Gy(EC|ZJ9pA259^)<kGkK6 z{S>mc%K9Xe{A;Da*E!wx`ve<ff6cq!r1D0g;ii?R!?Z<{A}hWuJj2;JJ#EYWm03@e zv%;SQ2kc(e(&AyG@!0IMlFt5PL82Y!=PfTcns8UbN0)iU%SDROGX8VzSpwqqW_%Q= zcVT19;GYrp%->$S<k~bf7Wu6<s!TUJbrwFGe)EgrlF}z1-;^l47dx0UF*`bDIjf}G z&x`N2Jo-_7P(bKHeNNZjB@5<ldf)Qg>FTy4|2Se;mhNnMxM-8u-dX!I)bb+kPn_jF zWz+QSAqGr!Z0(&2e17x32p+xoxn%F7r&9J4e_LDBXME(|azEnxml=+SCSEzAbdllz zxoKw{MI()l2Wz^;|9$^?{j~G@Kk4uPb@*kt{hYeekM)a_S+flrm$35Q&vSQv?5i(# z@ReQ9fyynX+?Jo~uoGl^BhW5fVAX49Zo%60+Hy{QvgX#<InuiR8QhO&ORosz`{UO; z$vBR8%6Y3NR~+iQ&py%rdiq8Ey#3$Y<wK%pmR|b6zVK5o&o{o>_p3P9{LNjqQet+? z$GX4zW;JaF>zy)0KUQp97n&z0uJP-}1(r~koB&SQHqmf_t%<zNm$|NXPI&ru+bfn` zjN)7Z7H3YZSjT<n_7(5->ykh3S3mEW_buA@Us1eF{=T)wewCU>L+UGaUS5oL&@$|= zWOtZuoBMmlM}KGkr;kmXcJ5pL`P0K<?$ckMIQmVxH+k-C*S=@pr2g03Q9o!b_Vu?< zn$g8?BEtEL-uzIh5RJWFb?=CIOwoizkIk3dH@p62>Cc_k7eD?`?mJXHEqiLwLUyV1 zMQm4tul<kT5&W7v=$5~Wy?y7ENA=Q2t35yREa<ho7k71I(`ND7GapMAPB3lK+Grkh z-s$Tt(_G)LUB855&7OAd=y9o=aVc(1pSMWhSthaSbrw0&k}^w9Xr1>CP)~84$x=T5 z#ovm#Yp=1#UNPWXdi_fBoa|_six)z=9)C2q{WXRAhm>gBkLP0lVtAAF_J@1cNdM5O zmq<GLP5EhxW7|8o#Zv+<pZ(<LY<A~X-%**6Wik5~-ucA+>0f)6tMkJvA*R+RHnOc! zI6YhWp7qtjh@2_8!SAOBwC60CzHj>}4Mwiz^8T$Y`=jm#Z(4MY)i(XfKb5_08=ReE z-LG}WJWcdF+z~o&`?V9(<{x-DS5sD}tnQWC<$p}|eP1UodwI#*uCqDN)wDSM&B2MQ z6ql+TOz3=Udrwh#{l8m9dRoeEb0WB&OLk_-zWETY_cOwx#^rw5yR#it0a<)c&bJCK zbLOAx?wD1p{_5NMl`RQ%{0S4hdT#6G$gMA4yEwq`v(HR@pV)0N{HES3k`KDn{Mz|v z^XE0Ya;FFCey)G9!|#Q8b)WKE{d7Oa8@V<U`p#SRMo#vde9z+7x?V2X+Y?si*;ve9 z*SA<_27Ae?>GLuhRz6&xdf5BSuX9a0Dm6d9aCiR*o^{|Xf2d>UYSS`3!S;R1mW4rV zAA0WoGf3p$bmREy>PM<QC%Ak-!&eQrBU3NLKlQcy(9@{ZQEXK&>!G>w{^MBA;|s3{ zSurj8DgA9T-@FUmdDnKl{N7eS*`ai?e_YsVvD4i%tJGY1w`B4EzPFdpXYbCQ#W{iE zSxyI9zKFJ6w*Fwdd;a&w?55?)`(t9eJF`-5Uiv7UKhJctt*h=6N&dvM3qwPE8uESR zo*1`3l|AsCjbHmS+q~)a()A4|mfu=h(crc6%MMM^TPjnIY*@_~lgkh=e~E?0Lr zrW`isSx_`DZV_*v{jEc%(hV6N?~h`hEG*sFdGan>$jw_TxNcN`dTr&Qus_35JU4>% z;iKj6_0H*Ez3L~h&@;60R#?Fv#as4!?f&nSymY2&ijVV_>H7Pti|_H|J8I10srT34 zCgsrWVCwkzY1o0aPSabnTiB-D+7q+M=B%{+Q&X+$%hueooS$R+d{(}dRqg%$O!s$8 zGIMU{L@g{?Iotf)*~Eip>yl?BCA(hTeX2a|@~)XlCw9F_o|GLDUblK;%wvzWue$VI zgRh$E`<U!~zREu9;S;N~Pv`Gk`?5=4cx7x%{YO_rx!9j;#jNx`#QvKZJ#F0&Bg3al zvj41WU9KQ>_t4Z%-z__*WuN+#lm3+LXZr4#mA~Hg&grlIQutxXggxxP{c3{@zfb>{ zk|evOXMvZGY<r8|QtPw6n<lfJD+!QX+G6729%RTfV-m~ykdnS9;zi#*eA_)WOG{-m z*WOiK8u7M1Z^~S2?_Y&ec^+xJJmh<6?PM17-+MZ4E>D=Jxlc$(@2G!Wtj2Mk%E)JD z#d6x%#L~MAmA_1F$nAgkpw_Y?p6}lD=I>8o%;T?WEh{gG{D0nT{_H{T&5h>E(ipsq z(|uk?Om>`Om=k+<zxJ|*?d<M7qR$QTW-w{~e$-OGQlV%4-EF0ZL=1Q&7aek~lQs8Q z`}KW4&pbiZ1xME3QVKQKFW^_Zc~IrH^W--z{`2Ru*4lZBp0>{9(9L$f+q_8E*}7-l z*1*mBueQzFCYu=}JxOt@-jh$AU%6J@wkh@h@%Z%Q?@sf))fqVA*7@u?9q!&XYfIwA z7Ww*57gJg~`ReaX5f0nF%Kx31tls;{em*DGnpQsTiT$U?d14RSVGfOR%Qf~*o)!Df zi6eXQq<)s3XEjIW*O=5SDSfwYhG)tB31^n<;PN_j@pjIesrh@O%>ERKg_Ym@$98+& z?3)n_=g;zY<ghHhli+`1((Gx5<<G3*iZ-|1+U=|DVS2wm;I(C8e|^oXnve-KEP4%F zEP~eD&%2#@gKI&p_(I7OT$T%X4=tM-e)3bBD9?kVe<ob@WcV%G7g;s)9OK`l7yp@K z-Y;EpJghVI=u@{_8G9#Yxz3wXxGMPC$>nYvS1(<ic|k>f`eCg{Tg2aqJ$irL)KqQh zlfx@HV_Do)JW@IntVK7aSS|J_t&f}fC%i&DdYbIgiT?BK?l~{W`YE>kgP2U)Kfa`W z-#!Wng`eJj;(;#91lcJcYb=sdulM`SRW5!fU;8fhv$j>{>O)MqSw)$*XK+e8ulO|Y zZu_Pw(zEiTMXL<2y_(v6oGEnIjkt9yofiBFnsBph;@w4SmR(e37UN9NvF|?o)ky1n z{gdFgb2|@5t=@l;X-||oW82KDCtfWI*5~5#U%*@1c476o<4cVTUtat-J9D1ds%bWP zA_h#3IyYW(pI~75aZoxxHg~}hE5q5EbK4tjEWbH9FAa|j-t*wkmw%<Ln$y2)+c57x z!|wIxT+gKCFN)tC(6HXIpgd7znutPzHS<n0yTmoVm7f%zpX1XO%9*m<?Ie@hykn={ zluUguZ23Rt<I>MXY(0zqy_Vc?@x|^1j7e`dFKBGqU>sg<dFw2@(6@&d^%iHUGybvq z(3a{G`rqW}@Bf=08x%7O$(Wf%t@$qD+9k}uAQ{WRAjmNJV3~0JTbtWOw=Fik|Hl>T zw^S`Sea_0@o9f|bnN@?uj_<M%dg?Q&XrqSEB!g$JiXPUduIpdOnDD?=W$MQ>^X^9O zKfxkZ>&~2EveWlb!2^riI%kC*Sujh<JyMa~5h$`e&+BnVY)r!J_sdk4D(<||W%%dh zSElKPhpsHpRc+L-_MFnX>Sq0u|EI5gsaSB)Z>zticfFJjUsIR#9}@!=-$(HtFAiTU zUp%FXtL}x7QFrYj$M;Or-LxkKm@l~RQB;^%yf5NaTl+zM)_Lc}ng1=nQMdZvO5S?m z9S@I{v-^iPFW;`?yN&79S^o9*ar^l6<9~m9ee&w-n^#|7y?y<*eBGa#(x2}VKh*DU zmbd%+;j)5aOzy<PPnGt6Xta;BiHV762xHrCx7=;oyZcXK{#UTR*)h*uqWIE}i7w&H zb{tW{n|wKLhtFOapQ{+pKgHQ<%Jz#Iy1aR>9<M4eOOY;qEcd9P>iDAW%8!jAGj=LU zZf`l<@~$gw0l&~GGu8Q`yR3sI_x-Ypw$6K4|0Lo;*PVdFe_VtdH)MR+Y1=V9i<k4M z1D}9SRQ-4JdBT%Q<bO+P+}ss8!Rk;jmsrbWruQ{F3bvoWzUSbx^Za-G55(SI(HMQ* z`|*<>-UklW>3CcEXx!Y^bxSd#H@UTLiom*@gIC&;*H6?~{PmH>)4J25izY8SW0@kI zcXRbYwLa$htH<`(a^5YPzG#<S$I1f#lf|(b*KAyjtb$}p3U>9+Omo#LiFow$z*{fo zP0ITw8%~<So;{b{@0X>YiE;Xsi6=sD{5VtHV)(q!MWp3RqfAq<uH%-H=|^KXvw6Pe zDYm`r@Ob}`lE~-162W<zys;15cK2kj$+&r`W$C16o*OME>eUOB?_SE-y5Js@sQNsE z(ByhO9`VOtmYm29y&S^coV&#J|MZ^Y*>>5r%b73swfC;z&UoEsVzJHf>AiwWZ~c!m z+|ydZKWE#_K)x^o|8*%RDh1Qmf2_|_xNO<9F?W$_q{zpsv5#F{CJ61Wp8nRlR5m5C zL~rpO{g~X=4~7e-HSy)wbDh#vXPKBiH^pU*sAc}P0~gLlDStKMoNu7Nu)S^Njbjr0 z=XPun*e~<;_c{iH)AN27q!+I_qHY)2YvTJt&71ReS75C1R_iM-O3wEv<(+#L+WNNM zbIJ>joUg10#CGLeE~q^ryH0a!;Mwk8#%iC3yYnkP`)^=A&bU5qZ&Un57oqwM7ZmP2 zv+KTndAsV3rI|6sg>fHUFV-)u+98rKyYaaj^TosJi3}C@x(XS-C1&1Sw)uyF_~QA( zvxM5K<Bhpqh|QD#JU3&*UKaDIlc#-r+;QLU@C-k0DVY^>*%oBF$8xzp&k(xsY40ov z_8$uKLQJe?Nq8Szzr9@eW>LOQ=;O(=Me5%=XXokIcRl0nz4K&-v$(8G-22UIe;$8W zVki=;+1oc;;hu=?wx6@tRt0@BJt}u~)^-h^qc3Jw=B`cWGE%WSdx$CS+p54#+a;`H z&*Wb@q0m=$)Z*e|x6XM<J(lt3T~=Footidv=N6s~#?6~&XKhWL{OHc6rMoUUWo6If zK5NVKuwIP&fGU%6(yT&rrvR~{`V)yuOKzyPp8maI>w)aM376a6eY*CsB+=oqSx0Qn z?zlDW!NDfK4Ery!M4z2#Iyvdrk;mQ!Mdi6Sgr*&DS#)$;TIFhsZCW$apPe#GD-X)D zkruCA6}hd(Wa(qs&JR{ke+A!Z|5jSFHGl1nU5v|0FRo~-XY|*z>wTEn?Z5rQmyTl< z{AoX$Y9DavSv94E`wB82>h3N~WhzeUpL{UFQU37q>WZpE>H*E&UIqzsRv)WvTArT~ zv|yj(E9VJ`%|<h_3oh~eW_Zq4$k(`;x5#YHfy;3_J4*y>nC#3?JQsL!dxby&v%htT z>jPsKJNE<K?R)Mp)z9x=$Yo@7<biO(GsX1c144?^{26}wIySk;d6_WHtz5DBHowC| z$=_lZ#2-)Q$vp9uW!|?RCQLtVmdS+g(y?P?mDfCT@U!yMFA41bXLE5HDLfDkQ1^&+ zV-#ianJ{g^mgI&zN>6@-SNxKle}FG~%VCKf_mr+De>kuE>p8DZlXXlzQ+~sF*-w_N z(ySSaqbIx%JgKg(@u`UWi`>L{oDm#JJ6o5#*X&}<EZ2C;8<E-`HnU+%^^`KEFW)@! zA%xVO#cb*hwf$Gr7fiQ(mC7XY&Ep_bci@&8tP?~Obtg<)v_<Si>!LWF2dzr_Vjr9) zigRlOxH3MoKKiqc`EglR{hXea8u!;<_-_5}FW0|MyFYncxTKu*QtZw5j&HkJCFKI! zq8EJc_%iLmNzSTIx({kXEFAZ_r}|F#E10^U^?jww`<<+va)FDYXN2~<Z{2dzm3O{F z8$;?0ro9X=eV=|>F6O-<u)%CrQw`%O^Qqn|qHG$g8m^=(#CLo;>(Cb9%6p;SrDN8N z#`&!;(v5enQamU9Ag6uK*@o!?l`|X5oUgp&S>)Ccn9O-eP2(-k4!()6El<cTd{ewY zVC7G~d%_F9pJ{x}v2$MYcb6Bo+7(G!O^kavUY>Pq7R)N(yP~`#uaQS2HKON8@SBIi z5yo!WdJg*}o<=*E^cv36b7(fq`oLEpS1<5f_C&eE&vy);8YU#axV_5m!XHM{diGiN z3!dF?Hr>C#bh?AB<16n88jhXQ7-lLw;Zm4+OQn%bGOK{~ieylH;~SpT_{J?fOJf;X z+eE?=MBBn5!Q96AhFkqk^Ul2G)EFuem8!ZuNaMcD3s;ZxEV_bME^(<Oc`419&GWqe z8JEJ$CYJY!FKo>M{3q_>{j47<op`~eYt{xwVa=>V(|#YU`OWR0^_it^?y6ELm0Js3 z%rcZ*eQ#WtzRK=_v8!F~h4ijpTO7ZMq;7X?*37!VmKi*yj5j9z#8)W=<CYlaX*?U( zC~iuZxcT0(O?}EkxgRx7cJCX{t3Ub7obgD~wB8V$$PI0BKfYw{sXkV?zcFs#qBuLI zR^^}{924AI{;-JbQ*8B5xSb!lacc-?ex=`9`Bp{7V40+afijQQb)8984ZSTM{4=BW zoyKYPK&>L~PT$K5>e|Aq<6ekXC)GV$@^i-aW>H1vx=)RF&K>Bt-B;fibY{|<%U=$x ztNS;zK9zmqrE2c)*?)HYGV?35FOK-OIcq16=c}%E@0pKw*8DndujgFXS9+B7*i*$$ zeicv6#Q&e)8HvuBV*X_5oEb0jylkJZ<SFISSZckbsYpT~{O&4~Cl_~L`IcTBcwxWZ zr@XhCHn#TP*?(Tj_;x8!y1!mEp4I)a&L`_h_oEqBKGCk<xN!z!Zsj(uHNlD7tr%+N zTSPkD{xsoy-XrTjb9QB_>K(kmd;9Wb(d4-SXYaep2EUrP;^Cv9>4yGKxUNYFKR9c? zsPy^s-f-smRhg<i<&NFQ-HTGD9=xuipw4FQ5FOAG(9Dx`Uf18<jW18hX=B-I=a~2v zO6L#OpM13Ct69I>k@|<PT|5@Yd6on;p9#HY@#WD8<@POyO*eIHYt-<PF}y4HUURXu z)P*lMDjR!pbFW_%dj9C=71rpxwhxq+J?8s$CR%Wvs@<ihAA6+Z78_~Z67<uEoGLtp z!PPxH*75B3Y8PqV+V(SBXKOQ@Y;ss~<ni-MYXi;2^`F@+sFFLs&x*0LzHDV3YsB8! z>0hKXUw(`J<uY%^%j^XP6A~8tG%R`R(7Wq=?SeQyfs6W)adAOT*PpWA5#H-=D)jZL z>9YwJF8KEG@drHT6%lnP5w|qjlzGm2n(X!`H+HM3@xN<O%)2jHA+&6l*uSZ&yiA_g ze{mY@o%W1tNsmVQg0f$_S6fs5-pHz#yKpx4^$t00r&9NlQ|kX-v;V(Yw?U<G#ZDcW zg{E3II~~KKcVuaNGSv~ZO}Ha<MrgMd-_5h<=AU!oe*26`^udBg6Ti7dch;S?h_q5N zH@npH$j)DTm#}Tl`uvlL-Su3$bC%1ms%{Owa4YkZqxHcn*KR#y4q5;8QvYo=ufv)< z_SLU$yX@7gZgccYQj`9-nx9K^r6(@B@IvK;u<H4@0uIZ!iurvIJnG3|dM5X%#S`t1 zoBA%y@R)xs?H}jqt8?~Gzb16Z#ohbwbhc3I`PaBCOy$4dP4+)w(C3$D`#O5|XYD<H ze(`}PgS=u7*_o7H?s@q^JL9DLT+@l#f{$EsG<?7Bs~7(JNAutPlYifv@BFWK`Iq%- z^V`$Y*3S9#ba`37=WVOfe_Zp!s`BcVKG<_9Vvh7u_b(gv{Mw?qVBWf!YnL}F%?jev zY|&cU@a0P11lD3JjW)ANtz$2$i>7&JES?rM^@FUZspAt@uc_xRzJB@T7U$IOCS`kL zDpfuQ-4&X)>74BH6ZQW(Ehn0Y86JGV;O_Q1b77lG!Mix6wSOeLUUm80WnPz<zO**~ z<VO`|SGMR$LYKD&UDaA7RPO)ERJM0cz#dn&qg}3(e~0FCbxKd2UmKN|xbppvC!VHH zpPppTQuB1~b8z)rx@m$zSe5Xx#|Ki~8(3oXJY)IQx6bR=yt3(;->>!cpEQK86@H34 z)8MvOpfEgUV(i_DZ@L$Cl4it&&GMSuyE0erd0Xz?*?qY;H`!g~P~cedrIR5rbc^8` z#ju-dx>awM8piwb-rl2EaHCV&@J4EehS;|wEsNS*PlfLdU%r|1c}M5(xs!I3I<6NF zIC!8wq>%N>q!036ZKj_u4ml%~Wmx~Czv|!FNne+o%ojNw*mkX8%Y?6W(z^ujb@51j z{$H&g^-w-%bJ(V5Z2u<a3Mbd;ZZ$1bj@LZ7YhuGA@#wHkTSES<6025;elt-^+4;|9 zrvD|X-CvLBPg6LX(*5J8Sjdssg`L(8XX`iUJee!=`H!E--?=6;y}I|Txw&Sl@urq! z-ui_hN0XFKvGa!7>b!3<lDT;5li=#Fckf=AGqd>iL{n?A=+t&+hRLV;q#u|tv8Fh> z7i^qy`&!M~;zQdPnVd4o6L2YN*~=P!{aMzQEp1Y4l}B!gNQiJG1nl*(Jbh~B%x#6a zCvGk4Je?LHIcajh-*XYywnbW=h?u&Q)8zZJqEy{y^&L;+_N7cwJ{Xs7I89?i{l>G3 z&z`kQU72HZo$>v&XM49sTra$*`lRz%B=bA#<V^8|yh*F<4(@p2vd%T!FvIpqp8dmB zTc247ZNIiJlw+I8@n@Ij^qX+&oSdf8lCM`J{KO%lc~89Y<D@O?cAPQ2_AR5$MIqDU zP1-Euv+veqo}7NDo|(5KoQdI!$_s6``_kU0AM88ZYoop9iCT@N-_E(tzO%cRR@fe# zF)dNNvm*2$uhxNUrq6Fk6=s-bKY8=*j>Bw|Lrb2uPvSdj=6`(wgTvQOy;?4vpH9VZ zd!}!?739PC@zQpCzmSJZXH4t<T9oqa&bmiBA3Kgczf`k-+cZ_aeJLjO7cChWQW$@6 z$%!4lnw0hGS#(Z>P8Rd0k6bJQE8>=kZkd{$xi8uFS{YaG>Q4nnuU`@Tv1_B?_K9)- zvbt;|W0;eTD-Oq8^(;C&>rP8?V#dBXr*G=oRXNNM&2`OFJgdGlmuI=tet|1frXRYN zwNbQi^@q^gGQQ6q2r(Hq2<FRkPOle;xE)@4<L;cr3Kjw;FP$x}FlfneUh{plJFe)+ z=F<kohpr3%v%lZ7JfNSQ{pO>m8^31<?{j87T&0k7vu)y*FI_jjzYV-4zH{=U%)=VN z{_Y<Gdsk)D6fe8i!!)mY@kQ5`6Gx}_FWeZEFL|(Xqq&jk0tfbWW(`4i{!Cpi*TL|s zrT$*`ms8~#@$)Qa^-Nf=*c3f==ErD@bBPa@I!U$7JZ8G0D6{9FO5LNp+d79t)fE`} zD+(vh4{l1>pvYWz<k7qz%YVoFE3d4Nyy=i$-P^bPo#9@!=DtVP>P>x%66cxApZzj9 zF*(l5`@%E%m5qH~@0^!OeCE*X@ArK<bD2u#iDMo0y~5t!rglsJ<XE0uq&_{=|Gvvx z?<I#)PDX9^3!LKR=3TpMY28e(n~DYfQ&~cvR&5W;U8~8L^-=5n<$NQlABPrhO$(f* zvRP^ERc|BjOMFeMUNU(Xh+qEZ$-2K;b$_$`es<$Jd%q*w%f6Xp{f=ub_+&PtsOeP? zzr&Y5kC^vp-mm}olRfXBuxfGd)6yR=JMAYh1%3N>ZkPGYw$r;6uZA&BsN5+gp!4~1 z!WWk8wb%TcPZy{C&HlJ6Z|W_tFT0L?(=mR-!jS&1<x%kIm+U9MK2-T=oV`0K(DS;O z_0z~3Vl!-BRx!ElSFD&>dF{Kk*4xdivz7j~`%awx;YyIupZ>TnCiU;)w4R>3RU5H0 zVONl9?LGFKAAKsySJ!hMt+_1nHf7=K?{QXh_r16Kyl8j4!1SULQHe75rs;fk?=JgI z$YIy{d8x<k(P81|J3}fzzH45z&tbmHsyIoT@23OQ_sq&?Ioi&)I=VFfz1!|p+WXG% zX8ilQZ}q9~JAUn6#iO)$T7bpAJ@p)`oSmLLt-ldhe>uPFME|>xpIUZnu6C<>D25e2 z5x@8M8>j506XzAKTI%lKd8<3*=xVF?Q>FK_{QO?<Vfx3n|Ks!i9=G{*|K`l=AF_PD zGZlnJ75n8`Z`i+Mo&LR;llrN*?g#3|HSWB`cKv1C)aeFidRJ5{E|*-fgU$88=e#wA z0rkN~d710pELAQ3&-qYd<*C2@Jy%amxPErtX`Ack_fJW*{`^(Me(KaiebL{}i1!%= zO=k>zQ^5RuIz!Txt(Iojg1<WIPL-~>y5RG=uY2tt^(>h7+Igo#^IG{RTaV4xH78gU z8J%#-tc%$cmnqb_$fY82i}0?Pw^x<wZ=Rm{>sRvJuZFXtrU+j<_V1?A-IL$X?^<)y zZoR+n+<)(Hp1klWVD7cj{DYglzWQ3nFs*ujN%WF!%pc*+fgXI!%sz2uo0Ghk@`D*% z(UoE##^kob$zWQh$b-`-&MfM*ie+^1<lG{y`qPtUIY_WR_-n&$VRp83V(X<99SiQT z+ziMtzf~m8^7W<h$|F-&YL-_vu0L0QuK&AuQ26}Gi&kEpGij6b)$(Pws&f?n-LOh( z3%+hwsOj^xH9vgv!gUj~<eCCXk7RfYI=$7s@}=jYh(i5?`!jBq+%?bn{vo>cR@454 zKg-<88sF*FpXt_paJgn`j?>l;ADj(Ewt7~!F(>~xB6F$k_@hjN>-mO$H$Q*vP}9;n zAbbDC1HN$M5ZnE|=liD~3_o=zouT2AgpK9?bE{eEnOVy=OmqLfXhZwQgVE=|_wN&* zcJEed@s$`0$EcR{=YKMy78p7-)cf})M_tnEi`R&AniV_$>CyTtzBg`M?rspBrnU3d zk&|2pjb5h;oPBt5@41?^KP8i9{R`(Vzsen4X!XkI&Y`y8w#gZ~E8ZT+5p|ncrL!zB zdX+?2)bsG&>lGLBJk)kQ<=lGmX=`-$-MWIRs`vT@Jg-<^O}uMT9-DQ=T_v^C^@8Z~ zE$Iu-IRyS=-!1EL_u{IY`1(D57eDO|n0H}rZ{P2yA}$gwj{DCpJ<GGH(?;>;E%U1T z-W6;fGXL3A4tmHGD*N2-TbdeGyRIa3bIjY5Y}X!5Io7mT?MW8PcQvyGm&CUkJ$`ca zY{v3E(cwoQxZTP6^V*Z;<=pJ7dn~?tP70UlH%*jYAh>)&x^D2rfbtDrO~oym>nk5t zYt2i$&UIm*#k+l<oIGpT*|~kAZA15lq|GZ;mM+Yh5@#mAL{Yf=X<B=7&hB(wEhn3! z%T{eRTHH{c5`MMNuWC~NuITSeOeelLDj|BdZv7nX13xd#d!n=EXVX*jBe!gBX;v?o zCiq6}%xy6l-&pI8M7uhs0B=Sn5oQqv28PLkrER>Z=K?G#4Q4uRF!{fM#AMG>p2-i& zSSBl$Nim%<o@632`AV6<WEB$u9tJ2_()iDKa&4K4Jmx4iR0RVA!;(gm$p^~pnBKZi zDtBc1<uSR+Q)+T-IS)8X<djP@ee{}K=&dk$WjT)mD0l4qvGRqz7z4utX9fm&gfR?D z8fQjLF7%e1{H|O?9;9$x-;c*J3=9m>3=9l1C<;X<D^_TO&G)a6W?Vg4u|jHcYlS3O j7dZ1VF)$djFfhm>>Dtox4Xm!eh;8!S3IVnyB_K%vW21jE diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz index 2ae1ea50b1610050f5bd5746f7e9596b1c483c9d..ad4d6f9c5590836360d1a919f4be84b5cc5f9ade 100644 GIT binary patch literal 40677 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 H0V@LlC1iD+ literal 40094 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 Hz{&ssdmpy^ diff --git a/dbrepo-ui/components/identifier/Select.vue b/dbrepo-ui/components/identifier/Select.vue index ca5f3ce21e..4ef13b2ca7 100644 --- a/dbrepo-ui/components/identifier/Select.vue +++ b/dbrepo-ui/components/identifier/Select.vue @@ -70,14 +70,17 @@ export default { } }, computed: { + cacheUser () { + return this.cacheUser.getUser + }, displayIdentifiers () { if (!this.identifiers) { return [] } - if (!this.userInfo) { + if (!this.cacheUser) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid) }, listVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 816d74c26a..9351783574 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -251,7 +251,7 @@ export default { if (this.accessError) { return this.accessError } - if (!this.user) { + if (!this.cacheUser) { return null } if (this.table && !this.table.is_public && !this.table.is_schema_public && this.table.owner.id !== this.cacheUser.uid) { diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 9da8daab62..8340dfe955 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -229,6 +229,9 @@ export default { database () { return this.cacheStore.getDatabase }, + cacheUser () { + return this.cacheStore.getUser + }, identifiers () { if (!this.database) { return [] @@ -239,10 +242,10 @@ export default { if (!this.identifiers) { return [] } - if (!this.user) { + if (!this.cacheUser) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.userInfo.uid) + return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid) }, identifier () { if (this.pid) { @@ -339,7 +342,11 @@ export default { if (!this.database) { return false } - return this.database.is_schema_public + if (this.database.is_schema_public) { + return true + } + const userService = useUserService() + return userService.hasReadAccess(this.access) } } } 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 75f267944f..61d34fb5c2 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 @@ -51,6 +51,13 @@ export default { cacheUser () { return this.cacheStore.getUser }, + identifier () { + if (!this.database) { + return false + } + const filter = this.database.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + return filter.length === 1 ? filter[0] : null + }, canCreateIdentifier () { if (!this.roles) { return false @@ -58,13 +65,19 @@ export default { if (this.roles.includes('create-foreign-identifier')) { return true } - return this.roles.includes('create-identifier') + if (!this.database) { + return false + } + return this.roles.includes('create-identifier') && this.database.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { if (!this.roles) { return false } - return this.roles.includes('modify-identifier-metadata') + if (!this.identifier) { + return false + } + return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/index.vue index 570c5d9da5..52e36cd0d5 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canCreateIdentifier || canUpdateIdentifier"> + v-if="canPersistDatabase"> <Persist type="database" :database="database" /> @@ -44,32 +44,24 @@ export default { cacheUser () { return this.cacheStore.getUser }, - hasIdentifier () { - if (this.database && 'identifier' in this.database && this.database.identifier) { - return 'id' in this.database.identifier - } - return false - }, isOwner () { if (!this.database || !this.cacheUser) { return false } return this.database.owner.id === this.cacheUser.uid }, - canCreateIdentifier () { - if (!this.roles || this.hasIdentifier) { + canPersistDatabase () { + if (!this.database || !this.roles) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - return this.roles.includes('create-identifier') && this.isOwner - }, - canUpdateIdentifier () { - if (!this.roles) { + if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { return false } - return this.hasIdentifier && this.roles.includes('modify-identifier-metadata') + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.database.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 1d71474805..26ddf9478c 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -1,14 +1,13 @@ <template> <div - v-if="canView"> + v-if="canViewSettings"> <DatabaseToolbar ref="toolbar" /> <v-window - v-if="user" v-model="tab"> <v-window-item> <v-card - v-if="isOwner && canModifyImage" + v-if="canModifyImage" variant="flat" rounded="0" :title="$t('pages.database.subpages.settings.title')" @@ -89,7 +88,6 @@ </v-card> <v-divider /> <v-card - v-if="isOwner" variant="flat" rounded="0" :title="$t('pages.database.subpages.access.title')" @@ -106,7 +104,7 @@ </template> <template v-slot:item.action="{ item }"> <v-btn - v-if="item && item.user && item.user.username !== user.username" + v-if="item && item.user && item.user.username !== cacheUser.username" size="x-small" variant="flat" color="warning" @@ -244,13 +242,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const userInfo = ref(loggedIn ? user.value?.userInfo : null) -const roles = ref(loggedIn ? user.value?.claims?.realm_access?.roles : []) -</script> <script> import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue' import EditAccess from '@/components/dialogs/EditAccess.vue' @@ -342,23 +333,20 @@ export default { access () { return this.cacheStore.getAccess }, + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser + }, uploadProgress () { return this.cacheStore.getUploadProgress }, - isOwner () { - if (!this.database || !this.user) { - return false - } - if (this.database.owner.id === null || this.userInfo.uid === null) { - return false - } - return this.database.owner.id === this.userInfo.uid - }, isSameOwner () { - if (!this.modifyOwner || !this.userInfo) { + if (!this.modifyOwner || !this.cacheUser) { return false } - return this.modifyOwner.id === this.userInfo.uid + return this.modifyOwner.id === this.cacheUser.uid }, isSameVisibility () { if (!this.modifyVisibility || !this.database) { @@ -367,52 +355,47 @@ export default { return this.modifyVisibility.is_public === this.database.is_public && this.modifyVisibility.is_schema_public === this.database.is_schema_public }, canModifyVisibility () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('modify-database-visibility') }, canModifyOwnership () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('modify-database-owner') }, canUpdateScheme () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('find-database') }, canModifyAccess () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('update-database-access') }, canCreateAccess () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('create-database-access') }, canModifyImage () { - if (!this.isOwner) { + if (!this.roles) { return false } return this.roles.includes('modify-database-image') }, - canView () { - if (this.error) { - return false - } - if (!this.database) { + canViewSettings () { + if (this.error || !this.database || !this.cacheUser || !this.access) { return false } - if (!this.cacheUser) { - return false - } - return this.database.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.database.owner.id === this.cacheUser.uid }, previewImage () { if (this.file) { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue index ee6d25eda7..30bebeb2b8 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="canViewSubsetData"> <SubsetToolbar /> <v-toolbar color="secondary" @@ -117,6 +118,19 @@ export default { } return this.subset.owner.username === this.username }, + canViewSubsetData () { + if (this.error || !this.subset) { + return false + } + if (this.subset.is_public) { + return true + } + if (!this.access) { + return false + } + const userService = useUserService() + return userService.hasReadAccess(this.access) + } }, mounted () { this.loadSubset() 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 65154f38a5..f50b9788c7 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 @@ -56,6 +56,16 @@ export default { roles () { return this.cacheStore.getRoles }, + subset () { + return this.cacheStore.getSubset + }, + identifier () { + if (!this.subset) { + return false + } + const filter = this.subset.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + return filter.length === 1 ? filter[0] : null + }, canCreateIdentifier () { if (!this.roles) { return false @@ -63,13 +73,19 @@ export default { if (this.roles.includes('create-foreign-identifier')) { return true } - return this.roles.includes('create-identifier') + if (!this.subset) { + return false + } + return this.roles.includes('create-identifier') && this.subset.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { if (!this.roles) { return false } - return this.roles.includes('modify-identifier-metadata') + if (!this.identifier) { + return false + } + return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue index 82a4ba5f70..d8e7510787 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canPersistQuery"> + v-if="canPersistSubset"> <Persist type="subset" :database="database" @@ -56,12 +56,21 @@ export default { access () { return this.cacheStore.getAccess }, - canPersistQuery () { - if (this.loadingQuery || !this.query) { + subset () { + return this.cacheStore.getSubset + }, + canPersistSubset () { + if (!this.subset || !this.roles) { + return false + } + if (this.roles.includes('create-foreign-identifier')) { + return true + } + if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) + return userService.hasReadAccess(this.access) && this.subset.owner.id === this.cacheUser.uid } }, mounted () { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/index.vue index 93be3df024..d770878fab 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/index.vue @@ -39,6 +39,9 @@ export default { database () { return this.cacheStore.getDatabase }, + access () { + return this.cacheStore.getAccess + }, canViewSchema () { if (this.error) { return false @@ -46,7 +49,14 @@ export default { if (!this.database) { return false } - return this.database.is_schema_public + if (this.database.is_schema_public) { + return true + } + if (!this.access) { + return false + } + const userService = useUserService() + return userService.hasReadAccess(this.access) } } } 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 cf304cbf71..3f4351d2d7 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 @@ -199,6 +199,9 @@ export default { access () { return this.cacheStore.getAccess }, + cacheUser () { + return this.cacheStore.getUser + }, title () { return (this.version ? this.$t('toolbars.database.history') : this.$t('toolbars.database.current')) + ' ' + this.versionFormatted }, @@ -230,19 +233,13 @@ export default { return this.table.constraints.primary_key.map(pk => pk.column) }, canViewTableData () { - if (this.error) { - return false - } - if (!this.table) { + if (this.error || !this.table) { return false } if (this.table.is_public) { return true } - if (!this.roles || !this.roles.includes('view-table-data')) { - return false - } - if (!this.access) { + if (!this.roles || !this.roles.includes('view-table-data') || !this.access) { return false } const userService = useUserService() @@ -253,28 +250,28 @@ export default { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) && this.roles.includes('insert-table-data') }, canSelectTuples () { if (!this.roles) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) && this.roles.includes('insert-table-data') }, canEditTuple () { if (!this.roles || this.selection === null || this.selection.length !== 1) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('insert-table-data') + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) && this.roles.includes('insert-table-data') }, canDeleteTuple () { if (!this.roles || this.selection === null || this.selection.length < 1) { return false } const userService = useUserService() - return userService.hasWriteAccess(this.table, this.access, this.userInfo) && this.roles.includes('delete-table-data') + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) && this.roles.includes('delete-table-data') } }, watch: { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue index 1b54076c65..4811e5c47c 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue @@ -78,6 +78,9 @@ export default { roles () { return this.cacheStore.getRoles }, + cacheUser () { + return this.cacheStore.getUser + }, title () { if (!this.table) { return this.$t('pages.table.import.title') @@ -85,10 +88,11 @@ export default { return this.$t('pages.table.import.title') + ' ' + this.table.name }, canInsertTableData () { - if (!this.roles) { + if (!this.table || !this.access || !this.cacheUser || !this.roles || !this.roles.includes('insert-table-data')) { return false } - return this.roles.includes('insert-table-data') + const userService = useUserService() + return userService.hasWriteAccess(this.table, this.access, this.cacheUser) } } } 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 6ab884a826..dad79a6fa8 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 @@ -1,6 +1,6 @@ <template> <div - v-if="canViewSchema"> + v-if="canViewInfo"> <TableToolbar :selection="selection" /> <v-card @@ -193,21 +193,18 @@ export default { const userService = useUserService() return userService.hasReadAccess(this.access) }, - canViewSchema () { - if (this.error) { + canViewInfo () { + if (this.error || !this.table) { return false } - if (!this.table) { - return false - } - if (this.table.is_schema_public || this.table.is_public) { + if (this.table.is_public || this.table.is_schema_public) { return true } - if (!this.cacheUser) { + if (!this.access) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid + return userService.hasReadAccess(this.access) }, canWrite () { const userService = useUserService() 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 50c06f569a..39c0ea1aad 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 @@ -54,6 +54,16 @@ export default { roles () { return this.cacheStore.getRoles }, + table () { + return this.cacheStore.getTable + }, + identifier () { + if (!this.table) { + return false + } + const filter = this.table.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + return filter.length === 1 ? filter[0] : null + }, canCreateIdentifier () { if (!this.roles) { return false @@ -61,13 +71,19 @@ export default { if (this.roles.includes('create-foreign-identifier')) { return true } - return this.roles.includes('create-identifier') + if (!this.table) { + return false + } + return this.roles.includes('create-identifier') && this.table.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { if (!this.roles) { return false } - return this.roles.includes('modify-identifier-metadata') + if (!this.identifier) { + return false + } + return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue index ef608876be..9d75edae1b 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue @@ -61,11 +61,17 @@ export default { return this.cacheStore.getTable }, canPersistTable () { - if (!this.table) { + if (!this.table || !this.roles) { + return false + } + if (this.roles.includes('create-foreign-identifier')) { + return true + } + if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) + return userService.hasReadAccess(this.access) && this.table.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue index 32a6dd9dad..860d4819bb 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue @@ -198,20 +198,17 @@ export default { return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, canViewSchema () { - if (this.error) { - return false - } - if (!this.table) { + if (this.error || !this.table) { return false } if (this.table.is_schema_public) { return true } - if (!this.cacheUser) { + if (!this.access) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) || this.table.owner.id === this.cacheUser.uid || this.database.owner.id === this.cacheUser.uid + return userService.hasReadAccess(this.access) }, primaryKeysColumns () { return this.table.constraints.primary_key.map(pk => pk.column.internal_name).join(', ') 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 a2ac279f2e..d9c98f6111 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 @@ -202,10 +202,11 @@ export default { return this.table.is_schema_public !== this.modify.is_schema_public }, canUpdateTable () { - if (!this.roles || !this.cacheUser || !this.table) { + if (!this.cacheUser || !this.table || !this.access || !this.roles || !this.roles.includes('update-table')) { return false } - return this.roles.includes('update-table') && this.table.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.table.owner.id === this.cacheUser.uid }, canDropTable () { if (!this.roles || !this.table || !this.cacheUser) { 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 50eb6305d7..f4007569a2 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -219,6 +219,12 @@ </div> </template> +<script setup> +const { refresh, user } = useOidcAuth() +if (user.value?.canRefresh) { + await refresh() +} +</script> <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' diff --git a/dbrepo-ui/pages/database/[database_id]/table/index.vue b/dbrepo-ui/pages/database/[database_id]/table/index.vue index 95fdf1643e..e1bfa6fdb0 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/index.vue @@ -48,6 +48,9 @@ export default { database () { return this.cacheStore.getDatabase }, + access () { + return this.cacheStore.getAccess + }, canViewSchema () { if (this.error) { return false @@ -55,7 +58,11 @@ export default { if (!this.database) { return false } - return this.database.is_schema_public + if (this.database.is_schema_public) { + return true + } + const userService = useUserService() + return userService.hasReadAccess(this.access) } } } 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 bb3d953d76..b492476b97 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 @@ -101,11 +101,8 @@ export default { if (!this.access) { return false } - if (!this.cacheUser) { - return false - } const userService = useUserService() - return userService.hasReadAccess(this.access) || this.database.owner.id === this.cacheUser.uid + return userService.hasReadAccess(this.access) }, }, mounted () { 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 5864740846..75eca0100f 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 @@ -174,11 +174,8 @@ export default { if (!this.access) { return false } - if (!this.cacheUser) { - return false - } const userService = useUserService() - return userService.hasReadAcess(this.access) || this.database.owner.id === this.cacheUser.uid + return userService.hasReadAccess(this.access) } }, methods: { 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 691336be2a..c220a8aa9b 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 @@ -56,6 +56,16 @@ export default { roles () { return this.cacheStore.getRoles }, + view () { + return this.cacheStore.getView + }, + identifier () { + if (!this.view) { + return false + } + const filter = this.view.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + return filter.length === 1 ? filter[0] : null + }, canCreateIdentifier () { if (!this.roles) { return false @@ -63,13 +73,19 @@ export default { if (this.roles.includes('create-foreign-identifier')) { return true } - return this.roles.includes('create-identifier') + if (!this.view) { + return false + } + return this.roles.includes('create-identifier') && this.view.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { if (!this.roles) { return false } - return this.roles.includes('modify-identifier-metadata') + if (!this.identifier) { + return false + } + return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue index 6351650736..2a8d010db0 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue @@ -54,18 +54,24 @@ export default { access () { return this.cacheStore.getAccess }, + cacheUser () { + return this.cacheStore.getUser + }, view () { - if (!this.database) { - return null - } - return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] + return this.cacheStore.getView }, canPersistView () { - if (!this.view) { + if (!this.view || !this.roles) { + return false + } + if (this.roles.includes('create-foreign-identifier')) { + return true + } + if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) + return userService.hasReadAccess(this.access) && this.view.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue index 2cc851a41c..5b35faf3a5 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue @@ -123,11 +123,8 @@ export default { if (!this.access) { return false } - if (!this.cacheUser) { - return false - } const userService = useUserService() - return userService.hasReadAccess(this.access) || this.database.owner.id === this.cacheUser.uid + return userService.hasReadAccess(this.access) }, inputVariant () { const runtimeConfig = useRuntimeConfig() 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 8d77881cec..d027a4347b 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 @@ -188,10 +188,11 @@ export default { return this.roles.includes('delete-database-view') && this.view.owner.id === this.cacheUser.uid }, canViewSettings () { - if (!this.cacheUser || !this.view) { + if (!this.view || !this.access || !this.cacheUser) { return false } - return this.view.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.view.owner.id === this.cacheUser.uid }, inputVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue index ab52fd2405..c3a0e73f49 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue @@ -37,6 +37,9 @@ export default { } }, computed: { + access () { + return this.cacheStore.getAccess + }, roles () { return this.cacheStore.getRoles }, @@ -44,7 +47,8 @@ export default { if (!this.roles) { return false } - return this.roles.includes('create-database-view') + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.roles.includes('create-database-view') } } } diff --git a/dbrepo-ui/pages/database/[database_id]/view/index.vue b/dbrepo-ui/pages/database/[database_id]/view/index.vue index 8c3ab4b0e0..b2a2c17a1a 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/index.vue @@ -48,14 +48,18 @@ export default { database () { return this.cacheStore.getDatabase }, + access () { + return this.cacheStore.getAccess + }, canViewSchema () { - if (this.error) { - return false - } if (!this.database) { return false } - return this.database.is_schema_public + if (this.database.is_schema_public) { + return true + } + const userService = useUserService() + return userService.hasReadAccess(this.access) } } } diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue index b6c225025e..9e5e20186d 100644 --- a/dbrepo-ui/pages/index.vue +++ b/dbrepo-ui/pages/index.vue @@ -30,6 +30,7 @@ <script> import DatabaseList from '@/components/database/DatabaseList.vue' import DatabaseCreate from '@/components/database/DatabaseCreate.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -40,7 +41,8 @@ export default { return { loading: true, dialog: null, - databases: [] + databases: [], + cacheStore: useCacheStore() } }, computed: { diff --git a/dbrepo-ui/pages/user/authentication.vue b/dbrepo-ui/pages/user/authentication.vue index 64d76f7535..50008d3c5d 100644 --- a/dbrepo-ui/pages/user/authentication.vue +++ b/dbrepo-ui/pages/user/authentication.vue @@ -65,6 +65,7 @@ const { loggedIn } = useOidcAuth() </script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -89,10 +90,14 @@ export default { ], email: null, password: null, - password2: null + password2: null, + cacheStore: useCacheStore() } }, computed: { + cacheUser () { + return this.cacheStore.getUser + }, inputVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal @@ -106,7 +111,7 @@ export default { changePassword () { this.loadingUpdate = true const userService = useUserService() - userService.updatePassword(this.userInfo.uid, {'password': this.password}) + userService.updatePassword(this.cacheUser.uid, {'password': this.password}) .then(() => { const toast = useToastInstance() toast.success(this.$t('success.user.password')) diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index d8739fbab9..a325d53d62 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -199,8 +199,6 @@ export default { this.init() }, methods: { - submit () { - }, updateInfo () { this.loadingUpdate = true const payload = { @@ -244,7 +242,7 @@ export default { }) }, init () { - if (!this.user) { + if (!this.cacheUser) { return } this.model = { diff --git a/dbrepo-upload-service/pre-create.sh b/dbrepo-upload-service/pre-create.sh index 536a2e63e0..27b05a9146 100755 --- a/dbrepo-upload-service/pre-create.sh +++ b/dbrepo-upload-service/pre-create.sh @@ -1,6 +1,6 @@ #!/bin/bash REQUEST_RAW=$(cat /dev/stdin) -AUTH_SERVICE_ENDPOINT="${AUTH_SERVICE_ENDPOINT:-http://auth-service:8080}" +METADATA_SERVICE_ENDPOINT="${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}" echo "[DEBUG] [pre-create hook] request started" >&2 if [ "$(echo "$REQUEST_RAW" | jq '.Event.HTTPRequest.Header | has("Authorization")')" == "false" ]; then @@ -24,8 +24,8 @@ fi echo "[DEBUG] [pre-create hook] request has 'Authorization' header present" >&2 BEARER="$(echo "$REQUEST_RAW" | jq -r '.Event.HTTPRequest.Header.Authorization[0]')" -echo "[DEBUG] [pre-create hook] attempting to contact ${AUTH_SERVICE_ENDPOINT}" >&2 -if [ ! "$(wget -O- --quiet --header "Authorization: ${BEARER}" ${AUTH_SERVICE_ENDPOINT}/realms/dbrepo/protocol/openid-connect/userinfo)" ]; then + +if [ ! "$(wget -O- --quiet --header='Authorization: ${BEARER}' ${METADATA_SERVICE_ENDPOINT}/api/license)" ]; then echo "[ERROR] [pre-create hook] Unauthorized" >&2 cat <<END { diff --git a/docker-compose.yml b/docker-compose.yml index efcc9a76cc..0f2f7f84b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,6 +85,7 @@ services: - ./dbrepo-auth-service/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./dbrepo-auth-service/master-realm.json:/opt/keycloak/data/import/master-realm.json - ./dbrepo-auth-service/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json + - ./dbrepo-auth-service/create-event-listener/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar ports: - "8080:8080" environment: @@ -94,6 +95,7 @@ services: KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" + WEBHOOK_URL: https://webhook.site/a3349f41-ebfd-443a-bd06-a0d9c503e76c healthcheck: test: curl -fsS http://localhost:8080/realms/master interval: 10s @@ -530,6 +532,7 @@ services: AWS_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID:-seaweedfsadmin}" AWS_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY:-seaweedfsadmin}" AWS_REGION: "${STORAGE_REGION_NAME:-default}" + METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}" depends_on: dbrepo-storage-service: condition: service_healthy -- GitLab From fadcb5a4ef6c6c263299e6266f582858db45b3ab Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 26 Jan 2025 13:42:50 +0100 Subject: [PATCH 24/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/changelog.md | 11 + dbrepo-auth-service/create-event-listener.jar | Bin 9338 -> 0 bytes dbrepo-auth-service/dbrepo-realm.json | 24 +- .../.gitignore | 0 .../pom.xml | 15 + .../src/main/java/at/tuwien/Client.java | 22 +- .../tuwien/CreateEventListenerProvider.java | 16 +- .../CreateEventListenerProviderFactory.java | 0 .../META-INF/jboss-deployment-structure.xml | 0 ...ycloak.events.EventListenerProviderFactory | 0 .../tuwien/EventListenerIntegrationTest.java | 18 + .../test/resources/create-event-listener.jar | Bin 0 -> 10015 bytes .../src/test/resources/dbrepo-realm.json | 2798 +++++++++++++++++ dbrepo-metadata-db/1_setup-schema.sql | 4 +- .../at/tuwien/api/auth/CreateUserDto.java | 31 +- .../at/tuwien/api/user/UserDetailsDto.java | 5 - .../java/at/tuwien/entities/user/User.java | 3 - .../java/at/tuwien/mapper/MetadataMapper.java | 19 +- .../at/tuwien/repository/UserRepository.java | 2 - .../at/tuwien/endpoints/UserEndpoint.java | 49 +- .../endpoints/UserEndpointUnitTest.java | 84 +- .../gateway/KeycloakGatewayUnitTest.java | 69 +- ...nticationPrivilegedIntegrationMvcTest.java | 20 +- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 18 +- .../AuthenticationServiceIntegrationTest.java | 24 +- .../service/UserServicePersistenceTest.java | 30 +- .../tuwien/service/UserServiceUnitTest.java | 7 +- .../java/at/tuwien/utils/KeycloakUtils.java | 52 +- .../at/tuwien/gateway/KeycloakGateway.java | 11 - .../gateway/impl/KeycloakGatewayImpl.java | 33 +- .../tuwien/service/AuthenticationService.java | 14 - .../java/at/tuwien/service/UserService.java | 12 +- .../impl/AuthenticationServiceImpl.java | 17 +- .../tuwien/service/impl/UserServiceImpl.java | 23 +- .../main/java/at/tuwien/test/BaseTest.java | 54 +- docker-compose.yml | 6 +- 36 files changed, 3037 insertions(+), 454 deletions(-) delete mode 100644 dbrepo-auth-service/create-event-listener.jar rename dbrepo-auth-service/{create-event-listener => listeners}/.gitignore (100%) rename dbrepo-auth-service/{create-event-listener => listeners}/pom.xml (84%) rename dbrepo-auth-service/{create-event-listener => listeners}/src/main/java/at/tuwien/Client.java (61%) rename dbrepo-auth-service/{create-event-listener => listeners}/src/main/java/at/tuwien/CreateEventListenerProvider.java (85%) rename dbrepo-auth-service/{create-event-listener => listeners}/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java (100%) rename dbrepo-auth-service/{create-event-listener => listeners}/src/main/resources/META-INF/jboss-deployment-structure.xml (100%) rename dbrepo-auth-service/{create-event-listener => listeners}/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory (100%) create mode 100644 dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java create mode 100644 dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar create mode 100644 dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json diff --git a/.docs/changelog.md b/.docs/changelog.md index e2bb59c374..7268fd522c 100644 --- a/.docs/changelog.md +++ b/.docs/changelog.md @@ -2,6 +2,17 @@ author: Martin Weise --- +## v1.6.3 (2025-01-27) + +[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.3) + +### What's Changed + +#### Changes + +* Refactored the UI to support OIDC and added an event listener to the Auth Service that syncs users on creation to the + Metadata DB in [#488](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/488). + ## v1.6.2 (2025-01-24) [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.2) diff --git a/dbrepo-auth-service/create-event-listener.jar b/dbrepo-auth-service/create-event-listener.jar deleted file mode 100644 index fd07f62a743ee039a934e33de6d18ae9e28ac653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9338 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 MjfH`sPaebr0O2a{UjP6A diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index 4dbc95d099..a957245673 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -2223,7 +2223,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "oidc-full-name-mapper" ] + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2249,7 +2249,7 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-role-list-mapper", "oidc-full-name-mapper" ] + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-property-mapper" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2265,8 +2265,8 @@ "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "true" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } }, { @@ -2289,8 +2289,8 @@ "config" : { "ldap.attribute" : [ "cn" ], "is.mandatory.in.ldap" : [ "true" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "false" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "firstName" ] } }, { @@ -2301,8 +2301,8 @@ "config" : { "ldap.attribute" : [ "mail" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "email" ] } }, { @@ -2313,17 +2313,17 @@ "config" : { "membership.attribute.type" : [ "DN" ], "group.name.ldap.attribute" : [ "cn" ], - "membership.user.ldap.attribute" : [ "uid" ], "preserve.group.inheritance" : [ "false" ], + "membership.user.ldap.attribute" : [ "uid" ], "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "mode" : [ "LDAP_ONLY" ], "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], - "ignore.missing.groups" : [ "false" ], "membership.ldap.attribute" : [ "member" ], + "ignore.missing.groups" : [ "false" ], "memberof.ldap.attribute" : [ "memberOf" ], "group.object.classes" : [ "groupOfNames" ], - "groups.path" : [ "/" ], - "drop.non.existing.groups.during.sync" : [ "false" ] + "drop.non.existing.groups.during.sync" : [ "false" ], + "groups.path" : [ "/" ] } }, { "id" : "b6ff3285-35af-4e86-8bb4-d94b8e0d70bb", @@ -2347,8 +2347,8 @@ "attribute.force.default" : [ "false" ], "is.mandatory.in.ldap" : [ "true" ], "is.binary.attribute" : [ "false" ], - "always.read.value.from.ldap" : [ "false" ], "read.only" : [ "false" ], + "always.read.value.from.ldap" : [ "false" ], "user.model.attribute" : [ "username" ] } } ] @@ -2363,10 +2363,10 @@ "useKerberosForPasswordAuthentication" : [ "false" ], "importEnabled" : [ "true" ], "enabled" : [ "true" ], - "bindCredential" : [ "admin" ], - "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], "changedSyncPeriod" : [ "-1" ], + "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], "usernameLDAPAttribute" : [ "uid" ], + "bindCredential" : [ "admin" ], "lastSync" : [ "1719252666" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], diff --git a/dbrepo-auth-service/create-event-listener/.gitignore b/dbrepo-auth-service/listeners/.gitignore similarity index 100% rename from dbrepo-auth-service/create-event-listener/.gitignore rename to dbrepo-auth-service/listeners/.gitignore diff --git a/dbrepo-auth-service/create-event-listener/pom.xml b/dbrepo-auth-service/listeners/pom.xml similarity index 84% rename from dbrepo-auth-service/create-event-listener/pom.xml rename to dbrepo-auth-service/listeners/pom.xml index 47abc95613..e70201b96a 100644 --- a/dbrepo-auth-service/create-event-listener/pom.xml +++ b/dbrepo-auth-service/listeners/pom.xml @@ -33,6 +33,8 @@ <maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.release>${java.version}</maven.compiler.release> <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version> + <testcontainers.version>1.19.1</testcontainers.version> + <keycloak-testcontainer.version>3.2.0</keycloak-testcontainer.version> </properties> <dependencies> @@ -70,6 +72,19 @@ <groupId>org.jboss.spec.javax.ws.rs</groupId> <artifactId>jboss-jaxrs-api_2.1_spec</artifactId> </dependency> + <!-- Tests --> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>junit-jupiter</artifactId> + <version>${testcontainers.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.github.dasniko</groupId> + <artifactId>testcontainers-keycloak</artifactId> + <version>${keycloak-testcontainer.version}</version> + <scope>test</scope> + </dependency> </dependencies> <build> diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java similarity index 61% rename from dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java rename to dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java index acba01a663..769ec49097 100644 --- a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/Client.java +++ b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java @@ -9,24 +9,36 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URI; import java.net.URL; +import java.nio.charset.Charset; +import java.util.Base64; public class Client { private static final Logger log = Logger.getLogger(Client.class); - private static final String WEBHOOK_URL = "WEBHOOK_URL"; public static void postService(String data) throws IOException { try { - final String urlString = System.getenv(WEBHOOK_URL); - log.debugf("WEBHOOK_URL: %s", urlString); - + final String urlString = System.getenv("METADATA_SERVICE_ENDPOINT"); + log.debugf("METADATA_SERVICE_ENDPOINT: %s", urlString); if (urlString == null || urlString.isEmpty()) { - throw new IllegalArgumentException("Environment variable WEBHOOK_URL is not set or is empty."); + throw new IllegalArgumentException("Environment variable METADATA_SERVICE_ENDPOINT is not set or is empty."); + } + final String systemUsername = System.getenv("SYSTEM_USERNAME"); + if (systemUsername == null || systemUsername.isEmpty()) { + throw new IllegalArgumentException("Environment variable SYSTEM_USERNAME is not set or is empty."); + } + log.debugf("SYSTEM_USERNAME: %s", systemUsername); + final String systemPassword = System.getenv("SYSTEM_PASSWORD"); + if (systemPassword == null || systemPassword.isEmpty()) { + throw new IllegalArgumentException("Environment variable SYSTEM_PASSWORD is not set or is empty."); } URL url = URI.create(urlString).toURL(); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); + final String token = systemUsername + ":" + systemPassword; + conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(token.getBytes( + Charset.defaultCharset()))); conn.setRequestProperty("Content-Type", "application/json; utf-8"); OutputStream os = conn.getOutputStream(); diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java similarity index 85% rename from dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java rename to dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java index 8ff079f8c3..b64320588d 100644 --- a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProvider.java +++ b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java @@ -61,13 +61,27 @@ public class CreateEventListenerProvider implements EventListenerProvider { private void sendUserData(UserModel user) { try { - Client.postService("{\"ldap\":\"" + user.getFirstAttribute("LDAP_ID") + "\", \"id\":\"" + user.getId() + "\",\"username\":\"" + user.getUsername() + "\"}"); + Client.postService("{" + + quoteAttr("id", user.getId()) + ", " + + quoteAttr("username", user.getUsername()) + ", " + + quoteAttr("email", user.getEmail()) + ", " + + quoteAttr("ldap_id", user.getFirstAttribute("LDAP_ID")) + ", " + + quoteAttr("given_name", user.getFirstName()) + ", " + + quoteAttr("family_name", user.getLastName()) + + "}"); log.debug("A new user has been created and post API"); } catch (Exception e) { log.errorf("Failed to call API: %s", e); } } + private static String quoteAttr(String key, String value) { + if (value == null || value.isBlank() || value.isEmpty() || value.contentEquals(" ")) { + return "\"" + key + "\": null"; + } + return "\"" + key + "\": \"" + value + "\""; + } + @Override public void close() { } diff --git a/dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java similarity index 100% rename from dbrepo-auth-service/create-event-listener/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java rename to dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java diff --git a/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml b/dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml similarity index 100% rename from dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/jboss-deployment-structure.xml rename to dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml diff --git a/dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory b/dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory similarity index 100% rename from dbrepo-auth-service/create-event-listener/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory rename to dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory diff --git a/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java b/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java new file mode 100644 index 0000000000..c3d6ee94cc --- /dev/null +++ b/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java @@ -0,0 +1,18 @@ +package at.tuwien; + +import dasniko.testcontainers.keycloak.KeycloakContainer; +import org.testcontainers.images.PullPolicy; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +@Testcontainers +public class EventListenerIntegrationTest { + + @Container + private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:24.0") + .withImagePullPolicy(PullPolicy.alwaysPull()) + .withAdminUsername("admin") + .withAdminPassword("admin") + .withRealmImportFile("dbrepo-realm.json") + .withEnv("KC_HOSTNAME_STRICT_HTTPS", "false"); +} diff --git a/dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar b/dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..221bdd325f056ff953e0a44a46773470eb08e91e GIT binary patch literal 10015 zcmWIWW@Zs#VBp|jXf?Bn$}+iqu#k~~;S3W4g9rlygRg6dqpqi)o4&83pQoE^aEP9- zTW`>5zrzLsd)!ai|6tEqF7WF_?;%DlxuAu2%xCj%on<j~ujkAAkCzF!v^F%q-CDlK zc-~jrh~P=-Kb_9aK9-iWWRk_MA{L+4Iq!`N`DG&uUl!zA6+Mbs%6?>zX{e(3Q8&9> z&cj<hWn`6trC9i;KH2=R%P8<k-?rYCY1c1Je$8`9v*>}{Yw!7Lxfgf%=sfHFu5`a! zRrC>?MPJ_QTvyY`f3x4S{OS#e{WIae`tz*H>7AyZucb%5FSAbdTEFA2<R-2F#_VKo z_Ia`0cdS1B((peXXiz0HjkUz!Lu_!~0lxP6vYglKsw!VNs4dVtmbt&a!OG_Qxf|cs z-sk_Zk;`^Uy714&+Cx!srq_gu=6{b!U*Gn7Vd;$Px$8Ep{Mz;{!gPZqljtO=-}@C- za?d(^I5pK~vTC``o+amGG9NM-crK6-R$A)W={c*9A^mAi$T_v=md{LNeG{wpY%jVx zy?B4-g*P1~vNkH;mo60-VyVsGbUSv@8Wcrb3=A9$;3#510-VTEgizLEW)+2`ia`ij zS#fGnS!Qx-u|7gQDCUvXGczzSB$nV&zy(oIQd*vwnukXnKeENSiDh^dOJXWcEYTxq zhdw@S$wjG&C8@fpWvO{3x;dG}C8>F-MPLU*(mW`n{>*E0>SADE_`txxpn+^yR#JX( zv2IFgK~8>UF35o5lA_Y&lG377y^7o%h1xzxz9s_!*Y9%{&8%JdE=J@=C6g_~HsPR5 z>t&aPcJ5_So-xB>_5AOXzq^;8e{i&=Q}!rZ-&aN!H|J|d7dF0rs^foQ>(qVsJ0hcM zDrPYs)3IEhROERhEXi_jc>ae*iMNl6PguvTcGy-SvXTD=!_tLvg=X`96>?89^gXB0 z91!pKRXg_PwslwMr^kb065$`8-z=;27#J9I7#J9wko^OX`TU}Ez3kM=<edD(Y&~$; z6zjQyg2)FNLIFkjWtl0dMQ(}7CHX~_-Z~exHFeMXoV{GE=jE&8S*q)OR{P^g9X-#p z-nv{Gr}R(zc<L5;`{<q2U&X?Ja1AJ3{r}Xw+n<Sn;TkIggAq!yaR$c?K6~|&a}tY- z=LX--6ABcGoqd}js5@cf)@@zerg<lRIH<m+Q}LRBr)iQ$jZB-e-^_CpW-?yhe@T3H z#v}G0fyZpy1vP`bYb~#Dy&hNnwz%%kpI@>E80Az2ogy4nS~ZedzHBtR781Pq*Q?d< zHeRrGdefOGc`w*$N5C764&gFW|F3THyooD$-81G@*ojTMZWQAmaj5d`jpW7Zb5ulB zYHww?I4w-It}RvYE4_S;?N#Sp;bp7$@qEjDxT`JqYWG}=Fplh9DQh|AZ%bm^<GDs@ z?E^P1$rR4t-kla#O3s)0?d;-Ie|UCM(7DA+M8acdEMAw;8xSpJe^n&2An#Dt=?zCN zzF49?XM5E3CzE|nUo+jj*s^UuKcDhF_QR?n(czkV&V6bAytMHDw4w&%U%l!%=Pj>o zSo__re)-zl&IfgsU1IA!Z~S5J6Og~P?)sFTS3$NvVw>hGnMYI{KmS0>M`vn(>@=yj z-0N>D-_a3?uAf(PyO?M7`3>U#zk0Maet-2PRbWzX^^+HmE_{gIQC@j?)jlbwRhb`S z4_}E1-@&ET(#yR!bb-(&?sYqTI34Eg_v47s{a@Ld{_mB|vx?=Pd~Dpk(-)lI!|_n8 z->`DV0jvI%oD9-C&Km#Rug_uUFymv-Z?>ngKY2R+i&?ZMDVQ^|vi!>uE>F3qo5LQ` zpQ`fj+Jw0a7ih9R)O+XIW%DlHZDSqdQRX)uU3XVXr&jK3NXkCOIm_y!K(%9n>ITC( zo@c8k%;)6wce;H3#t|ohsN^l{b;7jj4}Sgm;-=V<rXz|XPa`H(O|IGAua&j&2vX(; zCC`9~w|*SpU|{GIU|<kKO`bWKsd*)kB-k5XStER0vi5OyYURPc12>AA7q^^dcbg#K zl-u`X!ojsQM}(HOZ7b1T`<69w^_z7*3p_8I<=)z|#pI=H)kWhkeu^PwZ`GEF`+B_p zZ8vG&%i6!k*MB*Cs-4G3)85$F`t!5d`S;3u_5PH<GGw^@QC^=bV8sFtS3@rrExxSB zQ3eZD-JAA0vwxkT9I)xEhtxT~#zVV)G4k6m{d*U%W$R+oTU81|ujF53@yl|2E&1}b z?5oS(4~u*nS0!;y)0-e>nPmM-VrlP-zIig@5z*r3B1?6YEiVPtKMm2;D(GdJ-<2BS z*EvhL<Wf7Ytz?e>hNX3_oW(8+)N-Pf4>mh5%VoDTJhb<qLG|6Nj|r^@PPvxm@vYgo zcST#gV{g~<hf$5Mj-~|u-(fdJPEssly8HhRPv304!e0^C{aS=2B&J_lEa*|5Pymm$ z$+V)r9X#)YH$**Xs|*QOTG*e_8J4YLd+c}HyN;Kd#|<XStr2~}qk5e8w9l!j2X>@M z-U@Ky*QvVNkjOr1nec{E^@ONT-qYFhKO~91TEc#XJLK7B?zi_e0^}rnT%7N+e+$U- z&n`dFtk#%Y8M=dK=Z%AMEUeRF*`~35Ot}1~vUcsn6Zh`@<Kxe(>ie8Fu{-`tT25d= zch}mAeGRYfnXI%vX!|#IOYWIVrta#0yMI69+2QJy6}XZ2Hfxt`v48!HZEK?$xP-R| zZ`aBQz1a4x^|;`^D?TqzmKo1nviQP+FAq<DJHLLb21j9SUg7q~OT-xVyf~mIy8B@E zl#kbB)ADb5E|rvXE&aXZXWWUv_<R+u#=BZoOIB)gyt$t5|9acywbqN%?i`<UVfiDo zFWe!$ne8QV0+;9PZ8JVK@ok3Zaj_d!rRU>qrrCCI>16tT);MjkD)p<}fjCzEAj6K@ z%@-$@^|);C-TYN|HtQZAiG?X=dQQLCT{dl@%!yYsLpS|R+T(K2J5=VtX^A6|+jxv6 zq_674nckT9_GC?r{IyG*>3K<hd2$uqJr5K`4Ue$eTv_(EWAWs+Tf2^Kzw$o+bCQHI zms_ZWg~e)LxveXE-}Nnemg5u=xP8Aaf2|#d%97G)Udn2rGdwtdJnOxYesQtROpkfW zmQPzu&xdD5KTBDzS*5bH+QDkomJqGPBQe~p{I|aBceo{)cT4NMY<QtWxq-z=muts0 ze6P>AwL0BXMRBLLUZcBeqyF@FFN%uA;}$;16J38~HOsW;w~ubH%8@jZ>Q<FyE;?_k z6{oy9<YR$SZogOVyU>qTd+b*G?$2BPVrj{(9q*o9(qqk^(JS@+-rtu?l6zhjTV6T- zsNBcsm)gwlyFL}XJ6gLU_=A{KYS_tbUp{Qed-<_0cJWUUn*&W2yRS{1bJ>2kPHD~T zuI-Oyw-}e6VVv+x=1`GX#f!fdikCk&Pr9;4;N<bbJ<(0~4)a*?pOSk$>sxJz&gqPV z8%D>O1n){+UweS<A9qFS(dzv=<?;e6PCwTD{rUQ)$3G@?@jq7XVR<FUFYOt$caL8F z!*7qKboD<<-qNaR9Qbt3q*|9V@!y1hENSvz`D4o&&(oh0B9wwZX&+qlUGh|6=ZU?+ z+gi#W^mMr|sjqn4CVTps8|(bDg14?(r&sHrOL988WKZ`Q!@Ik3vz2%8w|bn|ntAf= zb5^N!a$Xk$Puu8tPw@6Pl?yK9>*t;l^yJO#g__|m)lQpp(~i5&*Y26PhJCtsS@or4 z=Ut*x)eWv4PV@2RIU}-n=1HaWD;u8Pdg`z2rR6<yo3f=*lFPJZYmemgeT=Qtu3GVS z-=%Lic1^u<?90whyHzzew#@j?rP*|u`?O5ygdF4EbLZm&7e?K&s`OA_b709n?N86S zmMLdD%5aBmX;R!2A$v}~@lH_EIT7oH&v!-kZC%<|c=lpMy;7f;^_8_t(_VZ&m$+g| zdbEz==UZRh&TJ9AY|YE5b=qi`qgUG0EMwo}WjeZ3b!V4Va@M^)dbz^wV1A0#&$S0$ zRaW&rv3PHLxM<s=vMj^nTV|~Af3oWskAZf{_GvxpCDo-jO!$`uS8n>AB%LaDp834^ zh48M7>q4CzoAt84zR%3PsAKa(`EkGL=?>N(AJwCF1}kfRbSO?JH@PK#LATpqC-R_$ z^O5)&WoZI^k`wq&q|bQW7_+Q$_Y1*k(yW`hw2V^&4%)L^`x76d@k4y|`>PATbn47l z|BfrIazoj*6Y~XRM2pVITj%UQuwJ41;JzJ+Opi?1S$`<q7AoH)6Q8s?jq!)kzC-&& zo(KAin2X0e$dOEa|4DPQ2Jd{wo$EIlHm^GN`NO98p9<4_lCLhvKg)7$?q^eh%X{Z} zzb>A3?X>F7Lgw_<HPW3gGnJNUvKKEtV&a!n%y#yy>%T=jWj1|%&ywm5+vomEy3cLI zu|9v6lm3O6L+?+heEZ?8w$Ywhm${a!y@BW0j-uV?%h)BC%og2$X~MyYJnz0}OYVvC z+gH}T{8BORJey9boA!l5`!esCN4%VQNV<`8&(Aw1ef)lp|2cNny=J***;sBm-RtlD z=pPzfMiwvi&pv2wK6~%;3cKd^Klga-^rp*CTf8cG`n-wK{_~Um_&<K5;CagDVX?zw zmSyMWPIKw*eWdp6zSDIc{shz8Pfgradp9<jt$EZV&nt8H%&V=!+CN{ceOmp^YM%mg zP4XJ2rjEij2j@m~S8w1u9&nr~reFAt{G)U28|S5%82aZg@HBs<nRCd$P<h_cBi=h) zrzEb9I5?kuYlc|w4K=eQb<<mVX36a@j;vkhEweOuN(WnwsDHq7w!kKJORWWR{*Rg5 zb(E(371`IO^vbAp{bT8psmVHX??1`nJa6BX|L}G|$HkAbHR5vf_Hy1o{5?=>+Q%?^ zg>$EkYkw%#J^8eW+y0r%2jPGFc~iv$7cbcMMM-PZ-1xHT1^Ql=Cw|^ux!|zu9alwh z!GMB4i~hJqRd+7u{<g{TwKD61O-)y-KWyIlVaL6%wN-o9Ckgf2HGR6Ar*pR5gZ2Hd zV)LB3#`sO^7fy&Td|ICOn|*ujwcP(b`-@`t?QHw`>c2Ge%lALj|MC9+kJcpb&|V}F z$IHMFD#yT}joRkH-6V%JgtkU-Rs>(4`mcYx`e}XxqX`mDN*#=m+YDKp4zLL&ze!M< zb}K<hLGk=0W3g$f%C?dmk(sxa{l3>$;`x1xulc1ToUis>tX*b&_x4GZ%}ZXFEW2Fm z`}_Xyc`4E<57);_Kl=Ty=$-BJKj}N4zw$o+%#JT%@}3L*MpL9$7zB1|IldLlK9l7e zaq{rm-E4g~0^I|)8qVvnp3VAn;jw>NKLT<O<S$}dmN4__7OR`dh1NH3&D^GY{GHV1 z$$l#H3g0Z5dvC5^@6qJ4sDzX^K5Fy4iriJE+TF3rnctxnbgkgEhgO=p(OUD0$9B`# z>}A_*c-&!a=S~ieb#o5Nad~kHDNBChFco`xY4x?wPFuA@pUs@n&)VeW>*!{Dr+j5+ zm5z!^=as~RPJ3UUaL}5Z`Si#`i;LYKyp!bhglAa4O+J`9a{=4&{?mo6jSD(eBeYh` zKXf5XWM-JJ#}&TY=jI77-j;Ckr<AW+h|1eKlZ2U#Pu0Q{RCbhDb#erskvkzLC$fga zRc+1P=Sw`V$XVY1_qO-1UCT;mt(7yk<}6dIbGneTh*g`_PW|aS(JgJu#5e8z=#+Lf zqV+1<I-`wj*{t2(Sss3SW3PYz^7iE`(U`(Old#0Oo!J}a{krA8Ijkwq&_2Xv_uo@; zxoWpI20l=K5S@FxOZ(GKMgJ#jg#EX?+u(ManP=u%wRJ~JZLW5?y$w8WdY0v8f|+FL zi{7=-kLIpSQL}cEUvW^ZMCwM?BJR6Qk->aRr?LmX)YG<7iICcL!n60U*R5Q&sttFi zhV4%C_c729VR<0svf=OnKjGaQW-p4nvXisuU%<gzO8)|tHk7T{*LNpQxc0{36{phP zm`u!>p(gh|O|8gf_oX%WkJv4ZG;Iy&w%sUor{ymj-wcb6*{lb<WtCTa{FZ0AFySS4 ztj~j)uU4EZDc5*!pYkXyf~UJ@ZqLf4Yo{e=a!<RrdXc8qiqDHQuLw$a?!N0LdT?8( zqroJt(jLFZn{1T)zQ5UOyfVisi``u}eTA?4Qv)G3Hy;(z4&I|qM}q!Dsqf%=meIW1 z{p~YPyB<HgJBb!g`Tb{~c(6w|FQaYwNq@cFC%2sGNNzf?F3>tx^ZUF*4|a44@95nw zASt2|!{@7N>7%IDeS2nv`jnWN{(%dRndw*GUAgIcY}2+!ny+hSbfvGaE;x0d*!NEN zbIxh!ed-;L-m{x}$jfjZ(~S8w*FqoL?YVHE+h>o2e&VZniXvx%=kAS_t=`3A+<x9a z?)4PQZ9hM9?YVSdwa*@@^)rKHo&?vGs##C?`0KN?t!u)khow!MER=uN%`yAX&}pvm zJ|@P<PlB<eao!B0tFwLfNb*m*dNJqJMr)aN$9?<0Tn*)TqI7A`R7=07OP81?Y0tcu z_ej=jLCw8@&vtvdg>ESC;Sf2w+jo!q#1(gLELE$mm{DmhxY>>WXtLd&`OPP;_1$f+ z+NSl1f7TCya|RtA_hkLkWmJo66kcDDIo<v2ic(Tt#MAE<y(Jp@FOt=cO%+M|cVlkU zC3THo3rvOl=V$~x^Qlo;A9SRMlUbnV%#q_CIS;BTU)yljTQ$q__oH(YcE!nb-&5F8 z?Y86J-n1@_cgL51$Yh>x_%X7kPtJVhKA$6{`&LQ%rp~dmwiWBY^<4GDpN&2f=BGE5 zvP@pHd&=5o=P)&kgxe<*Lc&*WTrjnV^{V5+zPq+;`%d)O6#85*EZuA@Rr6z0f}=U_ zIaxm~iLFAMTMzmw@%~uVSs!#XZ0cOU<(HbZqV}adivO_wOM68cH^20?(9d;SKk*9R z{}Q&#&26r*T}`xt<JK>+!uJn<kCb!?_7pqkH$8lV&a5>t&nHZMm#mqrzS!*aG=|sT z)Ti2>X9?(A9`fFi`M+bOx)+Cd|J#)o*@g1|x)X2s)cHS_41M!|!IPhV8ABepzq%sN zeQnB$*Cod^vQ8}j7%cq1dA=Z%_OaDJR=wQm+I9L&(`q6ARfirtSNmuG{^C02FGrYG z9Gc81p?7q>?;kaJS=+_38zW|&Z(_LI9`|=|r@e?$grs&u*4CT-_N%MjMILOsP~sG` zX3yefDW_kjSQjswGBZd|wCU!PD-%oGxSpmYpXAOF%G@2l>Oy|U!S*vfW-I~9S52n= zV4dw1s~vo~#&Ge(&t_Nu*f{idoY%Q}ChV*X)5+F&_JGw2vd7-P+-Y=w3hSxj+Ec}A zD<*9^b2ONd<--*JA9hARUVU8Ts`vP^i<rMc?5~@FYu*Jek4f|jn6^VT>7VOmqobRJ z!qgsLEpVNm(iY>H?eqGAxLus{(e7QJ@2~0oyXUs`&SOlPPUmmVl$G3Yxq3|_OFGj; zk<IS=r}nMhXdd~H=jcmGZ6)I>*X_dRLiT0t-t#25ds4`<yGnKy8-GntS|L(-aQ3UF zOQCl=^gg?)Rv34GwG1nn;V<of`U8*mn!jE-`%PDx#M*7{^;yjP=k|H~Qe~H}l%h*h zKFg%GbJz4&^+tB;Y!92{?{?M4z2wPfQQKI*2T#xKUV7bbP0o~UU%3xV(B0ylxn-w* zVlU5;HElJXw>Cr-yxp=h-EF%@;_9z{U;ivlyy_bNeX`kaGdJOT{x<*YV#~{pPkq>= zI;U`{RcFoiB|&_z?XyeT-|{R?nrRs-^zk&`&CC;e!DXk5f2hq$kn-<a+V=KZhuAdh zHICY^mR#E6efGqYi{Wag-{lrb<~%++cY`tS#E>it>nN%Dn$o4Ge$N(*owoG5S=^3W zCzBTHzq|2v>!tE}rd~@d9&MlQy8g@TOR9IbUOL-3`_GrR%xy9umh<`_v~gGL+_hUY zwp{MW@Bbeas-CcSWdtz^%$G@0m^bCwgDL;tf8exTRkczlms@RfXN&)jfNw7qrRR6O z)%qH7N5w8szkkc`%k5I1EZ_83r8Y|OSDWs$P7+(w`P`eybYha)Rn^;SihJBe?_~yC zrLOkB^4iSw=d6$~$z5?*|7I1;+4Jc=yXijPtM`8v#rS@B`_ex`__1{)&k}Xp4Oj2n zJ>$N}YWa-Pl*?R^2Za`?pJcdvefnI(7XMSJ#+&9V>L=XO^!0iXlcbaA8NxPk=^82V zRq}?6_pX`ld3UwkPV7T8vuY^w%4vmL+P|d!Imd0!$7ycMrhKPFY%@#$!goB+Pp9m> z7k%(s(6+BSYsD7vb*HeVi|wdZRp|}*fA;d88LL!veC68pi>KeJ{U8`46mi9*@95(l zL0_d0%b2`$Ty0(ZHFHgRzBAwKhRrWDoPPvfDSY;8^Nxi)))q$Rnj)9aEUrHP=vdJk zp6xx4#Z)tQPAkzAWM~SoKXC1_m(FpcHAlH}96A1G9APxcK6!XbCiknQkx?t0?FAz> z*Sho;iEXjeSe;_Jbw}4<uM_e+BQ>`j3-#fV3p}|r*lT8E;gKul9g}1~iui1-zw$c$ zrv0<8{#r-hUufPPJL&oSW6#__Fin59bos_xmw%^5y`RgvH~PxUt)Y)Ac82X+s}vJ& z==yi63B!gig*D3z*C`2PU+`ftdytiL-0I6isfdXF$r*=jZ>(4t;jOE~Vk+`9X62;- zjmdMh916Xzow{nW=GEHC*)POc1KugtZU4k@{g!>o$#nrT9DAnKeW^MqT#@`h_szbu zZ}&~U+kWR=^=zj1*4_M5ULI7QQ-5V{{hYg-cg;TRe(=4zXvTAn56&~TI)B}N#inol zoQsd%9JH%B7+fc-9reKK)BA)-@7Ieaf4lFcv1^0i-4_p|SZ?ol&i3xr!QPf5PA<&? zPu58X>b_2G{`Ru5=@qjS-*xU)f#0Iv7=LKZveUcQ!*09OeXjzS`P{=!vtG=Xzi{pM zFJ^<;O!uXZm-`)-Klku{1Apu6q95gT++wrWKD^cHdc*hm+qoiPiJ6njbe$s1Ha+hO zXx!u)`X=9L>hZmu^;}#tJFaWlZuFN=+toeKF7;J;ZT{o)C!!4P{|VaE20yTuKVJVn zpmD2(yLOU{ePHAC!~dWC{y+V&{-?itE&mwZ{~yY?|LWgbnLqDjo~?4On|@fHd$RO7 z#RYa}E&rV4&WZY<FRZX5Z}<EKatYHcPh9_gw&YQC##ZMo*Vncjf8--#`0unr;0B3Q z{TnZLNUya~)|~w`>bz^_M*D|p%>L)Eue$&A=sWKnkw@Pd2Q%e*H3>>i_cA{&@*#8e ziuD1GvxMg_-@9nlOa@Qhvz&9jNLH@+wsp?oXTQ3{WEm`HE>({%NqLe|R`+Fv)Y+5$ z=T-%--5t9zjQ!l%$7?4!`Y~0`SlVZhy=WKH4=r1tLpx{lTRdI2xo}FQp>xmX8ioEu z^*+J-k3Alkt(%wPbH8u;W4=9{<&P5k?An5VD7`y+{ez87>u;{iW(Khj^=&^^ix^7Z z|F-FsQBBag%aNs`a+l3kUND>4yea+T21Qx6cgs_+UHNtO>l@3bbLRz{nayv$dFI8$ zN`3`_ysUF4RoD6PC-%w3z2Z}!G{4&W<{75u9X!rwez>budM%#DuxmM!cZol1nBB~& z=V!$_M@G!5+!V8Xk#DQOWWTvrjB`&f`rMpzb4iCOw_x@z!PB=M|8kn6ckxTf$%glw zJO3Qs@ua8kbm!t%D~_Ah*7WB*|6X?GB=4NpQ*Af-=c&Ba-L*G#JM*sImt_Ilop;$T zy4{jD`QE?4{Cc<Tk$2@Tzva9;@5)=*U3<N^e?L*I**Jf1_0yk4@~{4LA!bf?Ot6f) z>{O(y#LU1@!pp#5hCGi0nMgy-jbWeUD#*_TO;cSB&-K4;An@;AykKZe@7+Uj5?qOw zmUvE1m~A5QyDjFqRE*5=O>>v=e7yhM;=QKk++~~x)r;!peSW<A^IYjUxkB&OI%ZDm zy8Ke+>@qoyS#CZ@mS0|d`ux9-Uv%cM1TEEGaBOqNLjUF4kDU<i5#Ges*rD=8EMQgA zpTD<R>zdQ9oj$Vqzs%E=#gWdZKg&FI?<=sFefHz}?$7eqoSkaawkS3^O<#AjvuyQq zP1R#3Ys#wgc{W}Q%={wDck_Mb3p4IXCQSb}_qe<WW4^Q5*K3XnR|}_ftK*tWK6RZ= zujTI^w0)|%le-`{x6nm$o641lWZuu->5T8zY;DofeVDlLS#HDY_d)FIT79atIvmwb zOLjE2y!#fyX!xMHxA~*xWj2--xq^)foGllf8hvUf&5Vw3jxy$AEYqHRSL^gs4wFzH zu}*ILowc^x*I$2kyESBu&&LfX7Op$hs#{vB<D#L&X1p=PMS5!BWX%gZLOP$nkmV~l zxUM{&*?;NOE1lWNIk|5O^}94U-b>ARH+Qq+O|KLi9~qvftZ$OTBOAOO=BH#gb9}pf zHNT?rY3y#6uWQ!Y*$CV)e6frx^kb$(3I8^w?50;g&fjO>k)BcbbnA+@?k||F_zLb@ zuv|8o*wgG}bylSH!-Ivde{WpIpSU=WC(v+4`rVKXf#zHm0)O|+kuooMa-AXmlTO;* z8E5)qm~V8h(oa$sFTLq0Ffn(@-#;eLemhpax#`sQeMhFUN$7_X;X)DLwFfSoirLJu zh++Euy-l~pzWu)<7JGy(*!!E5>F=P8TXU1wd+&aG>zAme8fUrd+tWD*C2J+0u6A8z z`Y1E!ea)Wsn)dI~e@=T|6VlL<dc^irN^|e_Z=yFf-U^@0<Gc80S%L8<lbe%nY%KZp zKq+~TceIh?kLyXx`fMDd9K5w=uanErUt9Y)%wpB_cuO8Fd*y=?Y)?*}v!55@zW({4 zgNM)U{Af{e>TAt~5S_?5D-SMS&@MUq;NgY0m3w{fJnYEjsAw0l{xYxQf1T&aTwk4^ zf8(DmPWqXe^4;rr+`>J{MlnKhHs9|2|1Z^kYtifKz`Km!eKhKvTkFvVM|Q7!kOZ1F z1z}tAa$P}DenDzcNoHy>?+Hh)1_c4u3wz50m9kzkS{+N+FEPRJ*!tN0_deadcdU3$ z<P3|rR@TB-s;%{6?E-?r$0D{0v+)bx+Zq|SeajNt8bpx*nynJ{2sxL`z`(GPfq_97 z*>RqJF0K)JKAyoLpS^TGo$>Zudx6(mSL@uF^P7VVt{6Xf<OQC%z3K~^xxIMyBxLIL z(rGW9N1sZ03$J|rQrv9(rC7Le)rB3uI#sJwmp+|Yq4H(pt;T@3IZ+|gX3mK^Gc|(A z<yXMv9Si~9j7%cTkO^mytI!vXz?Kp$X#}ybEg^xJfO|~?NFM`(0K;3y#f(UcP>{8O zX6_-%AS7sw1B3<Ab_!V=eBK*bKgi(_^$-%Y<^jS2>HozDT>$~|DRy^))<7UMNHc*o zz*j5a)(2V>fzap7gycU+!H&<Bk`SE?kiaRx)QqSV@EHSIGXXIP<k{u;jKN;HKn#Z@ z0Z>e!uc3e#&cLvw@e8uy1Xfg_n~J`Y0b%M9W~5+)$1kbt8j$S+r3du23JCjxSdgQa z*p&<D=A%zGBh3HEhGKpWV(J;)4D`WUgc(oyQOqDTl#6UIw&n)H;2v3|z=otzL^8vk zKA?>cWII3sj9$1R>|jzP%ML_Qi*6NqQHii>KC)Gaf-}IIl?|jwfI)!a8Vdu1u@Z;} E0G?_lI{*Lx literal 0 HcmV?d00001 diff --git a/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json b/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json new file mode 100644 index 0000000000..56f2003e96 --- /dev/null +++ b/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json @@ -0,0 +1,2798 @@ +{ + "id" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "realm" : "dbrepo", + "notBefore" : 0, + "defaultSignatureAlgorithm" : "RS256", + "revokeRefreshToken" : false, + "refreshTokenMaxReuse" : 1, + "accessTokenLifespan" : 900, + "accessTokenLifespanForImplicitFlow" : 900, + "ssoSessionIdleTimeout" : 864000, + "ssoSessionMaxLifespan" : 2592000, + "ssoSessionIdleTimeoutRememberMe" : 0, + "ssoSessionMaxLifespanRememberMe" : 0, + "offlineSessionIdleTimeout" : 2592000, + "offlineSessionMaxLifespanEnabled" : false, + "offlineSessionMaxLifespan" : 5184000, + "clientSessionIdleTimeout" : 0, + "clientSessionMaxLifespan" : 0, + "clientOfflineSessionIdleTimeout" : 0, + "clientOfflineSessionMaxLifespan" : 0, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "actionTokenGeneratedByAdminLifespan" : 43200, + "actionTokenGeneratedByUserLifespan" : 1800, + "oauth2DeviceCodeLifespan" : 600, + "oauth2DevicePollingInterval" : 5, + "enabled" : true, + "sslRequired" : "none", + "registrationAllowed" : false, + "registrationEmailAsUsername" : false, + "rememberMe" : false, + "verifyEmail" : true, + "loginWithEmailAllowed" : false, + "duplicateEmailsAllowed" : false, + "resetPasswordAllowed" : false, + "editUsernameAllowed" : false, + "bruteForceProtected" : false, + "permanentLockout" : false, + "maxTemporaryLockouts" : 0, + "maxFailureWaitSeconds" : 900, + "minimumQuickLoginWaitSeconds" : 60, + "waitIncrementSeconds" : 60, + "quickLoginCheckMilliSeconds" : 1000, + "maxDeltaTimeSeconds" : 43200, + "failureFactor" : 30, + "roles" : { + "realm" : [ { + "id" : "48f38342-1e3f-427a-995d-c436eaee65cb", + "name" : "default-user-handling", + "description" : "${default-user-handling}", + "composite" : true, + "composites" : { + "realm" : [ "modify-user-theme", "modify-user-information" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "9bb4a8dc-28e0-4645-b62f-cc94425f0cb0", + "name" : "default-maintenance-handling", + "description" : "${default-maintenance-handling}", + "composite" : true, + "composites" : { + "realm" : [ "create-maintenance-message", "find-maintenance-message", "update-maintenance-message", "delete-maintenance-message", "list-maintenance-messages" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "7ee1c424-11b0-46a9-b0ed-725e9b7fc40c", + "name" : "default-system-roles", + "description" : "${default-system-roles}", + "composite" : true, + "composites" : { + "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "143ba359-5fa2-451e-8296-43ecf20bb251", + "name" : "update-semantic-concept", + "description" : "${update-semantic-concept}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "5136d7a3-e3f0-4585-bacd-15cb8a56095c", + "name" : "escalated-container-handling", + "description" : "${escalated-container-handling}", + "composite" : true, + "composites" : { + "realm" : [ "create-container", "delete-container" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "b0bc8649-7d84-4dd3-84f0-7f174425babe", + "name" : "list-tables", + "description" : "${list-tables}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "bfd85d9c-2772-4660-a8f0-cdc0cd8252b3", + "name" : "default-database-handling", + "description" : "${default-database-handling}", + "composite" : true, + "composites" : { + "realm" : [ "modify-database-image", "modify-database-owner", "update-database-access", "create-database", "list-databases", "create-database-access", "find-database", "modify-database-visibility", "import-database-data", "delete-database-access", "check-database-access" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "74648f9a-777e-4ef9-b97b-4c5d749d862f", + "name" : "update-search-index", + "description" : "${update-search-index}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "22492b64-c633-48a0-9678-b28669f2885b", + "name" : "execute-semantic-query", + "description" : "${execute-semantic-query}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "4ed919fa-edc5-44e5-9411-607786e4a86d", + "name" : "view-table-history", + "description" : "${view-table-history}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d89a2881-b642-4abb-b990-196e71372f6b", + "name" : "default-table-handling", + "description" : "${default-table-handling}", + "composite" : true, + "composites" : { + "realm" : [ "modify-table-column-semantics", "list-tables", "update-table-statistic", "find-table", "create-table", "delete-table" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "b0d66d3d-59b4-4aae-aa66-e3d5a49f28e3", + "name" : "view-database-view-data", + "description" : "${view-database-view-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "f5ea431a-9b2c-4195-bcb4-9511f38e4b44", + "name" : "create-database-view", + "description" : "${create-database-view}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a5ffc20e-8b11-498c-9f3b-b5740aec24c7", + "name" : "default-semantics-handling", + "description" : "${default-semantics-handling}", + "composite" : true, + "composites" : { + "realm" : [ "create-semantic-unit", "create-semantic-concept", "execute-semantic-query", "table-semantic-analyse" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "fe4a01f3-6590-4df6-9ade-5a9c1fae4736", + "name" : "create-semantic-unit", + "description" : "${create-semantic-unit}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "0e12eedf-545d-4d32-ac4d-2821dcb118b8", + "name" : "update-table-statistic", + "description" : "${update-table-statistic}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e63e61a2-d852-4ad3-bfb5-92d9ceafef6a", + "name" : "escalated-user-handling", + "description" : "${escalated-user-handling}", + "composite" : true, + "composites" : { + "realm" : [ "find-user" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "be4e1aba-e276-4241-b6ea-01dce6c52f8b", + "name" : "find-container", + "description" : "${find-container}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "3a801b48-f3c2-4bc6-aa25-c7a91d5b32a7", + "name" : "default-researcher-roles", + "description" : "${default-researcher-roles}", + "composite" : true, + "composites" : { + "realm" : [ "default-table-handling", "default-semantics-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-broker-handling", "default-identifier-handling" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "3d8104fb-8307-40f0-b4b2-c3e518957110", + "name" : "view-table-data", + "description" : "${view-table-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "fe71b907-7020-44ab-9964-da2b87264582", + "name" : "create-database", + "description" : "${create-database}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e51b63c2-48dd-4bd6-95fb-d257d21b26ba", + "name" : "import-database-data", + "description" : "${import-database-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "1f0a9b13-c2b8-474c-bc08-59dbd71835a6", + "name" : "modify-database-image", + "description" : "${modify-database-image}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a7ad038c-5c06-42fc-951c-15ac09d4df66", + "name" : "modify-database-owner", + "description" : "${modify-database-owner}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "c12c1f4e-186f-4153-a795-26e79fb623d6", + "name" : "create-ontology", + "description" : "${create-ontology}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "b60a5694-4099-4f7d-a7e9-4c433e0eb9c9", + "name" : "update-semantic-unit", + "description" : "${update-semantic-unit}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e9854bbb-4580-4757-b1ae-305934173249", + "name" : "create-database-access", + "description" : "${create-database-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "50c604c1-7c6e-43f3-9c43-2398f5eff66e", + "name" : "list-databases", + "description" : "${list-databases}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "535f1484-4514-4d24-8d97-e3f6c11a426b", + "name" : "create-container", + "description" : "${create-container}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "f4116230-8642-4bb7-bbc8-db9c5c07b558", + "name" : "create-maintenance-message", + "description" : "${create-maintenance-message}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "973f0999-cc70-4b28-9f43-979c470bea8e", + "name" : "default-data-steward-roles", + "description" : "${default-data-steward-roles}", + "composite" : true, + "composites" : { + "realm" : [ "escalated-identifier-handling", "default-semantics-handling", "escalated-semantics-handling", "default-user-handling" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e1383fb7-d54c-4732-9146-93030eb2ca50", + "name" : "escalated-query-handling", + "description" : "${escalated-query-handling}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "993b5c69-9eb2-42af-ac28-b4a46c6b61f2", + "name" : "find-user", + "description" : "${find-user}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e4cfdc4d-2373-477b-a8df-161db99aba00", + "name" : "create-foreign-identifier", + "description" : "${create-foreign-identifier}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "6a5872a5-2b51-415d-ae2d-25a6db4a35df", + "name" : "escalated-semantics-handling", + "description" : "${escalated-semantics-handling}", + "composite" : true, + "composites" : { + "realm" : [ "update-semantic-unit", "create-ontology", "update-ontology", "list-ontologies", "delete-ontology", "modify-foreign-table-column-semantics", "update-semantic-concept" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "09147c48-273b-450b-8b11-7ef9b9245244", + "name" : "export-table-data", + "description" : "${export-table-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d14af590-60a8-4d75-b864-40ee0165bd7f", + "name" : "delete-database-access", + "description" : "${delete-database-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "be051d45-cd74-4b13-8a45-f2d3351bd995", + "name" : "table-semantic-analyse", + "description" : "${table-semantic-analyse}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "272a79a7-e282-4261-8f7d-5d5d1364243a", + "name" : "update-maintenance-message", + "description" : "${update-maintenance-message}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "64c16bfb-2015-48ad-a23f-637ff24419cb", + "name" : "default-query-handling", + "description" : "${default-query-handling}", + "composite" : true, + "composites" : { + "realm" : [ "delete-database-view", "export-query-data", "execute-query", "delete-table-data", "export-table-data", "list-queries", "find-query", "list-database-views", "persist-query", "view-table-data", "re-execute-query", "view-table-history", "create-database-view", "find-database-view", "insert-table-data" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "c047d521-cec3-4444-86c4-aef098489b7b", + "name" : "delete-maintenance-message", + "description" : "${delete-maintenance-message}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "88f82262-be80-4d18-9fb4-5529da031f33", + "name" : "system", + "description" : "${system}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e14ab76b-1c24-484d-ae2d-478b8457edea", + "name" : "list-licenses", + "description" : "${list-licenses}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d4f29937-3ca0-41e9-9786-2b7b921b6cdd", + "name" : "modify-foreign-table-column-semantics", + "description" : "${modify-foreign-table-column-semantics}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "8eda9f5c-938c-4915-bed5-6a81a1de15a8", + "name" : "list-database-views", + "description" : "${list-database-views}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "b372f8f7-d203-4293-b991-ad93fb505917", + "name" : "escalated-database-handling", + "description" : "${escalated-database-handling}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "abd2d9ee-ebc4-4d0a-839e-6b588a6d442a", + "name" : "default-roles-dbrepo", + "description" : "${role_default-roles}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "3293799a-82b9-4f47-8f25-1aad2e0222fd", + "name" : "find-identifier", + "description" : "${find-identifier}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "aaa3f804-38a0-4474-b8e9-f1020c4b3f62", + "name" : "list-queries", + "description" : "${list-queries}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "76e38f7b-99bf-4d12-8d74-1c7d8812f443", + "name" : "update-ontology", + "description" : "${update-ontology}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "11f7973e-d1eb-42cb-a35d-c59dfc122775", + "name" : "modify-user-theme", + "description" : "${modify-user-theme}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "f392bfcb-0be5-4fad-9ce4-8ac6396f176d", + "name" : "export-query-data", + "description" : "${export-query-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "da493b7e-fb9b-43ca-82a5-e274ad2e6b39", + "name" : "find-query", + "description" : "${find-query}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a4d4a788-ebcf-4d32-baed-4a85616ca037", + "name" : "escalated-identifier-handling", + "description" : "${escalated-identifier-handling}", + "composite" : true, + "composites" : { + "realm" : [ "create-foreign-identifier", "modify-identifier-metadata" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "ea38d69d-17b8-4c65-95e8-1c3501b83618", + "name" : "default-container-handling", + "description" : "${default-container-handling}", + "composite" : true, + "composites" : { + "realm" : [ "find-container", "list-containers" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "8b8813e0-af07-4d04-a8c1-e3f37192bace", + "name" : "publish-identifier", + "description" : "${publish-identifier}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "47f5eee7-9821-4bf8-b434-0da1f81c3e5a", + "name" : "default-broker-handling", + "description" : "${default-broker-handling}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "71874bde-64a5-4a69-8685-d8998303a80c", + "name" : "delete-table-data", + "description" : "${delete-table-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "7c0306fc-3b03-4c64-87d1-9a34f2073977", + "name" : "modify-table-column-semantics", + "description" : "${modify-table-column-semantics}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "cd0ee04c-4a5e-4035-a11b-f6a1165f7829", + "name" : "delete-container", + "description" : "${delete-container}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "67ee39c0-d601-4a67-a0fe-c4f0021d557e", + "name" : "list-containers", + "description" : "${list-containers}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "795c7bb8-3502-414a-a97b-2ba1cfd6a79c", + "name" : "persist-query", + "description" : "${persist-query}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d05e7698-ddf5-4f20-9027-771afb2cc3c7", + "name" : "list-identifiers", + "description" : "${list-identifiers}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e4bfaf36-9a5d-43e0-9fa3-0f4ea7bad8d0", + "name" : "default-developer-roles", + "description" : "${default-developer-roles}", + "composite" : true, + "composites" : { + "realm" : [ "escalated-query-handling", "escalated-broker-handling", "default-table-handling", "escalated-database-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-maintenance-handling", "escalated-container-handling", "escalated-table-handling", "default-identifier-handling" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "e2cb054e-ea41-4ab0-881b-e6f576f7424e", + "name" : "create-semantic-concept", + "description" : "${create-semantic-concept}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "feb612cc-96a6-4ed2-aaa5-01f39b25beb5", + "name" : "insert-table-data", + "description" : "${insert-table-data}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a0942e33-441b-4343-9f02-4353d03f7bbb", + "name" : "find-database", + "description" : "${find-database}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "6a0bb740-4448-49be-aee8-6dd183325be5", + "name" : "delete-foreign-table", + "description" : "${delete-foreign-table}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "7f3652c7-3073-4566-ab63-25385495ebc3", + "name" : "modify-database-visibility", + "description" : "${modify-database-visibility}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "4a5df51d-f14d-41a2-ad70-6521df5a5b4f", + "name" : "offline_access", + "description" : "${role_offline-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "fd41c4c3-d2f8-4f49-84c7-dba84e9a5575", + "name" : "execute-query", + "description" : "${execute-query}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "2963c2bb-b129-4224-b98f-c8eeab8e72d1", + "name" : "create-table", + "description" : "${create-table}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "0c487c93-448f-4a82-8b9f-ebd8a0904bf8", + "name" : "find-foreign-user", + "description" : "${find-foreign-user}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "cf9735a9-fb70-4cc5-b5f4-75afc4e5654b", + "name" : "modify-identifier-metadata", + "description" : "${modify-identifier-metadata}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "64c2b8f2-1527-4928-81ea-b2651512d028", + "name" : "delete-ontology", + "description" : "${delete-ontology}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d6e38368-b40f-423b-82e4-e8aa595237c9", + "name" : "find-maintenance-message", + "description" : "${find-maintenance-message}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "fd1cc463-3e67-49d9-81b8-2cd90c1daa9c", + "name" : "check-database-access", + "description" : "${check-database-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "74013867-e426-46cc-ab98-2f4a9225ad1e", + "name" : "find-table", + "description" : "${find-table}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a2cc60df-d280-46c5-a539-92e2aa249b4a", + "name" : "modify-user-information", + "description" : "${modify-user-information}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "c367241f-b5b5-491f-84d5-07fe1bef3877", + "name" : "default-identifier-handling", + "description" : "${default-identifier-handling}", + "composite" : true, + "composites" : { + "realm" : [ "delete-identifier", "list-identifiers", "create-identifier", "find-identifier", "publish-identifier" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "ba1ad8f2-39aa-487d-987f-645e8a459559", + "name" : "delete-table", + "description" : "${delete-table}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "09f7bdb0-296f-46c8-a3a3-8f9254fb17e4", + "name" : "list-maintenance-messages", + "description" : "${list-maintenance-messages}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "fe3bc45c-61c2-4ece-bcaf-d410dc7de501", + "name" : "update-database-access", + "description" : "${update-database-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "f43e86ed-76de-4ca8-9b5e-c292c9359bfe", + "name" : "escalated-broker-handling", + "description" : "${escalated-broker-handling}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "916b1e65-f60c-42cd-96e4-5c98ffc1ba3c", + "name" : "uma_authorization", + "description" : "${role_uma_authorization}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "d1afa3ed-bf4f-469a-a061-ad7325fb8d9e", + "name" : "delete-database-view", + "description" : "${delete-database-view}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "6f044bad-6651-4408-bffa-20c2d8f92eee", + "name" : "create-identifier", + "description" : "${create-identifier}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "be91195a-e30a-4d15-a8da-0aca0a68782f", + "name" : "escalated-table-handling", + "description" : "${escalated-table-handling}", + "composite" : true, + "composites" : { + "realm" : [ "delete-foreign-table" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "98bee7d6-d78c-4e7f-b6a3-3705968b248c", + "name" : "list-ontologies", + "description" : "${list-ontologies}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "15720c6b-027d-4d53-a0ff-0124bfab7c4c", + "name" : "re-execute-query", + "description" : "${re-execute-query}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "a9b5181a-8135-41d3-9862-ef80af42211d", + "name" : "delete-identifier", + "description" : "${delete-identifier}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + }, { + "id" : "469c2e63-cda6-48d4-ab8f-eb59a2c69798", + "name" : "find-database-view", + "description" : "${find-database-view}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } + } ], + "client" : { + "realm-management" : [ { + "id" : "4628f654-f8f3-483b-8f92-2a7fc5930b14", + "name" : "query-realms", + "description" : "${role_query-realms}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "95c2cc47-12f5-4d73-8b74-67e270c45ade", + "name" : "manage-authorization", + "description" : "${role_manage-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "824791f3-c345-42f8-b103-b7e6d7e40114", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "1f840202-b7e2-4195-bac9-64e64dad2037", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "3c32c096-bb13-44c9-a080-d756a48a9ea3", + "name" : "query-clients", + "description" : "${role_query-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "e4b85a68-7f31-4fcf-89a2-f10d7df358e9", + "name" : "view-authorization", + "description" : "${role_view-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "7d317752-ae56-46f2-a2ce-67c64d1b35f6", + "name" : "view-users", + "description" : "${role_view-users}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-users", "query-groups" ] + } + }, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "28824208-976e-4622-b4d7-3d18efbb46fa", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-realms", "view-identity-providers", "manage-identity-providers", "manage-authorization", "query-clients", "view-authorization", "view-users", "manage-users", "view-realm", "query-users", "view-clients", "query-groups", "create-client", "manage-clients", "manage-events", "impersonation", "view-events", "manage-realm" ] + } + }, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "57e846a2-930d-4621-819d-c35086507146", + "name" : "manage-users", + "description" : "${role_manage-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "7fad9cde-bf96-475a-9174-14a87da51f95", + "name" : "view-realm", + "description" : "${role_view-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "bbcac294-d78a-4ea1-a4bf-0384266d2fe1", + "name" : "query-users", + "description" : "${role_query-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "480e1437-ab9e-47de-b47a-edc6b6e285de", + "name" : "view-clients", + "description" : "${role_view-clients}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-clients" ] + } + }, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "b9a9a8f5-f91e-4e73-9e88-1cdf42bd49f9", + "name" : "create-client", + "description" : "${role_create-client}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "4d1397fb-247c-436f-b26f-124cd89afb08", + "name" : "query-groups", + "description" : "${role_query-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "e31f522b-b283-4ae1-b875-52afcd98b1d2", + "name" : "impersonation", + "description" : "${role_impersonation}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "51822d02-fa28-4a49-89da-bc534719d8a8", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "b2743ce5-0ce8-4157-ae00-f693560f0b39", + "name" : "manage-events", + "description" : "${role_manage-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "7ea3d7e0-9bf4-438a-b773-243daf622aaa", + "name" : "view-events", + "description" : "${role_view-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + }, { + "id" : "fb73f6f5-0ed5-41d0-852c-0eb3b195b15a", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "attributes" : { } + } ], + "security-admin-console" : [ ], + "dbrepo-client" : [ ], + "admin-cli" : [ ], + "rabbitmq-client" : [ ], + "account-console" : [ ], + "broker" : [ { + "id" : "de0cfd5e-c2fe-4082-ac39-e3b092139a0f", + "name" : "read-token", + "description" : "${role_read-token}", + "composite" : false, + "clientRole" : true, + "containerId" : "88694c91-753d-4c44-9740-ec9ac06bba45", + "attributes" : { } + } ], + "account" : [ { + "id" : "acd78c04-eefc-4344-a5b4-3fc83d848936", + "name" : "delete-account", + "description" : "${role_delete-account}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "939be844-8c49-45b3-9ca1-4b10a454b346", + "name" : "view-profile", + "description" : "${role_view-profile}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "e52fdf00-3e73-4c17-bc1c-643493710a6b", + "name" : "view-applications", + "description" : "${role_view-applications}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "b02a822e-a708-420a-bddc-1a315033fd7c", + "name" : "view-consent", + "description" : "${role_view-consent}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "c590e5f5-2cbf-4151-b1dc-96c454f1f654", + "name" : "view-groups", + "description" : "${role_view-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "15974151-6c13-426b-8cc3-7683dd1311e1", + "name" : "manage-account-links", + "description" : "${role_manage-account-links}", + "composite" : false, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "c12d8d94-c2df-498e-bbe4-2f934a83ae92", + "name" : "manage-consent", + "description" : "${role_manage-consent}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "view-consent" ] + } + }, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + }, { + "id" : "55f85811-bded-4d6b-8f7b-45844b963875", + "name" : "manage-account", + "description" : "${role_manage-account}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "manage-account-links" ] + } + }, + "clientRole" : true, + "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "attributes" : { } + } ] + } + }, + "groups" : [ { + "id" : "f2ce17fe-7b15-47a4-bbf8-86f415298fa9", + "name" : "data-stewards", + "path" : "/data-stewards", + "subGroups" : [ ], + "attributes" : { }, + "realmRoles" : [ "default-data-steward-roles" ], + "clientRoles" : { } + }, { + "id" : "124d9888-0b6e-46aa-8225-077dcedaf16e", + "name" : "developers", + "path" : "/developers", + "subGroups" : [ ], + "attributes" : { }, + "realmRoles" : [ "default-developer-roles" ], + "clientRoles" : { } + }, { + "id" : "f467c38e-9041-4faa-ae0b-39cec65ff4db", + "name" : "researchers", + "path" : "/researchers", + "subGroups" : [ ], + "attributes" : { }, + "realmRoles" : [ "default-researcher-roles" ], + "clientRoles" : { } + }, { + "id" : "2b9f94b4-d434-4a98-8eab-25678cfee983", + "name" : "system", + "path" : "/system", + "subGroups" : [ ], + "attributes" : { }, + "realmRoles" : [ "default-system-roles" ], + "clientRoles" : { } + } ], + "defaultRole" : { + "id" : "abd2d9ee-ebc4-4d0a-839e-6b588a6d442a", + "name" : "default-roles-dbrepo", + "description" : "${role_default-roles}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0" + }, + "defaultGroups" : [ "/researchers" ], + "requiredCredentials" : [ "password" ], + "otpPolicyType" : "totp", + "otpPolicyAlgorithm" : "HmacSHA1", + "otpPolicyInitialCounter" : 0, + "otpPolicyDigits" : 6, + "otpPolicyLookAheadWindow" : 1, + "otpPolicyPeriod" : 30, + "otpPolicyCodeReusable" : false, + "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], + "localizationTexts" : { }, + "webAuthnPolicyRpEntityName" : "keycloak", + "webAuthnPolicySignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyRpId" : "", + "webAuthnPolicyAttestationConveyancePreference" : "not specified", + "webAuthnPolicyAuthenticatorAttachment" : "not specified", + "webAuthnPolicyRequireResidentKey" : "not specified", + "webAuthnPolicyUserVerificationRequirement" : "not specified", + "webAuthnPolicyCreateTimeout" : 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyAcceptableAaguids" : [ ], + "webAuthnPolicyExtraOrigins" : [ ], + "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyPasswordlessRpId" : "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", + "webAuthnPolicyPasswordlessCreateTimeout" : 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], + "webAuthnPolicyPasswordlessExtraOrigins" : [ ], + "scopeMappings" : [ { + "clientScope" : "rabbitmq.tag:administrator", + "roles" : [ "escalated-broker-handling" ] + }, { + "clientScope" : "rabbitmq.tag:management", + "roles" : [ "default-broker-handling" ] + } ], + "clientScopeMappings" : { + "account" : [ { + "client" : "account-console", + "roles" : [ "manage-account", "view-groups" ] + } ] + }, + "clients" : [ { + "id" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", + "clientId" : "account", + "name" : "${client_account}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/dbrepo/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/dbrepo/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "d3c4a04e-39ce-4549-a34a-11e25774cd96", + "clientId" : "account-console", + "name" : "${client_account-console}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/dbrepo/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/dbrepo/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+", + "pkce.code.challenge.method" : "S256" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "22d90d9c-9881-474c-8dfd-a62c808a9f1c", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "81ef0f59-a5ca-4be4-a1d1-0c32edf1cfd6", + "clientId" : "admin-cli", + "name" : "${client_admin-cli}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : false, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "88694c91-753d-4c44-9740-ec9ac06bba45", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "6b7ef364-4132-4831-b4e2-b6e9e9dc63ee", + "clientId" : "dbrepo-client", + "name" : "${dbrepo-client}", + "description" : "", + "rootUrl" : "", + "adminUrl" : "", + "baseUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG", + "redirectUris" : [ "*" ], + "webOrigins" : [ "*" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : true, + "protocol" : "openid-connect", + "attributes" : { + "oidc.ciba.grant.enabled" : "false", + "client.secret.creation.time" : "1680085365", + "backchannel.logout.session.required" : "true", + "post.logout.redirect.uris" : "*", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "protocolMappers" : [ { + "id" : "da0b27c1-ae2e-4baa-bf78-db233e15c78d", + "name" : "preferred_username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "userinfo.token.claim" : "true" + } + }, { + "id" : "7c94de93-f60f-487b-b4b7-1891c67f74cc", + "name" : "aud", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-hardcoded-claim-mapper", + "consentRequired" : false, + "config" : { + "claim.value" : "dbrepo", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "aud", + "access.tokenResponse.claim" : "false" + } + }, { + "id" : "0b4c644f-0cf0-4794-8395-d5d83009dabe", + "name" : "uid", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "CUSTOM_ID", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "uid", + "jsonType.label" : "String" + } + } ], + "defaultClientScopes" : [ "roles", "attributes" ], + "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] + }, { + "id" : "25741f6b-4867-4138-8238-6345c6ba8702", + "clientId" : "rabbitmq-client", + "name" : "${rabbitmq-client}", + "description" : "", + "rootUrl" : "", + "adminUrl" : "", + "baseUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "secret" : "JEC2FexxrX4N65fLeDGukAl6R3Lc9y0u", + "redirectUris" : [ "*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : true, + "protocol" : "openid-connect", + "attributes" : { + "oidc.ciba.grant.enabled" : "false", + "client.secret.creation.time" : "1680000860", + "backchannel.logout.session.required" : "true", + "post.logout.redirect.uris" : "*", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : -1, + "protocolMappers" : [ { + "id" : "01a937ed-f0e8-4137-80f3-3be3c447f7fb", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "false", + "user.attribute" : "username", + "id.token.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + }, { + "id" : "f1afc22d-f595-403b-ba2e-6ab19d98205e", + "name" : "Audience", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-hardcoded-claim-mapper", + "consentRequired" : false, + "config" : { + "claim.value" : "rabbitmq", + "userinfo.token.claim" : "false", + "id.token.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "aud", + "access.tokenResponse.claim" : "false" + } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "rabbitmq.tag:management" ], + "optionalClientScopes" : [ "rabbitmq.read:*/*", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "roles", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] + }, { + "id" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "f205c451-9524-4380-acc3-947f7ecb6b7c", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "rootUrl" : "${authAdminUrl}", + "baseUrl" : "/admin/dbrepo/console/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/admin/dbrepo/console/*" ], + "webOrigins" : [ "+" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+", + "pkce.code.challenge.method" : "S256" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "c4d54410-3f22-4259-9571-94da2c43b752", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String" + } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + } ], + "clientScopes" : [ { + "id" : "69f4ecf0-4165-49ab-bf0d-38409b15b706", + "name" : "rabbitmq.tag:administrator", + "description" : "administrator", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "7f6e9b44-e2eb-417d-b0fe-db820c9a6564", + "name" : "email", + "description" : "OpenID Connect built-in scope: email", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${emailScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "782819fe-ba5d-4ddb-9f95-cabb69d79c8d", + "name" : "email verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "emailVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email_verified", + "jsonType.label" : "boolean" + } + }, { + "id" : "ca613fc8-bbf2-4240-8b33-a1874f1559f3", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "b9da268f-6745-49dc-a764-3c54e385accc", + "name" : "profile", + "description" : "OpenID Connect built-in scope: profile", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${profileScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "84f0487a-1d7d-470c-9b8e-5835294ae235", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "bbdcdb36-3ec0-443d-b1af-9993d40f0567", + "name" : "gender", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "gender", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "gender", + "jsonType.label" : "String" + } + }, { + "id" : "9faa870b-5491-4ce9-b27d-c9ce07d6a95e", + "name" : "birthdate", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "birthdate", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "birthdate", + "jsonType.label" : "String" + } + }, { + "id" : "f0e3c012-9523-4076-83ae-e466e2d08220", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true", + "userinfo.token.claim" : "true" + } + }, { + "id" : "f757d8ec-e181-429c-9287-9ad0600b061f", + "name" : "profile", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "profile", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "profile", + "jsonType.label" : "String" + } + }, { + "id" : "18cfbf4b-0a8e-45c7-a832-c0f72c92f3f3", + "name" : "updated at", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "updatedAt", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "updated_at", + "jsonType.label" : "long" + } + }, { + "id" : "841ea785-26ab-429a-a420-09ce3948924d", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "bfba13ff-f952-4e89-bbb1-a693fdebfae8", + "name" : "website", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "website", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "website", + "jsonType.label" : "String" + } + }, { + "id" : "475f071d-5149-4379-b928-76482f5f519c", + "name" : "zoneinfo", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "zoneinfo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "zoneinfo", + "jsonType.label" : "String" + } + }, { + "id" : "b8bebfed-b5e9-4604-a0ee-9817f7d439ac", + "name" : "middle name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "middleName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "middle_name", + "jsonType.label" : "String" + } + }, { + "id" : "445232c8-6830-476c-a6f1-8bbef167595a", + "name" : "picture", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "picture", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "picture", + "jsonType.label" : "String" + } + }, { + "id" : "65f2e474-6ede-4872-86e4-e49504dd0f2a", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String" + } + }, { + "id" : "16cd5a27-ccf3-453c-ae1e-8621813ab73c", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "f9efedfc-3388-457c-b10a-1dff4525ff9b", + "name" : "nickname", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "nickname", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "nickname", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "627fa054-08eb-4206-af71-9e838e984b8b", + "name" : "microprofile-jwt", + "description" : "Microprofile - JWT built-in scope", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "e6cc53e5-5d7e-468e-88c8-0737dd3dc759", + "name" : "groups", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "multivalued" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "foo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "groups", + "jsonType.label" : "String" + } + }, { + "id" : "83b4444c-10fc-44e8-a0c0-0c1da1f9bba3", + "name" : "upn", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "upn", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "4122ff9e-ad3c-4142-afc6-9aefdecfc86d", + "name" : "role_list", + "description" : "SAML role list", + "protocol" : "saml", + "attributes" : { + "consent.screen.text" : "${samlRoleListScopeConsentText}", + "display.on.consent.screen" : "true" + }, + "protocolMappers" : [ { + "id" : "bb0747fa-c008-4af3-93be-e7739650ebd5", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + } ] + }, { + "id" : "2e76447d-fbe7-4fa7-a16c-54a381b960ae", + "name" : "rabbitmq.configure:*/*", + "description" : "", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "52aad832-c6c4-49df-8a04-6ad4a406fdfa", + "name" : "phone", + "description" : "OpenID Connect built-in scope: phone", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${phoneScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "dae802fb-9138-408a-b80e-a40eb0f56814", + "name" : "phone number", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "phoneNumber", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number", + "jsonType.label" : "String" + } + }, { + "id" : "feb06a8d-b0eb-4911-8464-368d93f566fa", + "name" : "phone number verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "phoneNumberVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number_verified", + "jsonType.label" : "boolean" + } + } ] + }, { + "id" : "f64d64e8-57ce-4eb2-b99e-9f02fdbd99f9", + "name" : "web-origins", + "description" : "OpenID Connect scope for add allowed web origins to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false", + "consent.screen.text" : "" + }, + "protocolMappers" : [ { + "id" : "c6411e3b-6478-453d-b530-5fe175a4d786", + "name" : "allowed web origins", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-allowed-origins-mapper", + "consentRequired" : false, + "config" : { } + } ] + }, { + "id" : "55341d34-0086-4173-ae61-d9b175b179d8", + "name" : "acr", + "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "58ea3217-0fff-4207-9d08-919f5493b629", + "name" : "acr loa level", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-acr-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "a02c2c38-923c-46ec-9899-321412b388e5", + "name" : "attributes", + "description" : "User Attributes", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + }, + "protocolMappers" : [ { + "id" : "78c461c1-f3f9-4d10-8835-097f13bdcd60", + "name" : "Theme", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "aggregate.attrs" : "false", + "multivalued" : "false", + "userinfo.token.claim" : "true", + "user.attribute" : "theme_dark", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "attributes.theme_dark" + } + } ] + }, { + "id" : "06062e22-89c0-4e1d-a25b-2483903b02d5", + "name" : "rabbitmq.write:*/*", + "description" : "", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "db63e03b-7918-492f-997b-f2dda98f3b39", + "name" : "rabbitmq.tag:management", + "description" : "management", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "210cc792-6c07-45a6-a77e-827cdf3b41ba", + "name" : "offline_access", + "description" : "OpenID Connect built-in scope: offline_access", + "protocol" : "openid-connect", + "attributes" : { + "consent.screen.text" : "${offlineAccessScopeConsentText}", + "display.on.consent.screen" : "true" + } + }, { + "id" : "425abf4a-2ee2-431d-aa92-e373a36fe556", + "name" : "address", + "description" : "OpenID Connect built-in scope: address", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${addressScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "8d4ffe4d-1d01-4ca1-8ff4-44eacca61b30", + "name" : "address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-address-mapper", + "consentRequired" : false, + "config" : { + "user.attribute.formatted" : "formatted", + "user.attribute.country" : "country", + "user.attribute.postal_code" : "postal_code", + "userinfo.token.claim" : "true", + "user.attribute.street" : "street", + "id.token.claim" : "true", + "user.attribute.region" : "region", + "access.token.claim" : "true", + "user.attribute.locality" : "locality" + } + } ] + }, { + "id" : "c96f0b73-ea79-4b46-93ef-d1092297f855", + "name" : "rabbitmq.read:*/*", + "description" : "", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "37f61543-dad7-4a82-8e10-77acdd1eefdc", + "name" : "roles", + "description" : "OpenID Connect scope for add user roles to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${rolesScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "3b6b6914-8ad1-4a71-88ec-444f754aaacb", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + }, { + "id" : "2defedf5-9af3-4531-822c-a879dedcd29d", + "name" : "realm roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "realm_access.roles", + "jsonType.label" : "String", + "multivalued" : "true" + } + }, { + "id" : "a7bd6723-e58e-47f7-95c0-2925ce99283d", + "name" : "client roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-client-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "resource_access.${client_id}.roles", + "jsonType.label" : "String", + "multivalued" : "true" + } + } ] + } ], + "defaultDefaultClientScopes" : [ "rabbitmq.tag:administrator", "rabbitmq.tag:management" ], + "defaultOptionalClientScopes" : [ "rabbitmq.write:*/*", "offline_access", "rabbitmq.configure:*/*", "roles", "role_list", "address", "phone", "acr", "microprofile-jwt", "email", "attributes", "profile", "rabbitmq.read:*/*", "web-origins" ], + "browserSecurityHeaders" : { + "contentSecurityPolicyReportOnly" : "", + "xContentTypeOptions" : "nosniff", + "referrerPolicy" : "no-referrer", + "xRobotsTag" : "none", + "xFrameOptions" : "SAMEORIGIN", + "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection" : "1; mode=block", + "strictTransportSecurity" : "max-age=31536000; includeSubDomains" + }, + "smtpServer" : { }, + "eventsEnabled" : false, + "eventsListeners" : [ "jboss-logging" ], + "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], + "adminEventsEnabled" : false, + "adminEventsDetailsEnabled" : false, + "identityProviders" : [ ], + "identityProviderMappers" : [ ], + "components" : { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { + "id" : "4d3f9f14-f5d2-4b0c-8ea7-e6d078aa2191", + "name" : "Max Clients Limit", + "providerId" : "max-clients", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "max-clients" : [ "200" ] + } + }, { + "id" : "f35bce67-1e75-408b-b065-52183368d4fd", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "0efa669d-1017-4b4a-82e1-c2eaf72de2c9", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "528fb423-d66e-472e-9120-1f03ba9e0f18", + "name" : "Consent Required", + "providerId" : "consent-required", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "3ab11d74-5e76-408a-b85a-26bf8950f979", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] + } + }, { + "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", + "name" : "Trusted Hosts", + "providerId" : "trusted-hosts", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "host-sending-registration-request-must-match" : [ "true" ], + "client-uris-must-match" : [ "true" ] + } + }, { + "id" : "f565cb47-3bcf-4078-8f94-eb4179c375b8", + "name" : "Full Scope Disabled", + "providerId" : "scope", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "104ec5a9-025b-4c44-8ac0-82d22887ca3e", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper" ] + } + } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "fb763636-e1ea-49c7-adca-ea105cdec4ad", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] + } + } ], + "org.keycloak.keys.KeyProvider" : [ { + "id" : "2f53ccf3-37b0-4d34-83e7-ed497499ee51", + "name" : "rsa-enc-generated", + "providerId" : "rsa-enc-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEowIBAAKCAQEA3b1tNLfcjFLUw9UShVDNf+ZD8sQqb4YBaIXcSJTX/zDQUPiCp176BBGI3s4VplDArnOW+LumozmKogeoHEnGEIDW8ovgK5uMU9tSA2p0qqGBUMOdR8YATTIfCJe7qGiiuGa3WZy3sQLM70SuRzx02YU8gvUcvl2Js4KyqAziOUX/w3Wa59H9jjGNUXYyqaPWJp73eHzbVYWySzyLG22mVlcUtBx5siL5T2/Xu0p9z4l7/bapwwmOVi1ZrcHjbEAwdGEiSMGI/uWqAF+r1BRpmJLR7HNXcL3eK4/56VYLaiwSejfyYeRFMITEn/UxGYhcXZ5xMUUCG0TxjBhLYpTBuwIDAQABAoIBAA4dwebcxkrH99Poa8+WkiE7JgaS9sahx9OBI2xwJANoIU2TpzGuNLQZ76uLgB+rPWZTD9Xm5a1iJjwOyQ9/937TzPCk91D0tpgcusRikb8jx/6TGB9acL4kBjYUVCCHr3BA2G75MKKGtJ2OMvAbCQSosZj+r2VDwYFEPUkV2jheE5JHSBkwyIRrus3JCwu8gu5fyCg9z8ljcxJxI5HIsi4v8Z21aCw/cLj7h5cMt44wCjQz4rOfYNBEFeHDtlfR1QtWKgjm4ZHHJbKrzf9b2kQXclziceEbSM0tYbROEXKi+s0Zc+z3HEG89vv0vfN400clmzzIAijKY6gg3pPRWdECgYEA+lnWYbSlXDMNYx6RBXm1RnlMUYIm4oy4/9ljgnoGJ6WCn3SjFkgaDtiKfGIG1BSB85r04pAPANgcWHf5tWDnq0ARvBVG0BX2bKd++7B3D4d3CRYKCwm88SslJXv9dfHVhq4+zViFPiUWwT20A72jCuUCvL88y5fh/YBecfdh+jECgYEA4r5RD0NB9dMaeg5/jk/GEHIo4Z9KLc6FrSoOFo2xFkPOy1sgDpDOiNtypuWvniO7k7Ose3DS3hlfTMsKzIW/CgQJ20+Y4cvBWDaOsRxfjj7w3d+jH5OSJdKKSzTrgLKc9ZhlRzVXy0J0hipIA6HG5kdVdLXmh85ITmf1CbJhE6sCgYBjPVeBNbXTHZ2x6/z62aslO5IoQVqetb/kE82hfDOSZcao5Ph9Lam+ttH2ynkAevykj4mBgi+gWwqpey2uW7KaLPSaxShj9kDQA3mP1fzsV/u0y1rB02Nlin/YIxVvOqU1FT9p8SwoXVVu1sHUNck62VtDbN9xqUx5S/ikXrclEQKBgQCoTssOwEcK+Vty9KYcdfy4onTUHZBLdjxl8Iyqkxy7QTQUYRznkvesQPDXEDGO+kk3dyx2KKZt9Hl4IFNww2quPZcvcuMx4DQxjbXXpA8OIIxcta95NepLJwA+mRai3nKCH1A2TlNP7pFeMa5o+8IPly3Ix2lKr4Wepa4PN5i1pwKBgCZ1QP6XAOERl9NznNmU0rXVcvYNP4PIIfQWfvGsldZ4QKkmjjAGiS0/oYqdWs+UDRZyCRChaVjDXO9fk0PEG5OGKAj9nyiYCT/M8xtJ3UeP5ffZZvJ/vnye3QdDIo1e38ZzsWwJHmLYw7fRqY9W5Vxo0Vsy22U3CJY70KTxVdTy" ], + "keyUse" : [ "ENC" ], + "certificate" : [ "MIICmzCCAYMCBgGG3GWycDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdvW00t9yMUtTD1RKFUM1/5kPyxCpvhgFohdxIlNf/MNBQ+IKnXvoEEYjezhWmUMCuc5b4u6ajOYqiB6gcScYQgNbyi+Arm4xT21IDanSqoYFQw51HxgBNMh8Il7uoaKK4ZrdZnLexAszvRK5HPHTZhTyC9Ry+XYmzgrKoDOI5Rf/DdZrn0f2OMY1RdjKpo9Ymnvd4fNtVhbJLPIsbbaZWVxS0HHmyIvlPb9e7Sn3PiXv9tqnDCY5WLVmtweNsQDB0YSJIwYj+5aoAX6vUFGmYktHsc1dwvd4rj/npVgtqLBJ6N/Jh5EUwhMSf9TEZiFxdnnExRQIbRPGMGEtilMG7AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAK3kQ1VkQrzvSWvmXmazmNoA1ZiPzRDs1XhGUWxgsxzgPylr3dGBuqQbKvgnLUBQLSqlJHpI4fZflHswu1qrvVZYtekPcGef4WhcKAu2i1RwxrKa6RJQ1tRbrLuVYCzPv5p/DWgltWVn88aoLnqQn0SK/0PB/o4a4Cm7Kq2ZzCr1dACBr06LvOHsc7249OySmbG4HH+pLK6jVURhZ9VaObqAHe2FJBVVoIzURbdiRRURqumrIvbnpeaU1aFyg6ED5wTnXvmMPmVPt9F79mcB33bASO5wyu00X8t1hyN2Show2l2vxLACGUzVkTQt15s7uDLKE7qLmKSR3EuSGXWv3wA=" ], + "priority" : [ "100" ], + "algorithm" : [ "RSA-OAEP" ] + } + }, { + "id" : "230cb681-9ceb-4b1b-8a4c-929a11b08de0", + "name" : "hmac-generated-hs512", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "8a489935-9a95-459b-9059-59b438ef0fa8" ], + "secret" : [ "xSCVgBlrLPWoF54gKQdR7BqXlfNaCD43xtS_ZgQRC0tGNAbqhy2Q9y8LdD2IR7K__8VGaDGYtyZayopgTebhDBb4gHDjDOBX7flhFYRrm0G3aTIuCIyFG-bPULwmyP_oHeC6tjwdQhqx5G0tE2mQQqPC9dDZuUA5I7QREIGK8cI" ], + "priority" : [ "100" ], + "algorithm" : [ "HS512" ] + } + }, { + "id" : "28ca0b6d-b2e2-4785-b04b-2391e6344e30", + "name" : "aes-generated", + "providerId" : "aes-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "6dc4834f-a1de-4cfe-a29d-e84ac8e9b1a8" ], + "secret" : [ "HpuzG_jWYKwypLeoPEMC4A" ], + "priority" : [ "100" ] + } + }, { + "id" : "bd7945cf-6d35-4e03-9c3a-197f2dc76973", + "name" : "hmac-generated", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "5034d264-cb50-4006-a59e-2ce636eb5f38" ], + "secret" : [ "ToVIw-a4IE-Yp9JpP8ztb8NAICYO8CT3tUiDPT6DdiBcgzKJ9Ym9vspxGVdmPceX3mAgbnGLAcTx1PkInSVrbZs-tX9QXFwdlyGbewhKiNpH8wEg32Wk4GuUDpTv8JCsymgWyQBY681jvIMv05eCoK2QWpqCzcgP828KM5peCzo" ], + "priority" : [ "100" ], + "algorithm" : [ "HS256" ] + } + }, { + "id" : "2293ff99-3c6d-46d1-8635-5e679d5b134a", + "name" : "rsa-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEpAIBAAKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQABAoIBADNcMt6hAHub4JTAYS6Mra0EPRBO2XhWmACBrv3+8ETClXd5475KPLDewgRVtlmtbwU8G8awUXESQgPS9lfiqvQhPreA3cHlm6oP2WMKOEtakr2s8I+frsTBLCo0Ini9RaSzjoVVgS0zofyhASKi+T970MafSj5P3XNb8YBFdXgoYDiA7FXLH6a/+m7LScL+wGcFMAAeYESxZbMQLfH3v8L+4EcTraiwjLG17ZdlF3dpybMyUSse6ZQ/PdlyvBuzzLXhN6Ce2gd9ATfS+YWTzo7Yf+GU+ex5bIpVOfHqtuM/hyq7YGKENClsXwNZIAoFnvGCbvECAfgyapVrD30IfykCgYEA0rgsSZ82pxT40NxwgBD1g9lbNVBKXphRB/3S078qusUzJjT7AldEj4imGPhAbI7bI8gAeWJsp1XJWkjM8ktaVrh+NQl7p8e9OPh0pQF/5Bdg8ajbjXESpjnaU66pVYRQy/d+jNli/YRAHX5RUfsBl+6W4+WSVMGmKBiqJsur+ecCgYEAz1YVXClcmUnyZem5B+2E9noIzjF6ROE+jIb6rawM85P3Xd0lXtECQavtxw+Qk7I32qOwrxl1UpK2foVel3pazi+4OpMfmqtYGenRP1Zk1cZwrDo0cIemTDGjj3kJ8tYn12CGolFQpJZgK6OHzvG0tOxI5VZgjIViWNPe1PGWXtUCgYEAxXGNDe8BZs1f11S2lUlOw5yGug3hoYFXbAWJ5p7Ziuf8ZXB/QlJDC7se54a11wKEk6Jzz0lKRgE8CjzszJuOqnN0zn10QGIIC7nCklo1W6QMUmPGVWH994N976tZP6gbjQL6sT+AYcvpx7j0ubxYYeRNvnz+ACzzY964kGGHY0ECgYEAumlwPPNnMN7+VEjGNm2D7UMdJZ3wi3tkjF5ThdA5uMohTsAk+FG80KSu3RmOaGyEsUwY7+VYyYvlDm4E9PZqLBVVczyR3rMNPAcwPd0EPfvzk7WlLkOX7ct3fehaXH3VRlyfz9KCSeh1wOZ/lT1VtpD2nVOC7PSDzs92+kfXZZ0CgYAnrD1y4skgXkdwolZ3unn3EFyGm2d+X5aMTHwQPdWxqoNIAl/9wdghlzihwnPhhsxq1WzlxuC3V2IMrNPtRx70Mi+FbSmR5m4Xx5RptgMtMlwno+L40PzNJgMjHGjt0wcx3Vel8wuohDtnqMyS7P5nG1/TQx0Cyzwn7QOXlNpgbQ==" ], + "keyUse" : [ "SIG" ], + "certificate" : [ "MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk=" ], + "priority" : [ "100" ] + } + } ] + }, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "id" : "88e5d526-2298-413c-a904-133ad839d47f", + "alias" : "Account verification options", + "description" : "Method with which to verity the existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-email-verification", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Verify Existing Account by Re-authentication", + "userSetupAllowed" : false + } ] + }, { + "id" : "a690c715-fbae-4c20-b680-bd4010718761", + "alias" : "Browser - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "ad6d407e-c73e-4439-baf3-d7c99c6cb6ad", + "alias" : "Direct Grant - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "e5d03405-e10a-408a-adb2-41dbb4f24515", + "alias" : "First broker login - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "96b93843-62d0-44f1-84dd-21cc5f95f523", + "alias" : "Handle Existing Account", + "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-confirm-link", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Account verification options", + "userSetupAllowed" : false + } ] + }, { + "id" : "088f4051-36ab-4952-a4f2-4ba53c408083", + "alias" : "Reset - Conditional OTP", + "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "05f37bb2-779d-4e3f-ad1b-f6eb33bb3de4", + "alias" : "User creation or linking", + "description" : "Flow for the existing/non-existing user alternatives", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "create unique user config", + "authenticator" : "idp-create-user-if-unique", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Handle Existing Account", + "userSetupAllowed" : false + } ] + }, { + "id" : "300a5647-7d2c-4348-9f1f-51504bfda1c4", + "alias" : "Verify Existing Account by Re-authentication", + "description" : "Reauthentication of existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "First broker login - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "26afc672-314b-4ad9-9711-7aaeafd7c00c", + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-spnego", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "identity-provider-redirector", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 25, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "forms", + "userSetupAllowed" : false + } ] + }, { + "id" : "9b301f6c-eda7-4da0-ba09-1a6454ff910d", + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-secret-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-x509", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 40, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "6e54f1be-dbad-4b6d-8eee-8e048d413c63", + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "Direct Grant - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "31da4b94-03c4-4d79-9ac3-5df1445c0781", + "alias" : "docker auth", + "description" : "Used by Docker clients to authenticate against the IDP", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "docker-http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "2e16651d-681f-4d9b-9dd4-9acdb465cd43", + "alias" : "first broker login", + "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "review profile config", + "authenticator" : "idp-review-profile", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "User creation or linking", + "userSetupAllowed" : false + } ] + }, { + "id" : "da109a26-fefa-48a4-ae8e-1d49627c2db8", + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Browser - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "4c983c77-241f-41c5-8b8a-e2cd6fc08914", + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : true, + "flowAlias" : "registration form", + "userSetupAllowed" : false + } ] + }, { + "id" : "d62c8dd6-633c-408a-aa99-43071510efb4", + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-password-action", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 50, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-recaptcha-action", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 60, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "c8ca5be7-e76d-4e16-b5ca-3ced99d92dbb", + "alias" : "reset credentials", + "description" : "Reset credentials for a user if they forgot their password or something", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "reset-credentials-choose-user", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-credential-email", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 40, + "autheticatorFlow" : true, + "flowAlias" : "Reset - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "389c1c37-e8af-4610-a507-e1257f55b954", + "alias" : "saml ecp", + "description" : "SAML ECP Profile Authentication Flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + } ], + "authenticatorConfig" : [ { + "id" : "d66ca9d0-1645-4c84-abfe-c0a696f17de4", + "alias" : "create unique user config", + "config" : { + "require.password.update.after.registration" : "false" + } + }, { + "id" : "061cc6b8-90be-4423-9bf9-974ead709b5d", + "alias" : "review profile config", + "config" : { + "update.profile.on.first.login" : "missing" + } + } ], + "requiredActions" : [ { + "alias" : "CONFIGURE_TOTP", + "name" : "Configure OTP", + "providerId" : "CONFIGURE_TOTP", + "enabled" : true, + "defaultAction" : false, + "priority" : 10, + "config" : { } + }, { + "alias" : "TERMS_AND_CONDITIONS", + "name" : "Terms and Conditions", + "providerId" : "TERMS_AND_CONDITIONS", + "enabled" : false, + "defaultAction" : false, + "priority" : 20, + "config" : { } + }, { + "alias" : "UPDATE_PASSWORD", + "name" : "Update Password", + "providerId" : "UPDATE_PASSWORD", + "enabled" : false, + "defaultAction" : false, + "priority" : 30, + "config" : { } + }, { + "alias" : "UPDATE_PROFILE", + "name" : "Update Profile", + "providerId" : "UPDATE_PROFILE", + "enabled" : true, + "defaultAction" : false, + "priority" : 40, + "config" : { } + }, { + "alias" : "VERIFY_EMAIL", + "name" : "Verify Email", + "providerId" : "VERIFY_EMAIL", + "enabled" : false, + "defaultAction" : false, + "priority" : 50, + "config" : { } + }, { + "alias" : "delete_account", + "name" : "Delete Account", + "providerId" : "delete_account", + "enabled" : false, + "defaultAction" : false, + "priority" : 60, + "config" : { } + }, { + "alias" : "webauthn-register", + "name" : "Webauthn Register", + "providerId" : "webauthn-register", + "enabled" : true, + "defaultAction" : false, + "priority" : 70, + "config" : { } + }, { + "alias" : "webauthn-register-passwordless", + "name" : "Webauthn Register Passwordless", + "providerId" : "webauthn-register-passwordless", + "enabled" : true, + "defaultAction" : false, + "priority" : 80, + "config" : { } + }, { + "alias" : "delete_credential", + "name" : "Delete Credential", + "providerId" : "delete_credential", + "enabled" : true, + "defaultAction" : false, + "priority" : 100, + "config" : { } + }, { + "alias" : "update_user_locale", + "name" : "Update User Locale", + "providerId" : "update_user_locale", + "enabled" : true, + "defaultAction" : false, + "priority" : 1000, + "config" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients", + "dockerAuthenticationFlow" : "docker auth", + "firstBrokerLoginFlow" : "first broker login", + "attributes" : { + "cibaBackchannelTokenDeliveryMode" : "poll", + "cibaAuthRequestedUserHint" : "login_hint", + "clientOfflineSessionMaxLifespan" : "0", + "oauth2DevicePollingInterval" : "5", + "clientSessionIdleTimeout" : "0", + "actionTokenGeneratedByUserLifespan-execute-actions" : "", + "actionTokenGeneratedByUserLifespan-verify-email" : "", + "clientOfflineSessionIdleTimeout" : "0", + "actionTokenGeneratedByUserLifespan-reset-credentials" : "", + "cibaInterval" : "5", + "realmReusableOtpCode" : "false", + "cibaExpiresIn" : "120", + "oauth2DeviceCodeLifespan" : "600", + "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", + "parRequestUriLifespan" : "60", + "clientSessionMaxLifespan" : "0", + "shortVerificationUri" : "" + }, + "keycloakVersion" : "24.0.5", + "userManagedAccessAllowed" : false, + "clientProfiles" : { + "profiles" : [ ] + }, + "clientPolicies" : { + "policies" : [ ] + } +} \ No newline at end of file diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index c9ce89d1be..173bce7b03 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -6,7 +6,6 @@ CREATE TABLE IF NOT EXISTS `mdb_users` username character varying(255) NOT NULL, firstname character varying(255), lastname character varying(255), - email character varying(255) NOT NULL, orcid character varying(255), affiliation character varying(255), is_internal BOOLEAN NOT NULL DEFAULT FALSE, @@ -14,8 +13,7 @@ CREATE TABLE IF NOT EXISTS `mdb_users` theme character varying(255) NOT NULL default ('light'), language character varying(3) NOT NULL default ('en'), PRIMARY KEY (id), - UNIQUE (username), - UNIQUE (email) + UNIQUE (username) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_images` diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java index a30208bad0..16f45aec4d 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java @@ -1,13 +1,14 @@ package at.tuwien.api.auth; +import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Pattern; import lombok.*; import lombok.extern.jackson.Jacksonized; +import java.util.UUID; + @Getter @Setter @Builder @@ -18,18 +19,28 @@ import lombok.extern.jackson.Jacksonized; @ToString public class CreateUserDto { + @NotNull + @Schema(example = "3b91bc36-3eae-4662-a4be-8993624ab0cb", description = "The user id generated by Keycloak") + private UUID id; + + @NotNull + @JsonProperty("ldap_id") + @Schema(example = "ea022d6d-b4a4-42f3-836f-ff4e596a527a", description = "The user id generated by OpenLDAP") + private UUID ldapId; + @NotBlank - @Pattern(regexp = "^[a-z0-9]{3,}$") @Schema(example = "user") private String username; - @NotBlank - @Email - @Schema(example = "user@example.com") - private String email; + @JsonProperty("given_name") + @Schema(example = "foo") + private String givenName; - @NotNull - @ToString.Exclude - private String password; + @JsonProperty("family_name") + @Schema(example = "bar") + private String familyName; + + @Schema(example = "foo.bar@example.com") + private String email; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java index cd5e8fd3e0..2ab170d616 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java @@ -1,6 +1,5 @@ package at.tuwien.api.user; -import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; @@ -30,10 +29,6 @@ public class UserDetailsDto implements UserDetails { @ToString.Exclude private String password; - @NotNull - @Email - private String email; - @Override public boolean isAccountNonExpired() { return true; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java index fd87852c6e..de3111e5c8 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 @@ -39,9 +39,6 @@ public class User { @Column private String lastname; - @Column(nullable = false) - private String email; - @Column private String orcid; 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 ac6cacf64f..36caa7e9f6 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 @@ -1,6 +1,5 @@ package at.tuwien.mapper; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; import at.tuwien.api.container.CreateContainerDto; @@ -13,14 +12,14 @@ import at.tuwien.api.database.*; import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.columns.ColumnBriefDto; -import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.database.table.columns.CreateTableColumnDto; import at.tuwien.api.database.table.columns.concepts.ConceptDto; import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto; import at.tuwien.api.database.table.columns.concepts.UnitDto; import at.tuwien.api.database.table.columns.concepts.UnitSaveDto; -import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.ConstraintsDto; +import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyBriefDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyReferenceDto; @@ -34,7 +33,6 @@ import at.tuwien.api.identifier.ld.LdDatasetDto; import at.tuwien.api.keycloak.CredentialDto; import at.tuwien.api.keycloak.CredentialTypeDto; import at.tuwien.api.keycloak.UpdateCredentialsDto; -import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.api.maintenance.BannerMessageBriefDto; import at.tuwien.api.maintenance.BannerMessageCreateDto; import at.tuwien.api.maintenance.BannerMessageDto; @@ -756,19 +754,6 @@ public interface MetadataMapper { .build(); } - default UserCreateDto signupRequestDtoToUserCreateDto(CreateUserDto data) { - return UserCreateDto.builder() - .username(data.getUsername()) - .email(data.getEmail()) - .credentials(List.of(CredentialDto.builder() - .type(CredentialTypeDto.PASSWORD) - .temporary(false) - .value(data.getPassword()) - .build())) - .enabled(true) - .build(); - } - /* keep */ UserBriefDto keycloakUserDtoToUserBriefDto(at.tuwien.api.keycloak.UserDto data); diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UserRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UserRepository.java index 7415fb422c..30f2f20c16 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UserRepository.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UserRepository.java @@ -17,7 +17,5 @@ public interface UserRepository extends JpaRepository<User, UUID> { boolean existsByUsername(String username); - boolean existsByEmail(String email); - } diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index ade963c255..d289c097d4 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -1,8 +1,8 @@ package at.tuwien.endpoints; +import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.auth.RefreshTokenRequestDto; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.user.UserBriefDto; @@ -95,10 +95,11 @@ public class UserEndpoint extends AbstractEndpoint { @PostMapping @Transactional(rollbackFor = {Exception.class}) - @PreAuthorize("!isAuthenticated()") + @PreAuthorize("hasAuthority('system')") @Observed(name = "dbrepo_user_create") @Operation(summary = "Create user", - description = "Creates a user in the auth service and metadata database. Requires that no credentials are sent in the request.") + description = "Creates a user in the auth service and metadata database. Requires that no credentials are sent in the request.", + hidden = true) @ApiResponses(value = { @ApiResponse(responseCode = "201", description = "Created user", @@ -142,12 +143,10 @@ public class UserEndpoint extends AbstractEndpoint { public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody CreateUserDto data) throws UserExistsException, EmailExistsException, AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { - log.debug("endpoint create user, data.username={}", data.getUsername()); - userService.validateUsernameNotExists(data.getUsername()); - userService.validateEmailNotExists(data.getEmail()); + log.debug("endpoint create user, data.id={}, data.username={}", data.getId(), data.getUsername()); return ResponseEntity.status(HttpStatus.CREATED) .body(userMapper.userToUserBriefDto( - userService.create(data, authenticationService.create(data).getAttributes().getLdapId()[0]))); + userService.create(data))); } @PostMapping("/token") @@ -170,11 +169,6 @@ public class UserEndpoint extends AbstractEndpoint { content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "404", - description = "Failed to find user in auth database", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), @ApiResponse(responseCode = "428", description = "Account is not fully setup in auth service (requires password change?)", content = {@Content( @@ -185,35 +179,10 @@ public class UserEndpoint extends AbstractEndpoint { content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "503", - description = "Failed to get user in auth service", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<TokenDto> getToken(@NotNull @Valid @RequestBody LoginRequestDto data) - throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException, - AccountNotSetupException { + throws AuthServiceConnectionException, CredentialsInvalidException, AccountNotSetupException { log.debug("endpoint get token, data.username={}", data.getUsername()); - /* check */ - try { - userService.findByUsername(data.getUsername()); - } catch (UserNotFoundException e) { - /* need to sync */ - log.warn("User with username {} does not exist in metadata database yet", data.getUsername()); - final CreateUserDto request = CreateUserDto.builder() - .username(data.getUsername()) - .email("noreply@example.com") - .password(data.getPassword()) - .build(); - final at.tuwien.api.keycloak.UserDto user = authenticationService.findByUsername(data.getUsername()); - if (user.getAttributes().getLdapId() == null || user.getAttributes().getLdapId().length != 1) { - log.error("Failed to map ldap id for user with username: {}", data.getUsername()); - throw new UserNotFoundException("Failed to map ldap id"); - } - userService.create(request, user.getAttributes().getLdapId()[0]); - log.info("Patched missing user information for user with username: {}", data.getUsername()); - } return ResponseEntity.accepted() .body(authenticationService.obtainToken(data)); } @@ -329,8 +298,8 @@ public class UserEndpoint extends AbstractEndpoint { schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<UserBriefDto> modify(@NotNull @PathVariable("userId") UUID userId, - @NotNull @Valid @RequestBody UserUpdateDto data, - @NotNull Principal principal) throws NotAllowedException, + @NotNull @Valid @RequestBody UserUpdateDto data, + @NotNull Principal principal) throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException { log.debug("endpoint modify a user, userId={}, data={}", userId, data); final User user = userService.findById(userId); 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 152c17c461..aa93963b48 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 @@ -1,8 +1,7 @@ package at.tuwien.endpoints; -import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.auth.CreateUserDto; -import at.tuwien.api.keycloak.UserAttributesDto; +import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -17,9 +16,6 @@ import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -34,7 +30,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.security.Principal; import java.util.List; import java.util.UUID; -import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -56,13 +51,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @Autowired private UserEndpoint userEndpoint; - public static Stream<Arguments> getToken_parameters() { - return Stream.of( - Arguments.arguments("null", null), - Arguments.arguments("empty", new UUID[]{}) - ); - } - @BeforeEach public void beforeEach() { genesis(); @@ -104,31 +92,21 @@ public class UserEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser - public void create_anonymous_succeeds() throws UserExistsException, EmailExistsException, UserNotFoundException, + @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME, authorities = {"system"}) + public void create_succeeds() throws UserExistsException, EmailExistsException, UserNotFoundException, AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { - final CreateUserDto request = CreateUserDto.builder() - .email(USER_1_EMAIL) - .username(USER_1_USERNAME) - .password(USER_1_PASSWORD) - .build(); /* test */ - create_generic(request, USER_1, USER_1_KEYCLOAK_DTO, USER_1_ID); + create_generic(USER_1_SIGNUP_REQUEST_DTO, USER_1); } @Test @WithMockUser(username = USER_1_USERNAME) - public void create_isAuthenticated_fails() { - final CreateUserDto request = CreateUserDto.builder() - .email(USER_2_EMAIL) - .username(USER_2_USERNAME) - .password(USER_2_PASSWORD) - .build(); + public void create_noRole_fails() { /* test */ assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { - create_generic(request, null, null, null); + create_generic(USER_1_SIGNUP_REQUEST_DTO, null); }); } @@ -312,50 +290,13 @@ public class UserEndpointUnitTest extends AbstractUnitTest { /* mock */ when(authenticationService.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); - when(userService.create(any(CreateUserDto.class), any(UUID.class))) + when(userService.create(any(CreateUserDto.class))) .thenReturn(USER_1); /* test */ getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, null); } - @Test - @WithAnonymousUser - public void getToken_notExists_fails() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException { - - /* mock */ - doThrow(UserNotFoundException.class) - .when(authenticationService) - .findByUsername(USER_1_USERNAME); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, null); - }); - } - - @ParameterizedTest - @MethodSource("getToken_parameters") - @WithAnonymousUser - public void getToken_missingLdapId_fails(String name, UUID[] ldapId) throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException { - final at.tuwien.api.keycloak.UserDto mock = at.tuwien.api.keycloak.UserDto.builder() - .attributes(UserAttributesDto.builder() - .ldapId(ldapId) - .build()) - .build(); - - /* mock */ - when(authenticationService.findByUsername(USER_1_USERNAME)) - .thenReturn(mock); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, null); - }); - } - @Test @WithAnonymousUser public void refreshToken_anonymous_succeeds() throws AuthServiceConnectionException, CredentialsInvalidException { @@ -445,17 +386,12 @@ public class UserEndpointUnitTest extends AbstractUnitTest { return response.getBody(); } - protected void create_generic(CreateUserDto data, User user, at.tuwien.api.keycloak.UserDto userDto, UUID id) - throws UserExistsException, EmailExistsException, UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException { + protected void create_generic(CreateUserDto data, User user) throws UserExistsException, EmailExistsException, + UserNotFoundException, AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { /* mock */ - when(userService.create(eq(data), any(UUID.class))) + when(userService.create(any(CreateUserDto.class))) .thenReturn(user); - when(authenticationService.findByUsername(data.getUsername())) - .thenReturn(userDto); - when(authenticationService.create(data)) - .thenReturn(userDto); /* test */ final ResponseEntity<UserBriefDto> response = userEndpoint.create(data); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java index bb3bcbb094..fa21bcbec5 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java @@ -1,10 +1,10 @@ package at.tuwien.gateway; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.exception.*; import at.tuwien.gateway.impl.KeycloakGatewayImpl; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -39,73 +39,6 @@ public class KeycloakGatewayUnitTest extends AbstractUnitTest { @Autowired private KeycloakGatewayImpl keycloakGateway; - @Test - public void createUser_succeeds() throws UserExistsException, EmailExistsException, AuthServiceException, - AuthServiceConnectionException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.CREATED) - .build()); - - /* test */ - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); - } - - @Test - public void createUser_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) - .build()); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); - }); - } - - @Test - public void createUser_sameUsername_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.Conflict.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(UserExistsException.class, () -> { - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); - }); - } - - @Test - public void createUser_connection_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpServerErrorException.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); - }); - } - @Test public void deleteUser_fails() { 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 fa0b6f64f7..558935f3b7 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 @@ -4,7 +4,6 @@ import at.tuwien.api.keycloak.TokenDto; import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.CredentialsInvalidException; -import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.DatabaseRepository; import at.tuwien.repository.LicenseRepository; @@ -49,9 +48,6 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest @Autowired private KeycloakUtils keycloakUtils; - @Autowired - private KeycloakGateway keycloakGateway; - @Autowired private UserRepository userRepository; @@ -97,7 +93,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_basicUser_succeeds() throws Exception { /* mock */ - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) @@ -112,7 +108,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_basicAdmin_succeeds() throws Exception { /* pre condition */ - keycloakGateway.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); /* test */ this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD))) @@ -127,7 +123,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_bearerAdmin_succeeds() throws Exception { /* pre condition */ - keycloakGateway.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); final TokenDto jwt = authenticationService.obtainToken(USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO); /* test */ @@ -143,7 +139,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_bearerAdmin_succeeds() throws Exception { /* pre condition */ - keycloakGateway.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); final TokenDto jwt = authenticationService.obtainToken(USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO); @@ -160,7 +156,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_basicUser_succeeds() throws Exception { /* mock */ - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ this.mockMvc.perform(get("/api/database/1/table/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) @@ -175,7 +171,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_basicAdmin_succeeds() throws Exception { /* mock */ - keycloakGateway.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(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))) @@ -190,7 +186,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_view_basicUser_succeeds() throws Exception { /* mock */ - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ this.mockMvc.perform(get("/api/database/1/view/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) @@ -205,7 +201,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_container_basicUser_succeeds() throws Exception { /* mock */ - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); /* test */ this.mockMvc.perform(get("/api/container/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD))) 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 dc41121b90..632affcf91 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 @@ -2,11 +2,13 @@ package at.tuwien.mvc; import at.tuwien.api.auth.RefreshTokenRequestDto; import at.tuwien.api.container.CreateContainerDto; -import at.tuwien.test.AbstractUnitTest; -import at.tuwien.api.database.*; +import at.tuwien.api.database.DatabaseModifyImageDto; +import at.tuwien.api.database.DatabaseModifyVisibilityDto; +import at.tuwien.api.database.DatabaseTransferDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; 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; @@ -32,7 +34,10 @@ 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.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; @@ -619,11 +624,8 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } /* test */ - for (String metric : List.of("dbrepo_user_create", "dbrepo_user_token")) { - assertThat(registry) - .hasObservationWithNameEqualTo(metric); - } - // already done above + assertThat(registry) + .hasObservationWithNameEqualTo("dbrepo_user_token"); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java index fa1cd5d4be..44009e5adc 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java @@ -1,9 +1,10 @@ package at.tuwien.service; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; +import at.tuwien.test.AbstractUnitTest; +import at.tuwien.utils.KeycloakUtils; import dasniko.testcontainers.keycloak.KeycloakContainer; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; @@ -32,6 +33,9 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { @Autowired private KeycloakGateway keycloakGateway; + @Autowired + private KeycloakUtils keycloakUtils; + @BeforeEach public void beforeEach() { genesis(); @@ -60,7 +64,7 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { } catch (Exception e) { /* ignore */ } - keycloakGateway.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); final User request = User.builder() .id(keycloakGateway.findByUsername(USER_1_USERNAME).getId()) .username(USER_1_USERNAME) @@ -70,20 +74,4 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { authenticationService.delete(request); } - @Test - public void create_succeeds() throws EmailExistsException, UserExistsException, - DataServiceConnectionException, AuthServiceException, AuthServiceConnectionException, - CredentialsInvalidException { - - /* mock */ - try { - keycloakGateway.deleteUser(keycloakGateway.findByUsername(USER_1_USERNAME).getId()); - } catch (Exception e) { - /* ignore */ - } - - /* test */ - authenticationService.create(USER_1_SIGNUP_REQUEST_DTO); - } - } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java index 8724e08be1..e3c677c28e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java @@ -1,6 +1,5 @@ package at.tuwien.service; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; @@ -69,14 +68,9 @@ public class UserServicePersistenceTest extends AbstractUnitTest { @Test public void create_succeeds() throws UserExistsException, UserNotFoundException, EmailExistsException { - final CreateUserDto request = CreateUserDto.builder() - .username(USER_2_USERNAME) - .password(USER_2_PASSWORD) - .email(USER_2_EMAIL) - .build(); /* test */ - final User response = userService.create(request, USER_2_ID); + final User response = userService.create(USER_2_SIGNUP_REQUEST_DTO); assertEquals(USER_2_USERNAME, response.getUsername()); } @@ -109,11 +103,7 @@ public class UserServicePersistenceTest extends AbstractUnitTest { .build(); /* mock */ - final User user = userService.create(CreateUserDto.builder() - .username(USER_3_USERNAME) - .password(USER_3_PASSWORD) - .email(USER_3_EMAIL) - .build(), USER_3_ID); + final User user = userService.create(USER_3_SIGNUP_REQUEST_DTO); /* test */ userService.updatePassword(user, request); @@ -151,20 +141,4 @@ public class UserServicePersistenceTest extends AbstractUnitTest { userService.validateUsernameNotExists(USER_1_USERNAME); }); } - - @Test - public void validateEmailNotExists_succeeds() throws EmailExistsException { - - /* test */ - userService.validateEmailNotExists(USER_2_EMAIL); - } - - @Test - public void validateEmailNotExists_fails() { - - /* test */ - assertThrows(EmailExistsException.class, () -> { - userService.validateEmailNotExists(USER_1_EMAIL); - }); - } } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java index a9fe4694cc..d4442c2916 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java @@ -1,10 +1,10 @@ package at.tuwien.service; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; +import at.tuwien.test.AbstractUnitTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -86,14 +86,11 @@ public class UserServiceUnitTest extends AbstractUnitTest { .thenReturn(Optional.of(USER_1)); when(userRepository.save(any(User.class))) .thenReturn(USER_1); - doNothing() - .when(keycloakGateway) - .createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); when(keycloakGateway.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); /* test */ - final User response = userService.create(USER_1_SIGNUP_REQUEST_DTO, USER_1_ID); + final User response = userService.create(USER_1_SIGNUP_REQUEST_DTO); assertEquals(USER_1_ID, response.getId()); assertEquals(USER_1_USERNAME, response.getUsername()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java index f5ad18b694..ba83f3dbc6 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java @@ -1,12 +1,21 @@ package at.tuwien.utils; -import at.tuwien.exception.AuthServiceConnectionException; -import at.tuwien.exception.AuthServiceException; -import at.tuwien.exception.UserNotFoundException; +import at.tuwien.api.auth.KeycloakErrorDto; +import at.tuwien.api.keycloak.UserCreateDto; +import at.tuwien.config.KeycloakConfig; +import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestTemplate; import java.util.UUID; @@ -14,15 +23,46 @@ import java.util.UUID; @Component public class KeycloakUtils { - final static UUID realmId = UUID.fromString("82c39861-d877-4667-a0f3-4daa2ee230e0"); - + private final RestTemplate keycloakRestTemplate; + private final KeycloakConfig keycloakConfig; private final KeycloakGateway keycloakGateway; @Autowired - public KeycloakUtils(KeycloakGateway keycloakGateway) { + public KeycloakUtils(@Qualifier("keycloakRestTemplate") RestTemplate keycloakRestTemplate, KeycloakConfig keycloakConfig, + KeycloakGateway keycloakGateway) { + this.keycloakRestTemplate = keycloakRestTemplate; + this.keycloakConfig = keycloakConfig; this.keycloakGateway = keycloakGateway; } + public void createUser(UserCreateDto data) throws AuthServiceException, AuthServiceConnectionException, + EmailExistsException, UserExistsException { + final String path = "/admin/realms/dbrepo/users"; + log.trace("create user at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); + final ResponseEntity<Void> response; + try { + response = keycloakRestTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(data), Void.class); + } catch (HttpServerErrorException e) { + log.error("Failed to create user: {}", e.getMessage()); + throw new AuthServiceConnectionException("Service unavailable", e); + } catch (HttpClientErrorException.Conflict e) { + if (e.getResponseBodyAsByteArray() != null && e.getResponseBodyAsByteArray().length > 0) { + final KeycloakErrorDto error = e.getResponseBodyAs(KeycloakErrorDto.class); + if (error != null && error.getErrorMessage().contains("same email")) { + log.error("Failed to create user: email exists: {}", e.getMessage()); + throw new EmailExistsException("E-Mail exists", e); + } + } + log.error("Failed to create user: user exists: {}", e.getMessage()); + throw new UserExistsException("User exists", e); + } + if (!response.getStatusCode().equals(HttpStatus.CREATED)) { + log.error("Failed to create user: unexpected status: {}", response.getStatusCode().value()); + throw new AuthServiceException("Unexpected status: " + response.getStatusCode().value()); + } + log.debug("Created user {} at auth service", data.getUsername()); + } + public void deleteUser(String username) throws AuthServiceException, AuthServiceConnectionException { try { final UUID userId = keycloakGateway.findByUsername(username).getId(); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java index 94ea986f78..73f3a02bea 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java @@ -1,7 +1,6 @@ package at.tuwien.gateway; import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.exception.*; @@ -16,16 +15,6 @@ public interface KeycloakGateway { TokenDto refreshUserToken(String refreshToken) throws AuthServiceConnectionException, CredentialsInvalidException; - /** - * Creates a user at the Authentication Service with given credentials. - * - * @param data The user credentials. - * @throws UserExistsException The user already exists at the Authentication Service. - * @throws EmailExistsException The user email already exists in the metadata database. - */ - void createUser(UserCreateDto data) throws AuthServiceException, AuthServiceConnectionException, - EmailExistsException, UserExistsException; - /** * Deletes a user at the Authentication Service with given user id. * diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java index bce9d6e264..fc9afcb4b3 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java @@ -1,7 +1,9 @@ package at.tuwien.gateway.impl; import at.tuwien.api.auth.KeycloakErrorDto; -import at.tuwien.api.keycloak.*; +import at.tuwien.api.keycloak.TokenDto; +import at.tuwien.api.keycloak.UpdateCredentialsDto; +import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.config.KeycloakConfig; import at.tuwien.exception.*; @@ -106,35 +108,6 @@ public class KeycloakGatewayImpl implements KeycloakGateway { return response.getBody(); } - @Override - public void createUser(UserCreateDto data) throws AuthServiceException, AuthServiceConnectionException, - EmailExistsException, UserExistsException { - final String path = "/admin/realms/dbrepo/users"; - log.trace("create user at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<Void> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(data), Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to create user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.Conflict e) { - if (e.getResponseBodyAsByteArray() != null && e.getResponseBodyAsByteArray().length > 0) { - final KeycloakErrorDto error = e.getResponseBodyAs(KeycloakErrorDto.class); - if (error != null && error.getErrorMessage().contains("same email")) { - log.error("Failed to create user: email exists: {}", e.getMessage()); - throw new EmailExistsException("E-Mail exists", e); - } - } - log.error("Failed to create user: user exists: {}", e.getMessage()); - throw new UserExistsException("User exists", e); - } - if (!response.getStatusCode().equals(HttpStatus.CREATED)) { - log.error("Failed to create user: unexpected status: {}", response.getStatusCode().value()); - throw new AuthServiceException("Unexpected status: " + response.getStatusCode().value()); - } - log.debug("Created user {} at auth service", data.getUsername()); - } - @Override public void deleteUser(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException { final String path = "/admin/realms/dbrepo/users/" + id; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java index a288d1d6e0..c946dac39a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java @@ -1,7 +1,6 @@ package at.tuwien.service; import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -12,19 +11,6 @@ import java.util.UUID; public interface AuthenticationService { - /** - * Create a user at the Authentication Service with given credentials. - * - * @param data The credentials. - * @return The user, if successful. - * @throws UserExistsException The user already exists at the auth database. - * @throws AuthServiceException The auth service responded with unexpected behavior. - * @throws AuthServiceConnectionException The connection with the auth service could not be established. - * @throws EmailExistsException The user email already exists in the metadata database. - */ - UserDto create(CreateUserDto data) throws UserExistsException, AuthServiceException, AuthServiceConnectionException, - EmailExistsException, CredentialsInvalidException; - /** * Deletes a user at the Authentication Service with given user id. * diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java index c2f57c4e53..28e8bb3c40 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java @@ -4,7 +4,6 @@ import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.EmailExistsException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; @@ -44,10 +43,9 @@ public interface UserService { * Creates a user in the metadata database managed by Keycloak in the given realm. * * @param data The user data. - * @param id The user id. * @return The user, if successful. */ - User create(CreateUserDto data, UUID id); + User create(CreateUserDto data); /** * Updates the user information for a user with given id in the metadata database. @@ -74,13 +72,5 @@ public interface UserService { */ void validateUsernameNotExists(String username) throws UserExistsException; - /** - * Validates if a user with the given email already exists in the metadata database. - * - * @param email The email. - * @throws EmailExistsException The user with this email already exists. - */ - void validateEmailNotExists(String email) throws EmailExistsException; - String getMariaDbPassword(String password); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java index 24ebeb1665..112684c9aa 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java @@ -1,14 +1,12 @@ package at.tuwien.service.impl; import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; -import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.AuthenticationService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; @@ -20,26 +18,13 @@ import java.util.UUID; @Service public class AuthenticationServiceImpl implements AuthenticationService { - private final MetadataMapper metadataMapper; private final KeycloakGateway keycloakGateway; @Autowired - public AuthenticationServiceImpl(MetadataMapper metadataMapper, KeycloakGateway keycloakGateway) { - this.metadataMapper = metadataMapper; + public AuthenticationServiceImpl(KeycloakGateway keycloakGateway) { this.keycloakGateway = keycloakGateway; } - @Override - public UserDto create(CreateUserDto data) throws UserExistsException, AuthServiceException, - AuthServiceConnectionException, EmailExistsException, CredentialsInvalidException { - keycloakGateway.createUser(metadataMapper.signupRequestDtoToUserCreateDto(data)); - try { - return findByUsername(data.getUsername()); - } catch (UserNotFoundException e) { - throw new AuthServiceException("Failed to find user in auth service", e); - } - } - @Override public void delete(User user) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 042684f8c9..833c16c097 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -3,15 +3,14 @@ package at.tuwien.service.impl; import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; -import at.tuwien.config.KeycloakConfig; import at.tuwien.entities.user.User; -import at.tuwien.exception.EmailExistsException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; import at.tuwien.repository.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,12 +23,10 @@ import java.util.UUID; @Service public class UserServiceImpl implements UserService { - private final KeycloakConfig keycloakConfig; private final UserRepository userRepository; @Autowired - public UserServiceImpl(KeycloakConfig keycloakConfig, UserRepository userRepository) { - this.keycloakConfig = keycloakConfig; + public UserServiceImpl(UserRepository userRepository) { this.userRepository = userRepository; } @@ -64,15 +61,16 @@ public class UserServiceImpl implements UserService { } @Override - public User create(CreateUserDto data, UUID id) { + public User create(CreateUserDto data) { /* create at authentication service */ final User entity = User.builder() - .id(id) + .id(data.getLdapId()) .username(data.getUsername()) - .email(data.getEmail()) .theme("light") - .mariadbPassword(getMariaDbPassword(data.getPassword())) + .mariadbPassword(getMariaDbPassword(RandomStringUtils.randomAlphabetic(10))) /* user needs to set it later to access */ .language("en") + .firstname(data.getGivenName()) + .lastname(data.getFamilyName()) .isInternal(false) .build(); /* create at metadata database */ @@ -110,13 +108,6 @@ public class UserServiceImpl implements UserService { } } - @Override - public void validateEmailNotExists(String email) throws EmailExistsException { - if (userRepository.existsByEmail(email)) { - throw new EmailExistsException("User with email " + email + " already exists"); - } - } - @Override public String getMariaDbPassword(String password) { final byte[] utf8 = password.getBytes(StandardCharsets.UTF_8); 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 5c60849dc1..00365c5ee8 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 @@ -446,7 +446,6 @@ public abstract class BaseTest { public final static String USER_LOCAL_ADMIN_THEME = "dark"; public final static Boolean USER_LOCAL_ADMIN_IS_INTERNAL = true; public final static Boolean USER_LOCAL_ADMIN_ENABLED = true; - public final static String USER_LOCAL_ADMIN_EMAIL = "admin@local"; @SuppressWarnings("java:S2068") public final static String USER_LOCAL_ADMIN_MARIADB_PASSWORD = "*440BA4FD1A87A0999647DB67C0EE258198B247BA"; @@ -465,7 +464,6 @@ public abstract class BaseTest { public final static User USER_LOCAL = User.builder() .id(USER_LOCAL_ADMIN_ID) .username(USER_LOCAL_ADMIN_USERNAME) - .email(USER_LOCAL_ADMIN_EMAIL) .mariadbPassword(USER_LOCAL_ADMIN_MARIADB_PASSWORD) .theme(USER_LOCAL_ADMIN_THEME) .isInternal(USER_LOCAL_ADMIN_IS_INTERNAL) @@ -475,8 +473,7 @@ public abstract class BaseTest { USER_LOCAL_ADMIN_PASSWORD, USER_LOCAL_ADMIN_DETAILS.getAuthorities()); public final static UUID USER_1_ID = UUID.fromString("cd5bab0d-7799-4069-85fb-c5d738572a0b"); - public final static UUID USER_1_LDAP_ID = UUID.fromString("cd5bab0d-7799-4069-85fb-c5d738572a0b"); - public final static String USER_1_EMAIL = "john.doe@example.com"; + public final static UUID USER_1_KEYCLOAK_ID = UUID.fromString("cd5bab0d-7799-4069-85fb-c5d738572a0b"); public final static String USER_1_USERNAME = "junit1"; @SuppressWarnings("java:S2068") public final static String USER_1_PASSWORD = "junit1"; @@ -530,7 +527,6 @@ public abstract class BaseTest { public final static UserCreateDto USER_1_KEYCLOAK_SIGNUP_REQUEST = UserCreateDto.builder() .username(USER_1_USERNAME) - .email(USER_1_EMAIL) .enabled(USER_1_ENABLED) .credentials(new LinkedList<>(List.of(USER_1_KEYCLOAK_CREDENTIAL_1))) .attributes(UserCreateAttributesDto.builder() @@ -540,7 +536,6 @@ public abstract class BaseTest { public final static UserCreateDto USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST = UserCreateDto.builder() .username(USER_LOCAL_ADMIN_USERNAME) - .email(USER_LOCAL_ADMIN_EMAIL) .enabled(USER_LOCAL_ADMIN_ENABLED) .credentials(new LinkedList<>(List.of(USER_LOCAL_KEYCLOAK_CREDENTIAL_1))) .groups(new LinkedList<>(List.of("system"))) @@ -552,7 +547,6 @@ public abstract class BaseTest { public final static User USER_1 = User.builder() .id(USER_1_ID) .username(USER_1_USERNAME) - .email(USER_1_EMAIL) .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) .affiliation(USER_1_AFFILIATION) @@ -589,13 +583,12 @@ public abstract class BaseTest { public final static at.tuwien.api.keycloak.UserDto USER_1_KEYCLOAK_DTO = at.tuwien.api.keycloak.UserDto.builder() .id(USER_1_ID) .username(USER_1_USERNAME) - .email(USER_1_EMAIL) .emailVerified(USER_1_VERIFIED) .notBefore(USER_1_NOT_BEFORE) .totp(USER_1_TOTP) .attributes(at.tuwien.api.keycloak.UserAttributesDto.builder() .ldapEntryDn(new String[]{"cn=" + USER_1_USERNAME + ",dn=dbrepo,dn=at"}) - .ldapId(new UUID[]{USER_1_LDAP_ID}) + .ldapId(new UUID[]{USER_1_KEYCLOAK_ID}) .build()) .build(); @@ -612,7 +605,6 @@ public abstract class BaseTest { public final static UserDetails USER_1_DETAILS = UserDetailsDto.builder() .id(USER_1_ID.toString()) .username(USER_1_USERNAME) - .email(USER_1_EMAIL) .password(USER_1_PASSWORD) .authorities(AUTHORITY_DEFAULT_RESEARCHER_AUTHORITIES) .build(); @@ -621,9 +613,9 @@ public abstract class BaseTest { USER_1_PASSWORD, USER_1_DETAILS.getAuthorities()); public final static CreateUserDto USER_1_SIGNUP_REQUEST_DTO = CreateUserDto.builder() + .id(USER_1_KEYCLOAK_ID) + .ldapId(USER_1_ID) .username(USER_1_USERNAME) - .password(USER_1_PASSWORD) - .email(USER_1_EMAIL) .build(); public final static LoginRequestDto USER_1_LOGIN_REQUEST_DTO = LoginRequestDto.builder() @@ -632,7 +624,7 @@ public abstract class BaseTest { .build(); public final static UUID USER_2_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c"); - public final static UUID USER_2_LDAP_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c"); + public final static UUID USER_2_KEYCLOAK_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c"); public final static String USER_2_EMAIL = "jane.doe@example.com"; public final static String USER_2_USERNAME = "junit2"; public final static String USER_2_FIRSTNAME = "Jane"; @@ -667,7 +659,6 @@ public abstract class BaseTest { public final static User USER_2 = User.builder() .id(USER_2_ID) .username(USER_2_USERNAME) - .email(USER_2_EMAIL) .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) .affiliation(USER_2_AFFILIATION) @@ -699,28 +690,21 @@ public abstract class BaseTest { .build(); public final static CreateUserDto USER_2_SIGNUP_REQUEST_DTO = CreateUserDto.builder() + .id(USER_2_KEYCLOAK_ID) + .ldapId(USER_2_ID) .username(USER_2_USERNAME) - .password(USER_2_PASSWORD) .email(USER_2_EMAIL) + .givenName(USER_2_FIRSTNAME) + .familyName(USER_2_LASTNAME) .build(); public final static UserDetails USER_2_DETAILS = UserDetailsDto.builder() .id(USER_2_ID.toString()) .username(USER_2_USERNAME) - .email(USER_2_EMAIL) .password(USER_2_PASSWORD) .authorities(AUTHORITY_DEFAULT_RESEARCHER_AUTHORITIES) .build(); - public final static at.tuwien.api.keycloak.UserDto USER_2_KEYCLOAK_DTO = at.tuwien.api.keycloak.UserDto.builder() - .id(USER_2_ID) - .username(USER_2_USERNAME) - .email(USER_2_EMAIL) - .emailVerified(USER_2_VERIFIED) - .notBefore(USER_2_NOT_BEFORE) - .totp(USER_2_TOTP) - .build(); - public final static at.tuwien.api.amqp.UserDetailsDto USER_2_DETAILS_DTO = at.tuwien.api.amqp.UserDetailsDto.builder() .name(USER_2_USERNAME) .tags(new String[]{}) @@ -730,7 +714,7 @@ public abstract class BaseTest { USER_2_PASSWORD, USER_2_DETAILS.getAuthorities()); public final static UUID USER_3_ID = UUID.fromString("7b080e33-d8db-4276-9d53-47208e657006"); - public final static UUID USER_3_LDAP_ID = UUID.fromString("7b080e33-d8db-4276-9d53-47208e657006"); + public final static UUID USER_3_KEYCLOAK_ID = UUID.fromString("b0108bc3-95aa-4a3f-8868-dc301286aeca"); public final static String USER_3_USERNAME = "junit3"; public final static String USER_3_FIRSTNAME = "System"; public final static String USER_3_LASTNAME = "System"; @@ -763,7 +747,6 @@ public abstract class BaseTest { public final static User USER_3 = User.builder() .id(USER_3_ID) .username(USER_3_USERNAME) - .email(USER_3_EMAIL) .firstname(USER_3_FIRSTNAME) .lastname(USER_3_LASTNAME) .affiliation(USER_3_AFFILIATION) @@ -795,11 +778,16 @@ public abstract class BaseTest { public final static UserDetails USER_3_DETAILS = UserDetailsDto.builder() .id(USER_3_ID.toString()) .username(USER_3_USERNAME) - .email(USER_3_EMAIL) .password(USER_3_PASSWORD) .authorities(AUTHORITY_DEFAULT_RESEARCHER_AUTHORITIES) .build(); + public final static CreateUserDto USER_3_SIGNUP_REQUEST_DTO = CreateUserDto.builder() + .id(USER_3_KEYCLOAK_ID) + .ldapId(USER_3_ID) + .username(USER_3_USERNAME) + .build(); + public final static at.tuwien.api.keycloak.UserDto USER_3_KEYCLOAK_DTO = at.tuwien.api.keycloak.UserDto.builder() .id(USER_3_ID) .username(USER_3_USERNAME) @@ -818,7 +806,7 @@ public abstract class BaseTest { .build(); public final static UUID USER_4_ID = UUID.fromString("791d58c5-bfab-4520-b4fc-b44d4ab9feb0"); - public final static UUID USER_4_LDAP_ID = UUID.fromString("791d58c5-bfab-4520-b4fc-b44d4ab9feb0"); + public final static UUID USER_4_KEYCLOAK_ID = UUID.fromString("25040ad3-6d57-4052-b357-6b4c8a6e7f4d"); public final static String USER_4_USERNAME = "junit4"; public final static String USER_4_FIRSTNAME = "JUnit"; public final static String USER_4_LASTNAME = "4"; @@ -830,7 +818,6 @@ public abstract class BaseTest { @SuppressWarnings("java:S2068") public final static String USER_4_DATABASE_PASSWORD = "*C20EF5C6875857DEFA9BE6E9B62DD76AAAE51882" /* junit4 */; public final static String USER_4_QUALIFIED_NAME = USER_4_FIRSTNAME + " " + USER_4_LASTNAME + " — @" + USER_4_USERNAME; - public final static String USER_4_EMAIL = "junit4@ossdip.at"; public final static Boolean USER_4_VERIFIED = true; public final static Boolean USER_4_ENABLED = true; public final static Boolean USER_4_IS_INTERNAL = false; @@ -848,7 +835,6 @@ public abstract class BaseTest { public final static User USER_4 = User.builder() .id(USER_4_ID) .username(USER_4_USERNAME) - .email(USER_4_EMAIL) .firstname(USER_4_FIRSTNAME) .lastname(USER_4_LASTNAME) .affiliation(USER_4_AFFILIATION) @@ -880,7 +866,6 @@ public abstract class BaseTest { public final static UserDetails USER_4_DETAILS = UserDetailsDto.builder() .id(USER_4_ID.toString()) .username(USER_4_USERNAME) - .email(USER_4_EMAIL) .password(USER_4_PASSWORD) .authorities(new LinkedList<>()) .build(); @@ -901,7 +886,6 @@ public abstract class BaseTest { @SuppressWarnings("java:S2068") public final static String USER_5_DATABASE_PASSWORD = "*C20EF5C6875857DEFA9BE6E9B62DD76AAAE51882" /* junit5 */; public final static String USER_5_QUALIFIED_NAME = USER_5_FIRSTNAME + " " + USER_5_LASTNAME + " — @" + USER_5_USERNAME; - public final static String USER_5_EMAIL = "system@ossdip.at"; public final static Boolean USER_5_VERIFIED = true; public final static Boolean USER_5_ENABLED = true; public final static Boolean USER_5_IS_INTERNAL = false; @@ -936,7 +920,6 @@ public abstract class BaseTest { public final static UserDetails USER_5_DETAILS = UserDetailsDto.builder() .id(USER_5_ID.toString()) .username(USER_5_USERNAME) - .email(USER_5_EMAIL) .password(USER_5_PASSWORD) .authorities(AUTHORITY_DEFAULT_DEVELOPER_AUTHORITIES) .build(); @@ -947,7 +930,6 @@ public abstract class BaseTest { public final static User USER_5 = User.builder() .id(USER_5_ID) .username(USER_5_USERNAME) - .email(USER_5_EMAIL) .firstname(USER_5_FIRSTNAME) .lastname(USER_5_LASTNAME) .affiliation(USER_5_AFFILIATION) @@ -967,7 +949,6 @@ public abstract class BaseTest { public final static String USER_6_PASSWORD = "junit5"; @SuppressWarnings("java:S2068") public final static String USER_6_DATABASE_PASSWORD = "*C20EF5C6875857DEFA9BE6E9B62DD76AAAE51882" /* junit5 */; - public final static String USER_6_EMAIL = "system@ossdip.at"; public final static Boolean USER_6_VERIFIED = true; public final static Boolean USER_6_ENABLED = true; public final static Boolean USER_6_IS_INTERNAL = false; @@ -985,7 +966,6 @@ public abstract class BaseTest { public final static UserDetails USER_6_DETAILS = UserDetailsDto.builder() .id(USER_6_ID.toString()) .username(USER_6_USERNAME) - .email(USER_6_EMAIL) .password(USER_6_PASSWORD) .authorities(AUTHORITY_DEFAULT_RESEARCHER_AUTHORITIES) .build(); diff --git a/docker-compose.yml b/docker-compose.yml index 0f2f7f84b1..ef7e6a8a32 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,7 +85,7 @@ services: - ./dbrepo-auth-service/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./dbrepo-auth-service/master-realm.json:/opt/keycloak/data/import/master-realm.json - ./dbrepo-auth-service/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json - - ./dbrepo-auth-service/create-event-listener/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar + - ./dbrepo-auth-service/listeners/target/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar ports: - "8080:8080" environment: @@ -95,7 +95,9 @@ services: KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" - WEBHOOK_URL: https://webhook.site/a3349f41-ebfd-443a-bd06-a0d9c503e76c + METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}/api/user" + SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}" + SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}" healthcheck: test: curl -fsS http://localhost:8080/realms/master interval: 10s -- GitLab From 453c9a5f0282cf545fd99e43e4d1258bce565a8e Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 26 Jan 2025 13:45:38 +0100 Subject: [PATCH 25/52] Bumped version Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/index.md | 2 +- .docs/kubernetes.md | 2 +- .gitlab-ci.yml | 4 ++-- Makefile | 4 ++-- dbrepo-analyse-service/Pipfile | 2 +- dbrepo-analyse-service/Pipfile.lock | 2 +- dbrepo-data-service/pom.xml | 2 +- dbrepo-data-service/querystore/pom.xml | 4 ++-- dbrepo-data-service/report/pom.xml | 4 ++-- dbrepo-data-service/rest-service/pom.xml | 6 +++--- dbrepo-data-service/services/pom.xml | 6 +++--- dbrepo-metadata-service/api/pom.xml | 6 +++--- dbrepo-metadata-service/entities/pom.xml | 4 ++-- dbrepo-metadata-service/oai/pom.xml | 4 ++-- dbrepo-metadata-service/pom.xml | 2 +- dbrepo-metadata-service/report/pom.xml | 4 ++-- dbrepo-metadata-service/repositories/pom.xml | 4 ++-- dbrepo-metadata-service/rest-service/pom.xml | 4 ++-- dbrepo-metadata-service/services/pom.xml | 4 ++-- dbrepo-metadata-service/test/pom.xml | 4 ++-- dbrepo-search-service/Pipfile | 2 +- dbrepo-upload-service/pom.xml | 2 +- helm/dbrepo/Chart.yaml | 4 ++-- helm/dbrepo/README.md | 4 ++-- helm/dbrepo/values.yaml | 16 ++++++++-------- install.sh | 2 +- lib/python/docs/index.rst | 2 +- lib/python/pyproject.toml | 2 +- lib/python/setup.py | 2 +- sonar-project.properties | 2 +- 30 files changed, 56 insertions(+), 56 deletions(-) diff --git a/.docs/index.md b/.docs/index.md index 64b807cae2..d86224726f 100644 --- a/.docs/index.md +++ b/.docs/index.md @@ -14,7 +14,7 @@ author: Martin Weise   -Documentation for version: [v1.6.2](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). +Documentation for version: [v1.6.3](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/kubernetes.md b/.docs/kubernetes.md index 60f87eb6d4..170bc863f5 100644 --- a/.docs/kubernetes.md +++ b/.docs/kubernetes.md @@ -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.2" \ + --version "1.6.3" \ --create-namespace \ --cleanup-on-fail ``` diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3661711509..85e5d640bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,8 +10,8 @@ variables: SONARQUBE_VERSION: "10.0" BUN_VERSION: "1.1.40" DOC_VERSION: "1.6" - APP_VERSION: "1.6.2" - CHART_VERSION: "1.6.2" + APP_VERSION: "1.6.3" + CHART_VERSION: "1.6.3" 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. diff --git a/Makefile b/Makefile index e5d0dbec5f..0dd2ae5e0a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all -APP_VERSION ?= 1.6.2 -CHART_VERSION ?= 1.6.2 +APP_VERSION ?= 1.6.3 +CHART_VERSION ?= 1.6.3 REPOSITORY_URL ?= registry.datalab.tuwien.ac.at/dbrepo .PHONY: all diff --git a/dbrepo-analyse-service/Pipfile b/dbrepo-analyse-service/Pipfile index 9c7b709520..22a8e79b3a 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.2.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.3.tar.gz"} opensearch-py = "*" [dev-packages] diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 239b3d7c01..04e43bc573 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -414,7 +414,7 @@ "hashes": [ "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" ], - "path": "./lib/dbrepo-1.6.2.tar.gz" + "path": "./lib/dbrepo-1.6.3.tar.gz" }, "events": { "hashes": [ diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml index 7d5e6941e4..e2bfa73961 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.2</version> + <version>1.6.3</version> <description>Service that manages the data</description> diff --git a/dbrepo-data-service/querystore/pom.xml b/dbrepo-data-service/querystore/pom.xml index cb712233ce..2905b5a935 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-data-service-querystore</artifactId> <name>dbrepo-data-service-querystore</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies/> diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml index 8de452bbf0..4b230d55eb 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.2</version> + <version>1.6.3</version> </parent> <artifactId>report</artifactId> <name>dbrepo-data-service-report</name> - <version>1.6.2</version> + <version>1.6.3</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 8ff195ea79..d727bcefd6 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.2</version> + <version>1.6.3</version> </parent> <artifactId>rest-service</artifactId> <name>dbrepo-data-service-rest-service</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>1.6.2</version> + <version>1.6.3</version> </dependency> </dependencies> diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml index d0fe72cbeb..04ddee3c59 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.2</version> + <version>1.6.3</version> </parent> <artifactId>services</artifactId> <name>dbrepo-data-service-services</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service-querystore</artifactId> - <version>1.6.2</version> + <version>1.6.3</version> </dependency> </dependencies> diff --git a/dbrepo-metadata-service/api/pom.xml b/dbrepo-metadata-service/api/pom.xml index c1e74c5ae9..0d534105f8 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-api</artifactId> <name>dbrepo-metadata-service-api</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service-entities</artifactId> - <version>1.6.2</version> + <version>1.6.3</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/dbrepo-metadata-service/entities/pom.xml b/dbrepo-metadata-service/entities/pom.xml index 9252dd2caa..1967b24868 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-entities</artifactId> <name>dbrepo-metadata-service-entity</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies/> diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml index 87da814d41..b6db9e6967 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-oai</artifactId> <name>dbrepo-metadata-service-oai</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies/> diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index e08d81603d..c165efdc3d 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.2</version> + <version>1.6.3</version> <description>Service that manages the metadata</description> diff --git a/dbrepo-metadata-service/report/pom.xml b/dbrepo-metadata-service/report/pom.xml index 756681f202..8d4d32c15d 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-report</artifactId> <name>dbrepo-metadata-service-report</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml index 39e971b901..57f89e7ed4 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-repositories</artifactId> <name>dbrepo-metadata-service-repositories</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml index 9f8055a149..ff59666887 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-rest-service</artifactId> <name>dbrepo-metadata-service-rest</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml index 0ec2d62d1d..d1b8f9a702 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-services</artifactId> <name>dbrepo-metadata-service-services</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/test/pom.xml b/dbrepo-metadata-service/test/pom.xml index 97768ad4a7..d51ed22d4d 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.2</version> + <version>1.6.3</version> </parent> <artifactId>dbrepo-metadata-service-test</artifactId> <name>dbrepo-metadata-service-test</name> - <version>1.6.2</version> + <version>1.6.3</version> <dependencies> <dependency> diff --git a/dbrepo-search-service/Pipfile b/dbrepo-search-service/Pipfile index f7161287a0..3ae2994801 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.2.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.3.tar.gz"} gunicorn = "*" [dev-packages] diff --git a/dbrepo-upload-service/pom.xml b/dbrepo-upload-service/pom.xml index 8f4506e150..20f379e32e 100644 --- a/dbrepo-upload-service/pom.xml +++ b/dbrepo-upload-service/pom.xml @@ -11,7 +11,7 @@ <groupId>at.tuwien</groupId> <artifactId>dbrepo-upload-service</artifactId> <name>dbrepo-upload-service</name> - <version>1.6.2</version> + <version>1.6.3</version> <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> <developers> diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index 802f33888c..259ccbd694 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.2" -appVersion: "1.6.2" +version: "1.6.3" +appVersion: "1.6.3" keywords: - dbrepo maintainers: diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index e703787206..e7a5849e30 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.2" +helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.6.3" ``` ## Prerequisites @@ -28,7 +28,7 @@ helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" 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.2" +helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.6.3" ``` The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 84cf7b5ddd..626aea471b 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -116,7 +116,7 @@ authservice: setupJob: image: ## @skip authservice.setupJob.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3 ## @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) @@ -392,7 +392,7 @@ analyseservice: enabled: true image: ## @skip analyseservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3 ## 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 @@ -453,7 +453,7 @@ metadataservice: enabled: true image: ## @skip metadataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 ## 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 @@ -550,7 +550,7 @@ dataservice: endpoint: http://data-service image: ## @skip dataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3 ## 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 @@ -636,7 +636,7 @@ searchservice: endpoint: http://search-service image: ## @skip searchservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3 ## 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 @@ -683,7 +683,7 @@ searchservice: init: image: ## @skip searchservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3 ## @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) @@ -744,7 +744,7 @@ storageservice: init: image: ## @skip storageservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3 s3: ## @param storageservice.init.s3.endpoint The S3-capable endpoint the microservice connects to. endpoint: http://storage-service-s3:8333 @@ -853,7 +853,7 @@ ui: enabled: true image: ## @skip ui.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.2 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3 ## 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 3ccfd30b21..fa48d9bc35 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash # preset -VERSION="1.6.2" +VERSION="1.6.3" MIN_CPU=8 MIN_RAM=4 MIN_MAP_COUNT=262144 diff --git a/lib/python/docs/index.rst b/lib/python/docs/index.rst index 13561e9c13..b3c05fe364 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.2, earlier versions may be supported but are not tested for compatibility. + The SDK has been implemented and documented for DBRepo version 1.6.3, 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 5b8deb8408..99f62c9a44 100644 --- a/lib/python/pyproject.toml +++ b/lib/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dbrepo" -version = "1.6.2" +version = "1.6.3" description = "DBRepo Python Library" keywords = [ "DBRepo", diff --git a/lib/python/setup.py b/lib/python/setup.py index c6deff531d..dfe9a897ca 100644 --- a/lib/python/setup.py +++ b/lib/python/setup.py @@ -2,7 +2,7 @@ from distutils.core import setup setup(name="dbrepo", - version="1.6.2", + version="1.6.3", description="A library for communicating with DBRepo", url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/", author="Martin Weise", diff --git a/sonar-project.properties b/sonar-project.properties index 83f00a3a24..4442bf46ff 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.2 +sonar.projectVersion=1.6.3 # general sonar.qualitygate.wait=true sonar.projectCreation.mainBranchName=master -- GitLab From e0b1c4df6f9fce1e641dc70d5cc5b210311c4075 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 26 Jan 2025 13:54:21 +0100 Subject: [PATCH 26/52] Fixed test Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-data-service/rest-service/pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dbrepo-data-service/rest-service/pom.xml b/dbrepo-data-service/rest-service/pom.xml index d727bcefd6..721cf1a254 100644 --- a/dbrepo-data-service/rest-service/pom.xml +++ b/dbrepo-data-service/rest-service/pom.xml @@ -38,6 +38,14 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>9</source> + <target>9</target> + </configuration> + </plugin> </plugins> </build> -- GitLab From a67401c7dab1d4dd6a0dbcdf031774ccd12f002d Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 27 Jan 2025 23:17:11 +0100 Subject: [PATCH 27/52] Fixed it !! Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 16 ++++++++-------- .../lib/dbrepo-1.6.3-py3-none-any.whl | Bin 0 -> 30965 bytes dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz | Bin 0 -> 40624 bytes .../java/at/tuwien/mapper/MetadataMapper.java | 7 ++++--- dbrepo-search-service/Pipfile.lock | 6 +++--- .../init/lib/dbrepo-1.6.3-py3-none-any.whl | Bin 0 -> 30965 bytes .../init/lib/dbrepo-1.6.3.tar.gz | Bin 0 -> 40624 bytes .../lib/dbrepo-1.6.3-py3-none-any.whl | Bin 0 -> 30965 bytes dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz | Bin 0 -> 40624 bytes .../[database_id]/table/create/dataset.vue | 8 +------- 10 files changed, 16 insertions(+), 21 deletions(-) create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.3-py3-none-any.whl create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.3-py3-none-any.whl create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.3.tar.gz create mode 100644 dbrepo-search-service/lib/dbrepo-1.6.3-py3-none-any.whl create mode 100644 dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 04e43bc573..3d7be35d24 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "5fbd87c094d93565d64444fc1734d9183e7095d47447d30d6493dfc6bb7e8201" + "sha256": "9cc4c161729b642069bbf4ab379c0f4a9122035afcb3ac7b5b1bfc13281f76aa" }, "pipfile-spec": 6, "requires": { @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:6d473f0f340d02b4e9ad5b8e68786a09728101a8b950231b89ebdaf72b6dca21", - "sha256:b36feae061dc0793cf311468956a0a9e99215ce38bc99a1a4e55a5b105f16297" + "sha256:ab501f75557863e2d2c9fa731e4fe25c45f35e0d92ea0ee11a4eaa63929d3ede", + "sha256:ae98634efa7b47ced1b0d7342e2940b32639eee913f33ab406590b8ed55ee94b" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.6" + "version": "==1.36.7" }, "botocore": { "hashes": [ - "sha256:4864c53d638da191a34daf3ede3ff1371a3719d952cc0c6bd24ce2836a38dd77", - "sha256:f77bbbb03fb420e260174650fb5c0cc142ec20a96967734eed2b0ef24334ef34" + "sha256:9abc64bde5e7d8f814ea91d6fc0a8142511fc96427c19fe9209677c20a0c9e6e", + "sha256:a6c6772d777af2957ac9975207fac1ccc4ce101408b85e9b5e3c5ba0bb949102" ], "markers": "python_version >= '3.8'", - "version": "==1.36.6" + "version": "==1.36.7" }, "certifi": { "hashes": [ @@ -412,7 +412,7 @@ }, "dbrepo": { "hashes": [ - "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" + "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" ], "path": "./lib/dbrepo-1.6.3.tar.gz" }, diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..93e86252f8c62fbbd600ccad15fa4044446d2fe7 GIT binary patch literal 30965 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�*PRg#+^$hN3tE+Q#S#{9 zG5@f3t>52RXl?3uEab_1^B2FFf7dZr|8$O2@p#F&w1oRtwZq@LO#J*O4(mRscBt{* z@PtM8r`WTafMTY4ey`aFelvfn<G%K};aV}bjIDzE_6MQ-?pwE<bmg7j(9TdfgJ~bb zN8hKPmWz2`2yC#L#Z=Gu$$YB!iYOb#>V_NX2jV;aoNZ_iaOIug(lKd9<J{JabmN_? z9?mg$xXGtEn^9Nsk`eREHjTTIF1-Saj|uJYop4(+KvwB$@dI0@d(RsbgZ}Yd6JGfB zOyet#mGhdvx@6dDS0rgQG4A8|c-FB=(5ry&hVqd-Mt+gXh@K<CZypL~7`x@_HSCx8 z8SP-wYdA~Kp~=we1K%^72Xo2~+-Ll`oB0H@Q{Te;)xR7*u}}FU>+!E)Qa$&rKRvf% zn7*-W)NfqOVj0Dh(lkN4Ath@vi%^QjLD7Wtj#}0|#!qTl?-)HPW0jCdif9az$V!E9 z%Z^>K(lt-X;%1FXTrqX(9WTZD;sfG}cEU?s0=%>zbZGV+Fqi!Gj7wo=6U*zw3|q4V zf5F|n|E90%HSkb!^}M0bDWaNq`ftL%zpd(9E17otUA5ws$(^7qtuk?uO3n-KQ27fp zmFAkAFm|oHb)dRy&uxW+BB~k8+ck@Jv#l~-QpGz#(rI1dG@kTG=almXo9;97_n$ay zd*NqC$vx(|{T|P)Cma#>N@6kk9FUe=aqH1#Yl-hIkL%cX);R9m!_MP=<b#|-KgUl- zgBn*Jd57)so0GCv8a?<lC(547xoMfj5vRo#M`A@+p746N?Y+;_#b0+W)|v0J@`SF6 znQ!wi$+)+b3&Y=Z{+v1aS#lhISPRdOlk7#-%=X`Y{Im2j^xouunR)lGpXt+NUHaae z#_ag`_|<ERn}5$F-aNnRsgcS`Z8^QvuIHaVPLJ1fuInp3+I#G&Vkf_fr)J{+isG4E zUZ<o#1)cLLF@L(~b4Z&N>y%5fK@OHY8&<E2^z!VV`rBhy%eVB)0T1@;ZOVJgX=7{s zeQrsnMYYF@-b4E*t!i3SDE3o!<_Fz|kfNzKA|mRe`_^*34mq)wk72jE-?R(cWS&f( z{e#bbabDC!Zv&G<*LdP0L)BS6mkS=7Ql*l$<M5TrGr>EWwj8^%ecqNWo1L9Y1Pb3} zJqXs<Wj@7lk4;Zb{=`Jn-hFC}nG$yy@*EAFc#S%2x4-G^k-6jIlJNFh`;L7Roaa^j zpK~<x^;)^!j>FU2C%Ek`dal4cbJ3c>7e^<$^JTWjrU>RT2hR9$q@;S!@}9g5hs(*& zU5&PFjrBflDek{q@762v=LP>S6^hqBOXZj@B>(bLz%kMFiISpkIn-O$oZ|9oShRTc zz6EJN-cC=t`qH{0Z_kCUO$q`tKm1r(5_!e<=w?a&j(O~x_5B<c#jc8H4SWAW@~>Ca zuD{dlCdysYf9K%X)MLanX&bZYDZA~BRgn%Z_UV-~Ju`RdSwEQe!gj?(jrHpc+gsZ5 zib^UPtnwGEU|F>L#Keid#`iY9*`a!T-&VuoyyByuwl{@7pVKXvxcSznhSy=2-=0Xa zoMfr`!+ojvgExokL#nd)*abdzcXlt8QK{=*+!lDprH=pOt=2SqxqVaPF8JNq_wbX7 zPwC{3;nR9MJa?I?F<j0*AKW<QV$}R!Q{H}^u{1k5WW(+LYtI-<C!LqNp3LcX_=TQ* z#<sryaa;eXN@=zKZ(0`o?#K7ygLTaR!uRBQG6e?3NI0!NZM(}c>~{avWhb_$b-rMH zdM#nvjZmwSGU3naLIGbpjwy%lmEhLMaOmv|zSnc*kMA_clXrK8EZQ;qnwFO<|Lxc9 zJ{DV6WlDeYo4@Mz{j>;O<4>N}{nyR<eNQ&T-L|*SE1u9+<M($0hx&Ud*9xWgt}OR= zf4ZxZdplhGX^Fa{oMvTKJA=(y)p<>Q8h%b1XY;i+mE$|6m$n>niQ4?^V{g@J$y)uH zsx6&;(-yh$u9}v)GE_Bt+uPm8=S@hInQP;IwYdCwxaPc)=)m4kul?O_A742fEBPV1 z<;mi6MGuypSfJ#1a_4WWZ$JJ1*0=wAU;JW!w{d;)-NM!G;;9GDzdvUiv+Zi(Kd$bu zpu9TsXL}~)ed)QRd@DT8^sb1D|MjZtpJxdAYPO5`Of8yGl^67($<s5%xp;1u(XVB7 zPxRIXdaZT((Y9uT!zUfpZ_iJBEvfs_a-v#mcU+qNq|U2(eBR}1vd@qHo0(epQBSGq zAY)(8wa>G7w@d7-?5v*HKS5tR=<NIgR_oXI9!-<+7Yc|u=n--#R{QD=C9T5GOX4mY zp5Q$CdO|=-w8_r+FUuzE2>f|-`BSlJzxw>;LWAdd+XNVUN^N4)D$<(R+OqMIcB~xx zx;tf^H>MT`O+W0p@_91X#x*-9{#&kdswH&J9#Odq8sbV>GFp39@BX##X1MNSuG3z@ zhpx`J^{goG#<jgKZ%osDy{ea?$-zsWQz7)I+hLicskxUH9gmaxeD%tPv#*o*tP7Rd zs(Es|T5Sy#5AOE(x$66)l6wzi%nG*$Cv89X;wzKT$v^I*td6`Q{{zn#|Fm&GsI#!G z<Nu21_jM!L=l=2A*prpP>&_jyeAhzh#I+s^4F6x3zR2}IVfNNZTa!NY=ggM)oUOUG zQ~IZu$F*J-k^NfSdftnUuFu-&zUipk%1`cd>Z8us$DWMY`QzxNoilR;_upu0+M%sd z$R7MzUMIau`MAwq!K16xLze|9oL_C0{j^6XF~V76<E9%OpB$Y-kDuMWpvGs*rkW#J zwdLlf>Cf(zrL3KKH0<U>frj9lh0Jr>7BuL5;Ls8)zCCMwsn-v;DQ+{}c$+-BHf&$; z>Q+qev}*yg9pyHd9p&L-NekHPBYFDN%$eH?b5G3L(|I~A;^LIW0e{a$+*=%Bc_LzJ zdROMVvrkV&ohh7F{j(^>j`N#U_r^I)zr}CMB<1Z}?RfTNu<VDt%zM$@rM2gFx7b{= z$e!{0T*NKb8MBwH@)yvvnwWJllqZUR=S}||8EY;3j;!69FWRGfcH>Ty=gPj!-kVf8 zAI|QMVYL)^q456tl^qgmwbhDyO*3aH33_M=?Vg$Dv)MX3YSYpW4$OC_FfizH{_48; z{n#a=9l6D-=ecxua>n-suX`Ra`B{=?+-k#RsW)7e;x-mGb8RR+tGUfhCaSXcOWt{2 zljVY1ruV0&Xl$$8#lp(a<zMnrZ^IMrvs;bhPH81RWP0?P^`Au`>)}JX;;)~cII}YL zXyhZo-g8TTmgVYti`1OUSQN~_;KB4o)I_Ik_0cO=u5Q1vAwp!^lgFYQJ`1X5hIK@) zWB%RtHR86W$+}aAMdO3r6J8&4i&<X%Q#<rqN+EB{*$2U#tM*OzzV<|G4!7&)r!iIA ze^jw2hHVj@*=kZ=bX&r&wMKD;rgrPvt4Z3A!V*_+vz&G2pvsXm3~qaBReYSz+}gM5 z@VjR+j0YPRc*-4Gz!osmd&52P`+-xG=f$*D3htZt;s4Jxo7UIq7AM5?ZTH2_{&d$~ z;##uOv|I^K@AYPNx8;`BPP9Hb&#cGjYl%pF`^rtn%+p`>+AY}m-NdR}VCRodh9+UJ z-db4bf1BsStFeqZSlWTJ^53es{!WHpEqA)VoHF-_pJzF1%7pcbO;J;4evH;Qm-rwx zLaJ@1n`uW;W{;z4-J`tQCWlzn6%yn=9@4d6&T=rpne9)<QQeRJ+xO4&3i`ikQ`5O^ zQnmAT9sN?oR@;?d!cyDCW}k02>!tePV|%7dn|F5qHWt~bciMdno(TrY$<MxI?CU8s zu~$%9ecH6HD_%Em7EN;X*IhktU*@fCArc1n%;nX%^=Gqo{|UJi^~%}h>+RrEe2vv> zQdVkx-#Im$)#Rn4Yv$8rf!RH5`!-~)jTE_Y@`^_`?>wKWTbdVS>^dNH=hT*3g(L43 zPQG7o{Jmq({eGd3PgmIX-rBcMNoOzbvN=nu{+*wBAYIOCU+$r+^@~1yezSfaL+ajD zuKO2P1wVWADeuJgP==JEb*wDip{5eHr=wO!Tz&BANaX*nOY6FqZgaZ4Zli5?sx{+* z8P*GTWLy4K*l9CIr7kJ=yN=f9TZ@+4h~8$JoF3<Y;Kg;8^N-V?*QmVMQeJ9#>Hmyw zoA#yCj2_;vzI}N|>q?Qg+0&DrZu;-F_J3u3{G;2GdP4U1ihiCOyk+v!TlcFzm;5^Q z`^@flb&fHgE{6Kwkma0b{bNVJb>k-44Zo6J?vxj4&e!eo51hu!vF6mp{cc}<ws+N* zXzyKj|2Ct`z2f$_t!mHj3Y*m}`jo?;Ge!I7qqlc6!b@jA7tH&2_sr^3(?86+x%Nrm z>+1AMySoQhvEJXZY7&d!HgVGlPuB2>XXmcJ_~~|H>7S?9_g4FcZk!O79D8`T#oA@F zPCX9z$hd#<>*g=JYTi9EooUl}@1I`I$9-p~n(gTN?DhYH;=IJrfA=z(H1$>syxCLj zDs$z>qOP5rrcXO_;Zt+TtbnNtWhGZnRMcm+onE<aetrAlvS+U~>pHYsbtk@=sV|ef zBxqaUn}V&+Rz?}Vx+Nq1dgZT}=~jF8W=trnW>|lCzTk?YOpT-FFMb4fU(J}6#nz#$ z-ptaNwq14a)R?d-JqK^En0w)A)*P{Wr_0V>30HmHa@}Q7&w8_O=bydw+xOtw(vxQP zd1W*H>3=+F@M-0%W2M>$byL2Y+VMQUD*l!0oL%f6Y1E;^w-<Bg-eO>2C}3n@5JepX zOwCKqPf0D(E2vDJa60dZ0*~wWn%1eIO0FyJ_PE_Gzo<9M^%lRv!4exTiN?({_Uo&B zUJ>PO)3UyHoua%Y=Nx19r7=nTWnL1IvpsHcF~4o{|1{(1j}=p9iBC4>5j@<Xc6Rx7 zgUv^;TvPj1D`U5g|894akniQ3=hH7Z6*ca?Q^>T&itE0DI?GPM1p)VuG4{1Df3Ee} zt!qKf6h(!oEe5e>Hg9TbkLQSYuhZMCcPT9<hTmrH`naqK+H*BT!e(sL-TBY(u6|^1 z%cf-kuT4|$?cFl>*W`2AI+y?d?w8Zrd)Zw7YU?jX)WFC+*LdV0BLl-8HU<U>w7{rH zPAw?O%+D*<E2vyL#W(M^fk5kbJJyGxyEFJN#0u=#Es}9ZCc&pKfl0+(wY{(O_ql+u z3nHwl+iyuslD}`he+#3R;rR$RFIM@J4;9l-$@7JGD_48T?|;){^ZW0<zyB;2pETdP zQOSIt#PfDWV>L79Wf>7B6|xtNteiRR_ZLgB?zsInhk3uq8BQg+b^8h;-LKD%TPa}F zG`q+D*UdR<%$+TBXRl(mb@`B}Eoi^;RzvZmvY-0zwp$B{N?gskxTng_+qL!fr(<RN z*cJE9XME&$$#&Jr(mnfw>?)rdtgUXoYQH5Wi%0Q7w*D)14(6vFd3SFzHvc;I)Z_TK z>Z3NYGe5Ph+;{vtr)0=~jckRj$5NJ;Ht-xjdi#Eu^1YZPdk=W8bbHyA6SSXOFyhyr zf{7<vf)DscaA$s7-aUQm(@KV{1lcD)-=-g3)R?-*mGRZh+e@@x+qFGbdH(2|P{gW( zTT670Moiv*Ab;^X(OJ2^nfvB4$gO%I{JK&xPtM!-s&^OLy}9oj`ih@i`p{A)o$XmR zLC-UAW=}}?t*56WFU8edoB7{K%J8+o|BK-f%KLg66AtrTTUNc>+-qx?-tmQPecwOJ z9GjNCl5={aZDw74YzNYDI~}X7qy7l+*yZpuFvRLGFv!89UDr_0OwU*^C9}9hH#09S zU*E^m+0`%D^=?#j@$F-xb>G+DC|VYr$+m2+Nv8Dk&W%sn);edp?95Y}+^)JoVLRJ~ z6M70=f4|yJ-`lt(rTkZz?=n-*H#avw|1|ggoTJ<yckXx9KRs9Ied$W8<#9HjpV&_+ zy;bt)_0QK%e|*apZ(;xV_4W1pHaj!SdH&80U;pj*-<V5g#mU>(OWixQx2lo*{rdNH zQQb#hdF|O78LRt#y7}s@73Ib1c5Bvi7navnmluD1s9P6%AvpZ>*S~i^we$br<@}MQ zw=QI@wQWOD-oHcH#-G(^ac-aNs~n|jZFs<wJvCZACA{-eiRgNvts9d{RtbcCy%v(( z8803uVi%oh9<f*QW3}Sk6$Rd*oo5}_gr0QT$Mo}B&+WNC{ANhmWmKG-lDvA?!wCIk ze-Ulp`VCdPrCV;6pW+JO6nphh;fckYo~!?t{oOOCSi5bm3`@?gtwLgD(N!mID+W8{ zrYf)V{L(3u+|I7@cIpIGPtK?Y$p?}8#||*ZIj)t-=Vg;!lgXvHmP=kLXxD+u54I<V zAKY|l%i5QFRQ@lx@jCH%QN`h%73n%JFZORU7ce}z>f*zL?#BA5ZtjJToZ>$PZ4TeY z@ICT_kk&%$f8~m7%3hp)$Di*J`PZqF;HquCGxUYco$I|%&uNEs{Pnx|@!;<*>s4;< zO#LRcm~%-?#)XzUkIQzsdv0BKaMs>Us$Khjd;=X{V9oq2@i4pN;|FXTtbQ@vNtwzm z<oLv`G@&J^SzG;*vF+s3^=6NKVh%+8nLao6SzP=73u^qkqyndjR@PK7z7pJWl~0s$ zZ}eLkR-2=e>Wn*|s$99YA(~T@<K<O3_o)2PwQE|Re#!O~``;41W!a?y6VFIdnKipN zNuCs$(6Y$5IiqBCVflx}#$Pua|4_6=(PAmn>-Ia!j&VHp0WE*le=Xbc#d^omK*^dr zIsaG}7OdL!hVPH;j^rE-`>gD!9~<wS<lDl>$rO0evL>jlVNt%+|BYfn8!A0w3~d)o zFD&u#m>rkwBpGy0zL<L=Lwdt{b@p=?x&3|}c=0xX?|I&8E#0F9FFq&Nn|!;>sqyBa z_oW#H9Ll;&8{Qo<Ok&#b^3TSoNX7{^9(Pap3V*Ucyp-vp2=j(1c2iQ0v^L}=uvJ(b zl8)w*yOt7W$rBNM!pSjO{}B`40=d-NhtF*gSRi|7j`*X=-TT5fd{$NoPX0FiBv<&U zSL_=eH49}3m|OQT+<Cl*_s`3{D%%_bYLsQI)-MiOQ^4O-*CBUI>rU65)}0&fzbu;G z$Y_z>AjL2<^J=qNc#=qSX3abfRxvZP8YaPeXDiJr6C<8ZY4%Wj?S12n$rO<dKKZ5W zyXXA+Bht_8cXjd?{UaNH?)hpkYwvrHJ?o{ywgw&l6S8-Uh-QYkmD}nyS$q@N@2VT! zVOzxdc**3oyLkMrGq`M<rYhR0w0h#j73y9KOQ)=yeEq)Cl;2YI*B&3Y6bLrEtuJ*! zJ!ZwyKz<RkkDNyfp3d}`kaELp3s+se*H0zyF2=z72d?=x<eKL(Sld*v+;hC>I%{&3 zooI&gp^w5*f_r?PzPp(<QCQR^^_JY@+QkQEn9g{V`RP;Y)wnZ{W~Rl7UH{E-dV`1Q zgobMj65=mfdvi4UzKLBgb+J2kE;>Fz?1@|W$$*UI2bZQO{@(rQW{}86?fcCCysa3O zUa^UrJ7_vag>6z2En+ucaqX!9pJ{nWgp=2*iT^mu?8EHRv?pdib<;PJnCaq}mb*o| z;7(CV$kWW@(>`3fe4@XlVx`H-;|VP<Bb{vy1;(sDeX)mc()Ov}gq`O5zR?KKd-`RY z@|*Sm7x{^a=iQW=uI8|Qo2GRB>d!YOt^GerZOTp@I3G0cPD4lk+l$MR*iYq%91#w1 zbM@f!dj5NfO3AD3f{&IT%=Kpe_N=J4#oXJTZPEJYkJfvvF1Wq@<B!J3&aWqqUOoQm zW}2G!W|^s?A)XT@Jrr6R&K-HwA<kgg63le?^;L#xoDbPATo0-4jah7b*Zb3+X5q)j zryr<#BPOk0JmG9XMPxMVd=r7)?7>PC=7$vD|NpRU;q4~T3CXs{K5|}CwRnG=cMYqy z(}HikEe`$n8_vaK$<{vZbiKFzsfm4(;l!ttWzSD3J|tFlLEf1Ct{2PQ|IF`W4j5hK zpOJ8(h^JAhv8hjbk@v;Vk;d;CW7!j}e=g{F%G$c3->kIPhQF&Ji=pmkJ!4>x><vRf zcALO&YbGS9&EfGqV8^xl)V}-;cTHq1=C0|v@ibIhdgZ};e{#w!HYjnPTq|9;x%o}0 zUzG37$Y_W87cOeZX2s9@A^uM2R>Eb?ctOU04HI3${7?6Zw=fsBzh14o;=D@!syX+Q z`qy!6&C{D^`pf>C6W;``WGk!G3(;YYd8+?>6rM|e?+)3Zw0+yLozqhcY}_*4p7{Tf zw9$7}{+@S*S#E1!v>sE!#sxKxSln0qkU0?On{ae){?^HJj4YoE^ojntC=|?U=yP=0 zL<x=H47b{4EpEzBXXsZph8C6{5OICq8Zl8%U>nyyo`d3Rxi4+-Un9Y_Z)UgkRR6YT zTS~S0IdAp_aufux=NTVdoE{;!lO<C*$BgMjpp4?;#{cFUmHcm~={@vUh@2RuXyn1Q zHcazdQLfaB&K>*M-&6^|dege+$>ctP%;+oPS0C3g-&ysrgColFYwumfe{*F*f@&?^ zsq9;BB=zl1O7*7)YJr(=7H_D3zOe78K+`wJatZZ2w!3nwTXslX(h!dRt}E%han8$g zsoOS(GOI)gRuo@56kN_AB`dFY+ahlU)1m`B-d8t%xEQOT6UJ2;JaHl?*G0vpv+bq( z70$gV=2`h;`V8sC=@T4Jg|>0%hDh3|&6;d{j&EhbM^8WRuU9gzsy2mv*`NRC!qv@J z&;I@N_AAe%_k{}8$+v#mPAE$M{p99U#{)BcEH~=>)D{+v^5?XhBKmcP=8G$lo0T*? z=X_2}vRNT$^uh53$I<CGOofZ@9ZG-eb&$<SN>z4S@Xsmt^gVBK9pNym6}~dX@p#JX zl!cxlJJU;l*s*{1oba^LR@Q+tR(;OFNjrT-KZNYtcy#5|)CW~Jr=0%ImcAxLK9x(5 z;|0UbNQDbw`X48>znIPUy!e8F^2Pw6Sr>lGmM3<^FHbx7$M;EN^h=8;&2mbn>rVtM zd-dav(h)14w9gxJPOLgqAN{8MQ^%PlELZoo?o$!w+P06`{Ym<wI<Di=p-XpV<uK>Y zb@5>kd-uP|y5F#uN2X08p>6X?m&;l&X3k*0@zLVn4FmtX(Q`}#Uuku0yR=~*=Yfk4 zw2N7}K0ZGYdTinxw`*33JJTg<q~6ZmX_RDmGj`(2^BKWQwyazkX=8J->&fMvGrUyz zx1U>9>Df5>_9{=&zBSV6Cta2r_NgV$ys=WIlu5X~#`|pFe$EGRrW+m1#pSJ5Eb5!H zOfGS8Q1WkYq0QWrEbd##Y(9}QV`}flc`~u8%lfV5_={$|%Kh~6bN%I6m9t#4(ijgb z&Da(8@Y}@e>(4ZFKYGi1b$ai^WjvS5yx+=B6AU`r8^AYbl}J2GqEw3BM`^>|4;VEg z47a&Nzj&$ff#1$~g>rEJsxu1n8qB4RtXjLJW_`(>>L0rs>={Mam>vm;8Oy~=I-P6O zEH6`TY5Ojo<r9C%v@NGFPfU{6Z|{`a12gyi=dk)I@vPnX0$Z>1k|kzWSKW7eo8P}- zf%ON@X(dIPB6XJ^eKpBq4r99)c!+VYcGBg>$+sr|%sH{_fq6XdxhV|WuFQY_$jdrw z?uSd;#N-?6n_~G4ITx*(&1}BmN@a5Q)P#mT9%sF0HHn@~wEG?#^p&af=)!}A-Lvd_ zAD`|l)-PPgI>A1A&Cw!TVSAlxr%Mgq9e?__-(3FP(c?$&-c2gqzbCGH_U=DX|DMf_ zSW_ofAHQy0!@G=qjCDs|uJBgB*rFY3rsgZ@QXC{%@QT4#Z)TU2QZ?7cgfqXN{{8)$ zY0bW>oiTfNN3Z)=_4o4ESNjC)WAE?%E4U@*&xV@)d;ZUKdU5wtUFqIu*V)D5j=g=v zC-d#$-$#CT>UQkj8yR1`_37<HZ24ji|K-fCmb`W_H@+k4cbL^C-8bL#Qn6J5@5R>s zfIq57&OTdelUu@PAt+~lU~5^+n{!jFww>g8^>5zPWgCCGzRom0z47~W%Njnlqpt6_ z-g(iccYb<ACF_Oxc?z}>Y&BOeY!EJK@w1lR+A>>*V}YW)WJ%WTjD+~5yL2AqmK#bw zJ$CYZ`s2S%olNJxNbgm2azB+@C@1({_s}%veT@%Zl>MoxGpO=A#m<-7bXv++`gbS8 z&aiDo)^i^|e)Yl2p~~{WSFZQhHs4P7&`{V`Gqr)GEqzyo;`3IvmSZ!eU-UlCI$i!O z;%M^PW6_TvyG>tX>DD9pQ~GXYdfJXz{yci~_6qYyJ=`dLm~pr1vRkj!=F8SKEz0>7 z_h^cM<-v}w>p|v=pJu7du6iT1bD>hjGhcx{tOp*PeS1(^o4v8Qu!H4qg~0RFBZ<4# z$eF}Wy7uoY?+J$dmJdbE;^!ql+>O!kTEm&q+OTKGXC={BI+}LxChYRR{PoAC4>w<L zJK%JBuAvR<QqSj4HqA|2ci?uGYXwt)yVR+5AvGQIjxUh=%O_I4>g|WClS~AXH=8+@ zCz|!ncM{C6Y~9d&X8QW52R1YG_wB#L=$PF6aq-P$^&@LjOeAg^3(q;{p1-BUw@g~d za{GR<g^KI`OEsDt)OhLbqkeahii`i`MLIlxd?c#XVvX&R4;Am5ock(cw%64Q>ppNL z9J@O6;?6C)ih&B(FLr6pb<e(>J9EAavzl{w-&rmG!0yXCKR$bK(#`4uqwa(psgr-~ zx{vjkxy4#EtPc;52tU7<&3(UqUjD<0Pwnq7;LeO<=&1UzUjNDZcMtQIoU*&8dhq^V zaXpPc*&>%SofceW+jPuH+OB1#+eE9MQLC2~F>$e|SU3M;%hwcjdG=;{e7fL|45Npu z?<%qgFI@Hh*CxLzJ-u~4-`juebC|Z+@yB~T*3#EkmRT(j7vOaGxL9tV^@&quW#-*G zAMrIj@BgSYWmZ)fLjjYR8K3@&ADQ;*yc&Mzi|#l~QA~citve%4zN>IY)ZG<dPI29x zz~(EXH>a`4WQQBiyu`IL?$!L79v|S#VI%wg@!qG0_GZhRU!vH)<tbnO8cT^wsgLy8 zfBX*p<5bl=&wcxv{g)owd8}HKKC8`t;(h@wy$_8)&OLqlT|?=MG6ze{zCS-~E>zt8 zX*Oknp<Boj3#HP(Y0j68EG2KYI!trs_<nwG(J#3jzq4xp3WY3FjX!i@{v)}6bB#qN z_g?Y4UvS8~`A_3=i68$x_A`G}+q`z_tQ7)Hb2503@W`ya-6v4sz_~!D<aqwKpP8PI zUcdVi^Z7pmVt5ABPY>VhukIkm!0^DCfk7U3Ki$_g#L>ku#PM#-`=Z-!lm4GuJ|p?v zwI{NiUPVdjUQ?{xCMCZ+HEG(EYtxICzELz#Nas!3VBC=L?yBw8t9uXF-7NinhCzYh zR8;;eJDJm>vlT8}zFc2__wotpiJv>3*Zfgm*c<Xv)0)$->Uxc`U*wi6O2K<SO@I8r z^~0X+8fMb#%9p=+wA}K~nY{9!QA^)=>6ym7+Z!frc<u++y!hvpX@2UH-<C<AxWQ7n zajFt;g~W#%rOOe;lV2;H;nqEKM9-|zRBdl2qsmv!>cgda!Qa9>l<yqfc%xwEoK1Cq zw+rsxou1!VHvjL2g|82at^Z$LdsMzU+(=|4<FTqYE9Yk(JG?dF-O1%P&zG<!*+^}? z|9K0;!VQxbFJ5o|+o0>TXZPhzjh9w?CQUb+{OPCF!riBT&Ssq*7r){2?AP5l@4k6f zbujMknVWwf6&-mtef#Ix-M@?X*eu$um)5=e=bPo#doFo?ut*SBnzr&xqOjVFJ?wV1 z>J#mZv*)SgC|8^+nh>J*<(R=dH=U5ol$9GIGQ$?kayT00x}a!>P1b}X=}Mepiql#D zo!gNpxJgNA+ntTA9J(8mBivUfZB4sxD0*0&^ZUvTH#$uI%k1~sF2NVN?Q+r9b2D!( zb23g4<v3Y$+(L5BAMLgG7hM0EvhSHCb6VIe=Ef3Nb4yFxLo*^iw!~hVr2DK(gw=7k zNKd=V)nfKXP1Vv*MDDyWQ)u0&)2LLmc9P)Zs2}>Axmhi{kFIu=I+(ohR!+#R1ux_h zqGztxwLR@{AWqY_CbjjPNJPfc-b)R$tln8?)!tf^$ZWYq<x1EK!4>h%(<W-pyj9;H zu`c4o!HN(2*i5UrJv}z_`YXOzAgCa}jN^LWMZw$aSUXwQbX<GB#cleNZ6ZDmw;Y(# zmxOJeCK=R|$`f?Hg|D#lpt<{hqa~@L9p|-Hcy2i1%NOM|w=qibSmh~)D$O8)APvW_ z)vK@ku*)&pzhcpOHV5wiOMf5Ub@hP!l)KG6TuatQ-rXnFazy<`ugM98H`&U)itNh2 zxB9ui`m=^pzoA>eiE+ozWtj(Oifz0gb>iZB!^~I8dOHIrvIrJ@dbMof2@@YKAz2pY zX{+X_7Aa5E-oU>2QB8MRc1B`A7E9D;!v+qs6E~&Z?evZog=XyHzcQ=C{m`AWpUx*F zy<PjUBz=8jRCmiCqib2r_HEho4y~Kj#~C(Vs-~&Bd8u~iZz<z*Ya}|~WW+P@M)4Ll z+)fjcjS}4KC!@W=;D&O{Jz<~lE3BP1H`b(1nAfW)E$DgfQ|z}H75B9MZWP_JtzcrA z%SU0|-9?TkZsg6@W#6)>?DqW+98C9^msIWZsi|3Y^s-<YyUCXc*1=EL?s&S`xPx0x z>+t5OIyNevyf)_zuTN63{mvW2d}GFsBj%C?Oe_kmjn$D%KaQB3W-0i@ImasS_QS-? zSPorz2X6kRg%5o8X9n&l+rDN_iIm9NHGhsxyR$%WiHMX^4EJ8XHJ6S>#7w%<Yqulz zbirN0Ee<a&pV)LrMA>*4aek2!Sok?u%|Y4gcfP}^ncjD2OS>4p=4KZ2h<dzXht~<o zhlM*QX|B1pZDv_r=CSJ)`Zm20!F&96z0mc0zNP1MmsDelwqHk2_9lxd(z*G{TRh4h z<iB(mdLy)k@2xIths_r^WyOS7Guo%H%+}kc{zq)GhV8;fhr^2dG*2fk^6Sq06(wn9 z^+SX8oy@)D?n(A4yOw)@ns`ESr<!YOs;B?q+IBPZRhIF6H+>noJ&k2&CUF{`Wi{=; zej+N<{m8mv%cu#Tg1OsF*S1{xw>WYm-xq`30@5$sy%`VnIl9beulIL$UK9Ur<NXDh z9|LBFJxH9`a5$UwWJ=4es820#3Ri#pIpsjqL@QmxFYEN4c6d$DIDRMOoJW<>V)x)& z?Pb@lx7dsJ^PDzPnZ(e-zG~~07$=X-#yf9pDYBg<o6zr+;Kjo!y~BF#&4gv!U#vT_ zru1o#)u9{nzFyhVRMaY^ti!WVE~?V`<DG+Fw~I91)(o%t<aBF#<M!+ui%zCQtT^Pb zp+V}4a$8dD!c%G`qHgPgPQ@l%S`i%Nu-rBI!khT!IE&TCn-={4IpN}pa<7dQ{`E#7 zYq(_|e_wWxCz^S(H)9#+gqVP5jc2c1&$iwzSg(12PdG(6WPv<)_=XEBc2<@r*l^xB z&k;Ov?&qKwxs{t-6A!k0ZalYW%i*=JZ@MsOC73!I@uY50cRJoOnW3gxguyahiJjBz ztdvu+P_Amy#*n4Sn-rKQ9bBL6&{@^Wy7AUWmHWNPx({ZvEcmm)$;W~HV$W-K1?GLT z+SCs&H~um?j3saR;x!RWyc4V}oTe2NtoX$B=BN{wbGXcfRo9=!rbf)PUQv-*c!4ol z<5;Qow@TlQ+hryn{hz#+??K_jr!O7^Xg!k)Vmf?GY@746NXaW(_?`+2#C~RX)Yy4a z;cH}wjB;FCikgsz^tb&2FQ=Sa>vVd@6E5NQb(()n%X^eI?fM$?LC1T;-UUGhQkU3{ zg&ohDQNUTX@q1a0)Dqt#uc9;_*Kl1tEU`}2wKc*y<jd3*6VBd=<9A>-PO%AGSs*EY z$V6f5rd^AU&*nEV&$5=`i#@PS$Kzi5HQlYQQ-8+DZHVkCySyrq*Cpu7%%IMlF_F`L zbUi*V(h}>O9-#UtOn32A!(<_yJpB;XN4~#hb=o$!<ohZXi#RHUnayl;`I~lY#tOl` z^4tfe+<xQMlf84x%hstz<#oH`>ZP6jIh=F4R@<HD<aNKMVBQPv{ioVvy}qxwoMz6$ zy5jA!wS|uv^H}Vwl=ZeUglzoRzsvdJb;jA<RqjR#)68nZUGJrpv{>lcetX?Bxqm@Q zkm{lQh%F5YKHoYz`2U6Jx@@{{w=v+E!xGt0Rc+37xvQiV*K9qa)hKoCk&Jw>KmWrX zM){~tk%W`lclbBuzjibb=3I1OL6p8>RH%Jj6w|{g?`MhL`(ACZ=;Y~5$GUSR!j|$} zJ9y*y#<MQHYFtm}`dsA8Enkq?_T%7$m|a4bj$J#~)uN%Z_qZijwoK;4=EMCpe}l5W z27G0kW7c}%V8BU_)B@!%Ke%Lj=9KputZ`>5e6fPL=3)EuslTlyZ-|Al*S7~T*J-8X zY;IWYdd97bi|fR)9kn9+dl{_q)w6aVHfyPjIdM^-IX^Rg-352ySMm4noIR)iTR_I{ z=@NY&_Pku3R;z34tE+WWN-J`_g_k_%o3!uifrD%nE_+)~?QmT#WiX@2=KBkU=S{}0 zM!Owv-Fl%}^+MtL+L?Z~6FxGnbt!0mT6jHkM)j61B?g1W&fxQA-)+LJR;t{{T>30< z-oEwft8Ev*?K1w|8=&@BOHZjJB9vpn-o8t*$Kvx&C%%lje)VdRY)}t>g$kqYiZ5%6 z8aMPE+wn7Y<!O=M$2lF884{XaH{4yDTiRRrZG%--nUlilZ6T-9Os>>~US<-EHLpH5 zU31a9Z|An1+Hzts$N#k(^VUX}v77E!RX@1A;>L-rlMRP<ee)_c+IDo2$CAK}A5#y_ zJNlC${dLXyf6g1Hi9DPgudvK7ed#-mEBnOMUp|^38-39BYs`k=C844oPnl%PA{SiA zI8e4ipmXQnYuj7aCUsst6gTx^VC2^5^Rn){rp3JF2|p@(r}x%7$>7Ne<qKNYl=pg1 zSKW2O$$k6Iq!p#B_O!d5(&9KDuwsd0^_!gUQ$^Dj2UUkmydQA!mEX0T^^2VDswI5a zT)^RcN^E{ZV?dI1OV|ook8QtFcdJ#cHx13sz0$n)a+zzJjEQucSd{+j<@)hKMb<yO za<227pR{SI^OZSf8|G(EeSG+-rq<KbOE(=gYwH!A`hEsqXK1j4m9di0w*;}fYn`X& zC3f%1IV`^<cG@=W6*o_AEIY@%@{-tmmm3ooX(Uczx}0=$tL^*TYd!4eF2p%-e0MmT zV6pzH<-|oD^KVaDQRdX$RmA>C?3rml`%kvtyHuHu<gK~DU%~clAJh7C?r+ZC)BNK% zODue==9VAcigz>hn539@xp+9MF*0~O%n&GKk7AS&Yhsx5D#}%Pp39bV@_W8l)$V?C zZQ`k2s=tg9#4iP8_8gWmtmdwef3jVB?%F$tiqfSeugp9sv`co{38@tlYj<r~?DbGj zY-ScW^BrchnS5KdUil|l*PZuhyOG{1a&5lejhu_=_P*kqU4td_)63WAzk7e<_RAW( zz58az>fJcI$L?S8=Puv%^@;T}V&fTfrj#i?5ia}dTirhCQCx^M+X|a$=NNbNFSg#c zb<q;0aCtvog)h5r-o5&iV@s*+yx9G-&abQAS5sVBYo3&^_x$<##@8?XH?O{VS3jj| zeOmeT>D<=aOmZ*mntRUi;rH;%mb>@Pzkg3hPxsb_<^MV7ojJJAD8cE{O4+$JxAGje z-)ua#_0*OlMx87|&08O>O*tRBY{gvm8+kho8)O4{&Xy?irfMv9irnU(Q&jX>wB%KQ z{Dus3(_OhgZ!^?=*K$w_pQNAablBY3MS<r*(k$WnX=*WED?0i2XzzWU@$~29RD&aX z?iG0*)tcB4=WHl5HP~qJUge&!<sUcyGugnvb^d_RPL%|oGwU|YziRdWv(6KXmnj*$ zmfilJv*o^b^NlartE?s->3FR&G4lg&{M-4JilX*eA-u9PeIDfa9S`BM&=V2(roqQJ z-}dkU=3@6d>0)nK58HkC;dWb6+Qm?JP19xNvu^C3do_~d64#%&qPbt}|86UvX7}`T zo9P;TE|KgJnxeU>m#)74$C2QYYH`j|sVC$?Taw;nr`tNGC-3mk{^0KUZ{kT48(Zh) zD^8y_QsR-2yJalqah9#HIjr)=k;Uwu&iostm6`dAojx57$(xzS|64ENvOux4*XeYw zCmB(UQ)gY?8=K6zRbGux_M3f`%)5)VJHk$teO;M+-*S#~I#)w|vg1cyC&R)smjiD2 zrfpmMe$nT?HxW5OGPT*}S!<<)_Ny<O*7>?kXx;1ti6dNx<uVW1U6hZF)tNnUpAJL( zYTdAP+gt;<raXy{UU19Y_rcP&91MZ$)|B2URF)0faa!WT>H_~i!a{5O)NjvR@yg@c znUixH6V_@c&-ORCaKplRQ+M>HZWo@^rL{s@6IVRe=zPuV>JoouN>E<=M5ouUOm5Ge z;lL*-b@z%aU(c=QDyQc%$G+`-7vMDY&FQ49=*_RB{^(V{F6%k{n)`@g?Bk<zzx(Is zKb&~8e$FDz0CP^GgXenPuez`JXr5GB{UJx(uH0Y6py+Y*@7U#Om5UE#mrhIgwlVbg zidSEb1gT6+obW?|<EF~CBbqFXau@2qXBYc0KhP}O5;N_7W%ANB4_5t-N>@#2=ALS& z{k-2QsWtx1{I;H5mRFV;Fzi2YXu%h)pG8-rdH0o^Nn5afmh6+|{!bq;o7U<$3+!)j zNc!;L#=W=am}f<H&f8eVd96pZNp~^lxpcXn9}~Nlu5f#mp|t4aOh=~LgjsxL2GhS7 ziof%>+M#HhBFz)C?ODZ~mcMsgZ+=@nD<!5qdrrnnvsGCh5AO2W?cY?sMgN9-@~ubL z&mEup(RFK7#eE(3uLtYR4oIJp{Q2;EY0$oPM-HT3-eKMLDRr7ptaX!9P3B776(?5d zO^gZ>pZ<R9w7rKv{FyMj_TAKG?G;<siBC_y5v1O^JS3#uV9xA^YbUSX+H_lZenmw1 z{)fd=FWE<^{XCT6e}`M~Tf`?nw*tW&;cau)aTydegiPSO{4Aw(v3B^?@MU}NFDPFv zD)+GW{qt~%F!Mu)Ht5%_PV2vSv`+tzcW2s{PyWr{c-nXRxR$7XZqaYfIh(q~a;AiX zhwZZOeHD#XPakJkx~*b+?q5FH;!*PTEe4Z6wj4Wr=ARa~`Q^XSYcKt7zTxQC*;Btc zvxL$AQGo93>HS~M8LB;+xTx(m!)Fz(#T#}rc#5^nowsTI%^81HiuRSio_p$mjo-v< z^WAav66<bXU%p_=y=oq_J(p@WJ38<Bw2ifVclo*p@#mW#Ki=z}XS8PXhelT3iw}Lx zAE+e6TP*7-Zu)wAujb`g<2k9<xR!5!u$#L;_4q&46+27Ijkm?j*(86yqq|$nzUO@I z?X;Thr;li=Zsq(oPl;pWKhrfIwL2;gH1ryZUga+M6x^kG=*hF=n<qc`S@`+7Pu-KX z*}FMr3nzZITA_M-YaUzplV#-_n{^Zp2b(iR)yDtcexqvddcHj`uI=u;D=m|#l>2>7 z-GUV#&e?r_{ou6B>(>u{vYb-vOXf~#+IuSNZI4!C9m`>+&-3Q~eaBe-e$RtdOE<@= zos>0tZ6{pMt@rU<_uGlT|LT_5cYdBY`{nnO8`?V_%D#GOc<96D6p4nO{Y=cJ0pX81 zGS`29c$j^S9mBit|7PA4IDAa{LY14dX~f^%<-!lo#r5A>mas<tqV=4No^bJ5&-UL` z{TFfKgR;%K&vEb5C+^;9K53(^<RhK!cYPl7wA3Du_`nqtP-CIGPsiML*WFJ7XB?+J zzsB;WLv;1JFIDF(&Si<SKWLxHWKnYM`=X6Y`j`dZMS9e8JZoQ5lxDUi_sP|Sreiw) z(`9r|T#wk5vDI|1MqBBdrh{Hj-e;P>|2VVJe93nst7^+lzmL?*+sg~8SX(#E(fO}+ z?m@N4{JSrmc&b}&vIX|UJa~TjcYtGyj<Ccb5!Yam8@!V~gbT2|X;g3Ba9LPus$lQD zN7X70PdYX}7C&gNuHP4L^v!F6QMan}oqd*eObmav|Bv)FtN)$v-8NT-c~a7w7eBtd zc=6)Kx*xyJMk^HmDW6zb*Ky|Leb;A48I2rX+%2AD|NBUvzk`P7M$fbBubHJ^Q}W1H z@Ohe>bAHyGn-;U3Uw8jIuancF5TYz$_xiZk*WG<PB{!t;s2$(@Z&LOKuT5KYxV*kA zFkAmVpMK6|-rQ-6WH+WSoqOPEy04@C>o`IC^A}cpkX+uCu6*TaJ@4IV%-TK6XIUn_ z`M%@gcdyHL-zPu$!}E4_39DjK;$n7{1K~}<0crc2bMiiY)Ghm*5wyZQEk8qMt_u4Z z=c~QKl{p{uf)@U~G~<8LA!Ey*S}jcW;>jwuWi9Q8i##LF=3o4C__ZjTMxWqHJCBXJ z)4y?FnWihgl#iL=$$duUA9WL6EB&2jeLwo%uKwFw1@}+vS$nrf);H?K95MGT?`FmA zUG=Obd;i&89J|9ZcOEWOQ;zy`X`bGpNfTxWvivhU?P%J3dr4sRZf_se&|S*!4TMAX z&AhRjr}E&=YFD8P=S7a6Ua)PmZ=O_nf|fS_?1ewtm#bwsM?HGbx;EVPm%>&r&O3Gt zYnHa&`Kk6taNYiS7XlMwR4R-dm+!DJI90V@U%|l1vSe-1#*kNw7k0*7nUI_7sG|C~ zIpnWm!&bW;H^mxcIv-v6HEn0_hP^+ZK6>}}OWC)7pME|1mR45#{pW-T+v5E@=EVEo zkGXXrB6j~=J+b`!XX0iuVb{f{KmT65L;7<1e)HPT$D?=s`IYu@O6uv~`T5TZ{+sK^ z&AXy!R<Sbg-t(n<{w=@x=UrXZQ?c#cR$=e+*XJ!0_n*!&GkD^{9Cec)H?}iQZc}oU z4VZqrD}HU*J6o|0U7rMa^)|DdmTg(56v6uD@S9&(&x$K)l^<PuwYXmS-p;0aE?Wt< z4L?NJnSZc<RCHMGN#D5?&g-jr4BCD3D%t|;9B<4LSXtU76XdY|`}&A!M;WWleU;xF z+hnO?yihy+?82D4)8*SlH73um|NiL3?S#4clOFOn1lO1RzuqOU_Jj3B+?j@~zx6pE zS!Su<-&a#vR5anme<swy=XHHQ9>*{+FhnyjFv#E@d=B?;b@gFAXvlTgfQR)$?D7jY zc#Jp~Zu!BqG+I+}X6%nGjLNK$az(%QZU5V#rM>6vvYE?GE-`cIC(hfc_)9Qt>&K^M zzTZvwzL;@WnpKv%-?g84*g8Y={+Z*J-Lss!=D8ppmH-+OPmE@&<78l9U}s=pP{Hl0 zlKg`BoYb<^9KDi?5^ql}FWnQ*nb1bpwG!0zikTP~j9C~MWN{l6<m&7n<g)hC@xIv! z3@i_R+i_QDE|V=fAQGJ8V>*L-(VsYjx636A{O9)yx%Y)tpXRQaCFwiu3&XbeHFq5s zYB?C^Jz$pnG-JUF`SjU(n^z}4Ju-FArmpm@e|Q#Z$OPL9<XG8=FVf)iR#>U(RABLY z+TUY+cP;7;>a8{}Xmzbj3!Ix;@G;cg@|)Pyr@x(Z*qq*`X)iB!D!;45(l^on4BO%G z9^TT2F6(=y2)wIZ!<(A7<@dUXL)-~FpWZP3_Nl=(eTQEE1B;Unj!gcXaP`<t@d-}p z&c6$)_<T2Bv3)zabe6_hTgwd9GFwMOuY%3_+2#*~nu4F)UlkZ)a#X@q|H?E$RqlHc zsn3sOJXy81KWG-iJFyL?XBqVcd_HVD)4Keo^M>WZhac^ax_M)t!OwZ=mlK2x-kC(( zSeRtopR76c!>tD=x2^OLldITOEj&d;(WCFqzMuu3w|Tzk-|>{1d~;sc@hg)h_(ThZ z)~>5w;iJArG58pp!26q9X9NVfdd&LE9v#GRd{J(jc>a?muN+Nx{%|<l?{fQLVjKIv zl64ZnY8Pibb*%jK<z(?=-6rEB#<E@cFL-yJ>`HX$es*i0e2Alw%*&I%+9t&-pAt(d zxc=8&{H2Qd)d`b1zioJNIPdj=ZS&?%ut?bN=VW+)r~ApLuKzxJ)jwD@QQs%-+u6oY zsd|pU!aeTIdw%&`dAX+MTksC+hnrq*zn302Y2p6nTGvT@{-L=RH%-M7F3q^N<7r*m zvq|erKTmR<`Si|`4Sbto%S1w^xLW+NF3L#^Y2*x<T_`z!iwpDCV@Gy*3%$GcsO7lI z0w>QMYcH<l<SCXd%ZQTLRsV2ee)tB}hbi40pS}qPcr!AIFoP~V<-mFsDgzWOX#_D+ zuw0CaYy#*21YWdj7D4(zcuC_kX85@yD3>mxn}B|=97s0^FKIMqhns+M%N()^pbK5m zPdfqW2H_=*j}71^grc5(f@}u110z8CL3l~y6Jxj;NC!dS(+@g60;Cs&mo$o*!1X7h z9wvco1}H4i50e1t2jL}+KB#6uj+Q{y4)Ox}GIWqu5MI(4=z-z{#G-U`BhVLbgS3P2 zlEyesR3ng=awD4pDp1ka0)tEd;U$fs-Y`>etqevt3w^#4WDW=~Y5W_7(=6ERCAwkg z^$*A(5MI()Rfy9taBYNc5_+8hG6jT}Gzt{qGzp~!K{pY->HwJr!dn`nahnLKNCLcB T*+5G982A{jF*7i5mV$Tyt|Avr literal 0 HcmV?d00001 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d11ce1f61e95fc31351dbfdc9abfef9124187f64 GIT binary patch literal 40624 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 literal 0 HcmV?d00001 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 36caa7e9f6..1d9bc28c6a 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 @@ -534,8 +534,6 @@ public interface MetadataMapper { } default TableDto tableToTableDto(Table data) { - data.getDatabase() - .setTables(null); final TableDto table = TableDto.builder() .id(data.getId()) .name(data.getName()) @@ -548,7 +546,10 @@ public interface MetadataMapper { .description(data.getDescription()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) - .database(databaseToDatabaseDto(data.getDatabase())) + .database(databaseToDatabaseDto(data.getDatabase() + .toBuilder() + .tables(null) + .build())) .constraints(constraintsToConstraintsDto(data.getConstraints())) .build(); if (data.getIdentifiers() != null) { diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index ded9023e43..c76e5a3609 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "729017f537f9f8fb6dcc15703392c7fd79aec494feba4c107e7a1888e8ea955d" + "sha256": "2ff9fc673f1fb1e5dc272aa711f4e730088fa0188b44449db042abf99b6c4db7" }, "pipfile-spec": 6, "requires": { @@ -360,9 +360,9 @@ }, "dbrepo": { "hashes": [ - "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" + "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" ], - "path": "./lib/dbrepo-1.6.2.tar.gz" + "path": "./lib/dbrepo-1.6.3.tar.gz" }, "docker": { "hashes": [ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..93e86252f8c62fbbd600ccad15fa4044446d2fe7 GIT binary patch literal 30965 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�*PRg#+^$hN3tE+Q#S#{9 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 T*+5G982A{jF*7i5mV$Tyt|Avr literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.3.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d11ce1f61e95fc31351dbfdc9abfef9124187f64 GIT binary patch literal 40624 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..93e86252f8c62fbbd600ccad15fa4044446d2fe7 GIT binary patch literal 30965 zcmWIWW@Zs#U|`^2u$hw=$)ez5xrLd5A&r}X0VJA|RFqnfukV;!Sm2zKnVMIkS5P@M zEVui%g}}de@rEp3G9IkqJLGhBOnA5K&Y{xDY1_m3_<EB3W$vDuq<u2;`~CSUw?CfN ze0VK>(U~5(v&Q*C+S)65JY+Yfg>Fp0wf5`j$Uptl7DX3Fiui~GmIQ2Ssad~aQcGCR zgY!JvhnHNqFl${_u}flv+uVw^Q$hl-yi>1U6<MZzv{Ce<<ElxsQvRtevoc<Dq_xd_ z<ASn}-=>%6o&DIdM{rO1fA1@^#IEJ-V_ENQb?0}x|LjzjMt|wnEj~K>i+uI6H+L-3 zcpQ=)G4=lH=yPi}o7cV0G5fsV-(BX#0>f?hoYYQl5}P+u;{m&|`-Yf@?;f9PV-B0Y zKPPePUUuc(5l^lJFlnD#xaia;gB2zzAqV6f7c-vP+Oq%eLUlLBqn(<XUgfVkwcNhT zd=;7?a%A@66WS-&T$0c2kIgrK`Rifc?w$1&N*|`LvE5;_Fi6M!eN0+#a>!iC*Z&W6 zKD%Jt`rxF>CpYst={Hkr+@{JcH8c0^u-fP6lJNL+LlIMX#RAjqVa9sKr{-3<F$L(k z2y3WwIsN_hZ+rP^hPKk%SEjVz$qEg>ll`jVP4wEpos(uals;m-P!OK#{iHqQ=M+Ef zdGB6n<%$H)R`Yn^$R+b?mcq^@>UJE?cW3-bsrOG=^rBW)V~^T#<|UfKXO?8HnJCYs zD_T%l=lA)~r#8+0)6*2gKC6W){t-Ce5ZUpS>0aH3?%A97Ci}9<tX+C#NiKiTg3jl9 zyH}pg`}O<T$CG}G8ow%aJa#`QI_GVg`GLY~wtUtx_r5>>`|joISN+HOSq*rdW^vA6 zsekxE+~>@m+BWBP|LrRrtor<?@5=70sf~Fr7dHR8nZw+lDyL%8*0)uB{qZAr^X|<W zbAK*c|8v#7;${85C!04-Z<+i4rSZNWNs+${=RMIeE))BIrY}UqLidb=W~uMHeYwR< zS^ZD*IJj7?7g{iX+q`4q_PB<xivk00+_tMOGqS$SnwGa<i}J17w<=PV@7pdibolhn zHSV3df90}Q^VS$!R^K{vkUP2L)E%)87T34=#LhWz&;9Y2tzCtcnx{<K?umR%{MKpI zx05@q_0(Q9hlk&#?p|52m^bd6$g|D+O4!O1AH_R7`6hGqZKU|_MZU|N6JNexnR4s# zL-rF>^KVF=T<TV3nw8dR_3m5Y#EK+l#+yZ_j^yfhxSy>28oB<r+t0W!J72usdHU$_ zZC8HJIZ}IwO*+?+>q*)51*%brf8;km`#Q7i?!BwUmvr6M&gZ#SW_J3IY9W8pr0c0m zldtPJGO0WcT5S6}9+Au6&a;l<eWTkU&&<GJ&ViE4eG5xU;JLguG&lRU0VtOjvUtf9 z9Np!p*~qiWEcNdN6>p<s2?-*<A7xBc4WD%R>wW)8Z;uq-ede8V_ipj|y<JaRL)ez^ zMU-AzfBbR0u50l#qti1^%sSunPW9ycUPaDy4W0nrcg7rLUe6}viHc3S&?NY0dP3q1 z5vi=(nVH|NwWwZ+JwIiV7Drairlqq~w+Fq65PP@e)XJGW`cA8a4;RT~?%-hE+J1WV z`FCeNHtgB8qwKzAmap+@^PU5z)p*|>{!=H&dg1eBH^sB+W_gQzwY-hFniL*}WLInv zy!-3Nv3n&35<mW*m5Vl7F-14pBW2$7L+)xu6^Uv5W??&iZ`<^;;kf*4UZ3gw2`Q7i zr$~7voZ5MI#il}u5Gf(8gzg0wmrc#)tlx8)d2z#|15-qHey&>3by3${mT^)~MX5-p z;!M%1>(}1q?CePYy!+{+#C?h%qNmBl$OULlTckey#wCeRwPT<1C$5+y=ltTU57T;+ zZ)qDsKXHccnSQHhwTS7*UD{0C_t~Zh?>H>0yYs44!OVbnN0=`$KMlIlSQNfDAl%$M zevz5m%D|o1UND$k*PXB}G|~H~Qs}MH==k!rv-&K$?=BNoGnmeFdy|$#_?%Al*Qx50 zWETtfPdnfpbjMM~_@IwWyVTEh%hy)F;OSo}w=e&~(;JI#9^c`<w*Nne-u_>Qf2?@_ zW3pKEYE9FXvwKrA4lP{mn3F9~AHT-DY+dxN#c?wB5%Ldo#8->;U4Hk#M6r(LQ?YII z+2#Gl+*ekV2h8HB@krej_djaQI~}jZc2=P~HMY-rSsR)XP-c2_t&si0)&5yerXN>H z?R@E(b9u(Q?Q04Gs=2q<YNWhrV0u$@FL>g^%yX-M-x80ApW1Qg+PCwQcW?gfl<=r+ zf!zOVU*;5+FkfL(icNK2cIi{}hUr$fOT7+l;TL(c$?ANOuEhMUix&AL-)|Ov$M$_n zp--$CSIE1SjIHNYcXcjIXZtr#(}#UI*Y)-Hj@VZ%sbW90?#Br$y||>^^A2wgSoE3U zp2YP^zTL_~do#arth3*1_&i8#qglw;4_Q*HL)V?y|4l{rvs3#zxy9cFQWF{fGoxmx zch7bxS7|aZ80=w0t~P^GixC;>t!;MkZI7b+f3*d|-cIz=IJJA{o)E`vdp4OpKa%}E z^44vYYCTD%Hl=e42aY;N%{}+u_VVX>2N_r#m=>t4I;F<RvrF38_O7k%UE70Mvg$L1 zkC~f0mV8!PVE=eZz4!a0*L5NmivMwMsyiDvYpK4N=boZ#aZjpO9)7p?o6-B<M-H!j zdA9m~_ojq%`SJJGU(~)Iovu;o82#fqXVme{^RFeo`I(;Bu&Bp8Y<*_$-cp0ln`dnQ z{riybm)kOHH!Jk9#L5TkI%a<{^3CGUDxH&8eh%)M#1UNeFS;SVE!HN!(s4y>rFi<S z_xAe>KHUFaSS0(yuIt8C`8@@K>e^2}FZVf6e<rY~e&SJ1_xgX)Y(EZn|2A>f=KZnS zCR*u*8UMY;yN4vg<JwkMmUer7S?6qWG~d;&Y3mM$leq@&zt(TI=(-Sdpz>oA@Ao&i zyqhie?dHf+<7T=oTW|XDl4Z}=z*jY<jpr<_{{52vA-5=6<P!IPp8eq(zI&zb<k^&- zu$_Lm_Vc^n--AC%J&T{EdLnw~jJ0W*&yH7?eR*`WyYj_SO&)(Y_Fq$MtfYERJbx;r z`CaCgMDXh~kFRR=d+@uOpNpNKD|;vX-0Syt333H?bK+yH*4Nb-7ss_KJ_|_jxO01@ z@pq-?QkI&hWb}QKpPPM<5xL9eDYKS=@$LU;ea;2Vmsd8YnHyh{as6k-S0LQPEfAB) z68`*s-2Wf{&h9?Fa<Xxmk<_1(!ha9%u9iP%xFW}{_@DVXPQj15UXu>E^C(}iJN{>; z>Q9-^9bTI%%%}P}K77Mk`EQDiLWj*#+2d7?G4m|npIr0d(9F+Lx_fMn=(?ZQiJm`i z&YcR$U7z3e2cI%m7S*daXV%-l=0NEDsK*C)bqn9G=!(~?)N=i7b8tr8vEYU;HuGL^ z+eFN`yHI?`hr&Y-tUgYvzGGj}u~_0er&rTa+sr2)IYm;w`|T-s_t>UT?|$5zn3z4H zYb@P8#dI24177)TxG=-AyusMNacPi<Uf<;hYEJvEee!s@%YV9OpWRuLzNyX)?3W8S z{^$_csrdWC4#nLkcO0yKWYy<fH}}qmi-&gZ;##Dzd)F+6h0}hfT{28NEOV?_Kjv7b z**2S$#TPG~aof0brlWnywTZ=l<d^(>$$e8R=FE{dMH~OkH1wN)cR`Mko{y<cVZ~=< z*{&H)q5(f@WKK(FJ3Pz}XMK7+TwL6K|NjqC&JWM3PDu#-_u%NyoBs0Wj=TF!5L$Ni zx6=iO-RruT7*8Bc=8m-%3lNy66Ke2M{9*%lo_y?cbK$o;k4ntY`EcmL`U)wPihGHI zJ}QP2y=o-xu;&WwKe4V<{)c(ZM86BGO?V$NE_itQhsVPgyN^V#4|KA;b?{NXWU$!b z50fU;Dmy9Jme$QYaDH+BoWCD>s}00ser0#s$a|j;KF<Fv(y}`#)W|(tL62p2oqsBC zXxOjNLwjQw&hGFmT*bGC<we5o6Ek1bbh68GC~hx_OD^yGQs})$!PTrdVUt8{|5^qc zjR>npcFe5jG_9vT>bG%N$Iki5eUfWo{iEqoJ-v<92d?k$@wP}deCGVgVgG>_Q%zNw z-4137H}l0?exF_Nqrm=xKAVY^$Jd1)9cvfFuZnBnUeBKTPU41S|5bPW8J`+!gBiur zb=%(ysm+rKJ=B+UQBK=;^W~FQG}Nb<7yR6Qlk4`$hg0XTzs41J=vr6Pqs0O9kH38( z`EY+v!{x^+KeQj-7CiIz=nLy7sv3!p4<yz~hL#<hGh=JTk(wl(V~zIqJC_waklhlu zeJ_Lh=9AtV&RtCZ6H>pcii3AmXXCqon<`INvi<80v45B1c}>~<)M-_X(~~{CbiSoJ zEnn|#-%(Kdalhulr-$le!gh0gzMWh3^}T+k%+8+17M8M`>eKJ&{hiTumEmW=6^5|l z@cNynJ9tu89mtv%u~tB7;s4iq%x;qoAI>%YQC&Z`k}*!a>RkQb8c%lJegC-Q6fIK( zPp)-upLsB0>S5*tp-EdAG7aWGe#$SlcmBqm96FO0u!i+{SGCT3@*&-HKI`I#`Yv_a zkEA?{<Ch-F+QDtn^ufPq<rmLbzcW5fC8uLPe4EC?X<^DSNhDD1sME%46+WE@PM&1Y z`4qs+a>~dw?9uXbvsoDrx!##O{n0}vmLIX}Uluj)4`H0P@09w6OA^a?BTIy=Iil0d ztK>Nu!&=fWJ~3@PwY)3ft@dBuhUbe+dnyuZPEWYPC>#G-k~yKdqe`41Sm5e`kb<i@ z7hPYSIo^}3r5W3#eVX0()T>n?<~Mw7wWjgSx^q9Jd~U_-2P_xn3UC^QsaU+_{xf01 zqwGBuvpHt^w&-o-mvfu*V4?_LaQcx>iIbAQo_cKNx0n_=t1@z4+}XnOhj%@iJ^lWR z_vNy`zqg27lbax2#(CM&ht1gfk=S~L8XX@sh6Q4;?(eV3G;aNRvbS{EmZpvO7zCSo zwHb|__oud<4eNU^pZlYPG2uA-vj*|DkFuY#AN_h3pFR7hSxdy<BbM`+8zfF2_#mgV zujZ}KjD_>P?B?k2eZf{+9n!y{-st#jp|t7xWw*p02|WvaZ^aYjdu0OWYQO)xS|Z)u zr+Usl(dccU>A*Hsz@bs>NWbi+88aOgpDN*c8NXwz#kG#@e|3*lY_gmjo}T{PK5pKA zyG<K68cdwAGjW#ZAESwiN3?F`@YOCjzo3p+sri!kqwCt0k1TJpuQjp!ENg!0S?tRj zb6;%V<FYq1#@OoW&KH`iOzhNug=9;eJGN@=Ubc%L@)o+j;wa?3KB4JPo@DjvhK_ut zRf&qf%@3~&S$@5r^T!F}RKd)tQ(kFJ=5m=b_12N4=lBnAVZAc>=!pV{o;ATo^X!TR z-X~>dC7=427xE$EMYQY#!3OrAn}PYwCcjzD3if+5ZTXS$e(isi-8G7i)1s`o4jlL= zkhw9kbj!q965?tfr{x#TG%0G-R9O;gHtC<pzrttxBp=pEa=!QVeffRU+AqOn@6_Gi z%b(q0uqWz%@+Bo_wQDmcbt`;&X;5OM9B(!G`~O&5an9+kj$sdsYSxNPKe+kabB%q% zRucSE+IJr<ey~4Vf9v_MgDngR{4)e5f2^1hz;o{141u=905zYZauPLrxoR>`A6~LL z!Fksq#lv;NcP8!4iTL<qYSbe0X|GRZT~jV;arM7<w_i|JiA6W-)Pu?F*FMI7D^+5U z&q?esGv#V6$$R{^;%BwAS?z^Y8+0Gpe3Fi;;Oa<J`()#&(ABe3$IP(jZuiP&g?B#l zpS!HPss3BCkuUoj$6dh_Tg_#YtSpZdpX0X-v%k*qL@uu3>Rl~^gERU!es4@aas6z? z_DKP<`ma{X&p!5g=I+<izM2&T3ry^cWXb2WHfihV(6ZT~D3|)b&fuqK<c)Nzqux(b z);vFM?yMP_cjHT!e~Nc<_%yp6f0h>A+#{^rl(=F6!?f8Qx+y!2M5>Sf;hyZQ_jCU` z=cli8r$`7E+3pI_2sXZYVY0XD;hTOvB}=nRFKyvm@B8hU-0%DQ|Cmc_iaiYX>o-Z` zy%;gMW&Qu7ZcUogUOjL>-gV{GE#YMsH^~3iR8`q{`u5uu85^t(uI(#ROP4<vpZn$L z)9m|68$VtZ=d=?$7X8B2d}sOLdc7u<vt5i@3)6RIExj47(`2B~<iIYd{&|7KgG~pm z{&eo~jLNsv=ym<H>W;v{wL4C_)unms7hg)9({5*Yi-T)_!ncinyQcIj3dzX{9xfJP zGxrWiQNHhOcUXOA0Z+77=kzY?Pfm=DZz>y`<BL2pjJFrD_=yN^Si#{fX~xvEPx!S~ zbj)tI_O};Xw{so(?R!3J@mjlecMkmJKb0uhurh|Lb7MQ#<G<~j&DVR+yO%D!yPW@k z**V@@H)E@WukFnGpqY47??{#T28NXe3StT~d-Q(BcNt8t4?HqMd*4-ul%J0$AATCY zOe=f$sdBZ4F`w$6TUR(s%$XAU%hW=2&Z%E}+0XZW+q6sa<^`<_3cNdAm(O4g-=n|w zTjR3}8=vgFVN#N|BZTe3ja~Ka*@C^L^ClWqDAlzymfYriKJBiiWjEjNiRTYAy<W8R zQ-JxLY@7X4|AargWgNu9mJ}@cCWkXt;P>p8H~Wu%Rl9ZL@7u7OT0+}Aq=Qx;vQy_) z(K%K+=c9D#w!5lRPMs~ine#)o%<=TTcY0#mZuSb^ycxG!W~!q39ahmZ>xB1r*0N?E zJ1}bz|Eh2Ik1k%t8@}oPy*AU++p<`0>4oiHTk-pe<J)6<?|O(Y-gR`+hLuGv5=9p+ z-+tf0YjF6iyxiTCQy;ItsggC+O9=53y_i*@c+T@?_%Xc`1+^w+YKM+ac*DvbH}Q<b z$#zD4jpV+kk|!73JX5)4?x`xZ=eA78nnmv9TJ~=gb@|Yh9+9QL(#P=E+ZkW}zId_G zSa37b5C5|q4<@fT#WrD1P!@B*_3k#tJ^Fu~LXXJhUv6HzK{@?IsZjl~8&!qvIft%Z ze_~S^z*e5$D}U~+?Jc`oCGT%22Q+R!cPjq*(!6W`mZk*ymDimOTz6#R<SE;Oc1d;L zZfsWOZCuUbE*6#$acgP#YZ?A4F{{->_u04JUjA7%s&d=$tP@32mP<Q}KODFbUh!#> z@43^pNv2G}&sZeRex1Jmic48Q$pdX!=G^>dlO23cVLy75X9*g*cdty{!F+@_%I>X{ zrHEUFKV!=`F8-{8#&cN~uYWt`f?LzvwJwsmw=Qnq`mUzsxAfPqy8^p5vAOO)BwUg8 z$lc0VIOvJ$=XqtmW)E*UOW)&QysM<t;AN)w*JG;x^t?-}Cmj#1*LZYY^!}}*YzO9R z>c@O`dcJVE^@f@#w|QQ7Z|8qmnO9u8=Wp-<&DLP&?)55tR|FETp5SKe?y_L+T(I=T zSCPAsw?&R#FU`D~*^=(MoHfu=k@t~}^;X;0$Eu8&uax}J7SjmvNR4lvTHd@waTc51 ztm>0fFEzzCd0pNTYPt2b%8sM4Ma_S-jg>v_8BS_ui4hc^#V%Bznxgsh@LFGi(rqSo z3#4uKE=-%3)#z4HvB<I|X>q0BD*b9#ZHZkuY(h*IEkxFs1!qn_volwB-h?CZ&u0p| z2V6e3n{~GJW2@a0e7Jo|&#qe0D0b{^#?R+76HS&&Y6|vDn7=7KV##iYS-O)g_D5c7 zQk(y$f{%NRO8<-QIcfKLi{I3*+Vn=0(S6gW-nNnrU)l=J-ik1qllbRw>1`p0bkE06 zU+yi+vHE;VzODM`2}No3*XK{Gl{}9O)75BS%C0i?@T7~LYC5O8CrEv`t}?fA=Ijgd zq7%0!HQhXZ=3{e-Y}I#<Cr%r0IaTb^*)!=^#f?)ZPJVhX+@Ptq_=w5Y3-{RWtIw}f z4zOoTveG|2&ArIX?)}$`*2dQF&o0{WL0zbK1Cw`B@=ZnNyq$bIW(mx4iS=WczWc-c zD+~4hU#k1Kz|%VX??UaQ@V^^bt-5Cv>s~Kwc5K@!x<1hQz}-)!GZKn#KA++(JH57S z-<MlQ`>IcGoxUmh-up+VZ@hh<{&lIs-LIcs-+d-xXZ>x_o}BGnFU;O8OguH?#;b{P z=O@`7X_BsvdbE7q!v$f<Ct5w%{EiWgjw}qD{>JFq&B-QG<xi{basU6cxkRb^;=9cJ z9~-S}v)NDIHgEG+;pd+y{muCed-rd9&y}g4KfOB_ecLKOn;~Dfd-^txYx|nNuT}XX zeki`H?t(*|cIfYio@?C~^1RA_6H<F|S-w=HXO%+z)T6@pJ>O?uyrDToKRfZF08g!i zaVTeLz}60dq77VpVUFL!7!$YheR{ECU%mgcoCmvm9`nE2Eyl_IHCLhD>QyznioIa1 z-`ii`1TTb%@-=(*U)sgHK}pp6z220n&Z=jXZ`n=vI-B~kZ4_6H?aky6Jv;M9i^2DE zC8f9T^c2b7d6Ak>*SB`T_PY7Y-m}!3`tW!?-Zw)sq=qjoso)Fq3~{Yje+_gkTz|h5 z)d;%Y&U$d8*%rABkNv6*T^#!_J>4&KJEZvb;v?mj{fBFges-u|Xnk&a!>^t@KP*zy zxsz0xmfqgV_Na<8M}FyNm5A9(zjv&4cDSOk#k}Y6p?P5kx+^9vtW2{uV-u7L-oPMU zw=k}p^Vnkl$?{+4UAfWKvt&;~`-Yu<@|oMWK9#abI($`brt@`i-o-_HW(H69_qtbx zO7`{k-j{8c6=Yo7CbRYSfh<YC#XgzgKkc4QI+QwpR#nl|_j8Zm@?gDIzk&B*?>^>S ziA(>QaztA8wp=x+33+0w*SWX!7L)V-o6EwMhAx-nX6?H2T4{Ik>M5*kNe3L1HT)e` zc&v^oK4LX3xX$^gC|5rFKhwB5txR`v=D(R8Xz1hHaBNrcjaP<T(Yac(n}c`qx%O!! ze^t5~TGG_GP4mK$M&9siOR9SP-em=~^pu3w3Lm|rr<2(^eSYV?-0RyXnQZ(~nWEHj z>CR;HxHbLNk-a&`%$7vhRz5hhdHdGz6DF^Jb8P>2CRsSP-Zd_3_KLk%%QXX*h?WPc zU+;UhyCi+XwF{Or7G89_UJ&?pinw>ZFT=a(k1E&9+jg(J-Zt&O#KR|V|0chkA~@IW zcD`uz>$&BRe=Jn_{^rNUiQg97?Bb}tm}_<G?~N-ui#ucQZ%b<7+sB+6wmZi1a^_bq z*ZfN<nXYqRT$;qWNB@gSuEw+n#tRC#xi>zU$LZ3zwSw#Cv0ogVQAf9P^fiZYE3NQ9 zlAZo?>1qFv_j(gWG>=|8*|kk~)l=W4=jKg4_BO)x?E<6kkFR?EP5&n*_<i~8vVfR9 z9GM<Jwf{tf$IQqLULwAqZ^zfI79lzemw%f$uYMdoWl4qG$J)xUZx_W*Z451WC1<sW z?bD4np&F^{BYEG>eb`i4{jE#7V*BSV?E`FO{qc#>+TD{sZK*vQ&sggAudBjz?fUqA zYa*p$&bhSpO?h%~it0_y$=g3lr3lZv)ocE&=UA#8&tl11K_Ta9>(^!8ndQ{Hc9lTg zef7i{rbXx8uWVn$T>q2v@!9-F(>v@x_HX6?Yk2C(GPY#`=`}&$(-NZ$zOUpiS<_pi zaCQ%mSWoGx?X#^za<5J~Vl`({)1IEQ3+3w%tv%Ij7c{AM>bIGtqMLFfn|^T0<b^6Z zeO)ut_I8>Hvn9vm9MMA;v$Q8{aHw7!*lPI3M8{O{;W9Jzh09kz((o`!nR`<sSbh7w zTS6|E3jQ#8<o-JJcW>v?3Xz}(PZ~=<+-s9%2>vEp%20bL{zBuCZBrLWdY#+Q^XAr~ zWfP)RQ~X^YUE0T~uz2DpHzWCud2bC>FHg0baZUeLnLz5F>g9{hd^qv)c{#KHEv=r? zxOx|#HaS-L(|g|dei8k!Rj^KKg5ux5I(xSSacJFK`oyL^ZRRp*9h1Ue!c$FBtr==n zi<v}Q-ETx6HvZz!ZN)F^*S)GXYRawt^H#4v{n^fw71J)B((J>&iHY?<5A!_#6E_6+ z8y(737I}X6X}sOHpv1qs<;&(adtTW!smYV=zUu$?A8xF8*xz%j=;;-s?n$p6)lJr@ zHjd)@F>6UcU2?5;_ZlttlP%!_6B(a!Z4FJ&pBw3^d8>cNKA}kuT;|2fGGCq98)?3D zQtKDf;+I!B->%Lz{Pyx%^%^s;ze|f^m0R7<$o5RJV}2N2Eh3kHB60n!=)*VT7bMP~ z744jvkyqC5^Ku^3$M2r;(<f{Zu3dXj&Wddc$AqpA{+CVnwO#%lG3T1MagMi3ZteVr z&r7ca>Ls~+_t+}k`=UB-($|z(?UFGZN~^>(5~g2e{Ip3)ZVd;=yQwZMp}+2)d~NH> z&Q-fp_NMBLg)=W?B+RgR8<KZ7Lt*U_AH_ejk|g%mgt)$%B{R{}on=j_k#J-2)$Uyd zODCimh)uMg*~55b#;Lx=i%(5sDEB$qb!k&(k4)>UOa0qe6I_2t3#J)+sO<B)VB`0v zB+0_uil;^R^4{wT7OdI+j0J4R-fG+D8rAVEQLspO6c~H|R_a9?KL3S|qLQX>7W7^_ zkhG_{!?tzbyKV1Zv%D^yxx(r3k9iJJr|#vqOcyz3m$Gci*}aTH!8sYXpDmrSq0P^G zWy~uHOU<d-b1(T$*NJF661TR~!Tm$=vHdHSPLN(Z*(k1h{XM6Zk2lG>ZGL#&OYLqE z$CEg_U%Y3FS6L@|WQnoYZSr3GZ*u9kvd|EZ8<je*m3&$gzW$0hsw}bKM_okj$uCpx zO^?>P6(`&mrMu%+y7b$RM((Nw64I`=42vetJXB>mBmY)lt+P;a=Ksg)k88JUzvwPZ zc*5(LoE+<yz3PHX{HDx<+gOda=GiudGT9d%I4Y$i9@sE5z0E9t<*~V(D_?*5_P1Oj zUhY?mX~U7LR%}B3d{y^u`klXg@SV@eeAy?eNjvmDmv*Qz+-?0I<rY}FbFSC!B97Gb zgLj(uX&>B`JT?3Rv$RLX3byT63dNY%ctjT^ZERf^{own~rWGevTPX6!=?ckhefP&# zYC@>uL`|lzlNzrqTrS+ZOqpX-kFm<SKb0-|x)Yx}&z0-QJ1)Ne`=KpD1rjbVxLkMK z-ykq~!J><5dwr^yvt}&azJyyrZMKNs*Av|NtJlm8pFaKhd%gR6>eW9APxSiuNN}0e zCyD6W8jOr{7HRMr@qB%sac7&;buEA6bk5%oT>d&{*xDa!KYn^bK{dnEij`sJx}Sv- zv%e-gP5E?MHSqO<b1P=4{PkIN<l(yqQMWs9N++f@UX`1_wy<e_Z_S@FhDi=Ozl>C- zf7Dy@SLOW*JC4Vh$9lKaNmq8AsomjI`nIO?cB1nVE{^B%Yof1)taqL8K#?Ww>AR$J z3@X7&bFB>Xrrl`_FucXCc{**w(SMVF2Kx9Jq#ae&T;*Q>@tpdGkGt2**nFJp|C?sx zpOzhee(2d+&B*gVS~9zxQAzIV{A&h&=}(@sxc;*`7IZ$gN3O&2n0}3-TAbglc?ahB zy6>`nQrD}dI{6>Rj02BKTkSt_oM6`5CcgNl=e8($dx3PtKjxOdj4sXlD85`s#wN)< z+s63xBW)cXwFVxkxaZvA3G*NA`*bm1FVr-L>2mxh)4&;dOX`?43+xw#TxOhcQEx7X z$0W7R9b0GCIz7LnpeY)%)9+A)pT*s$>+Pl%-4MM$L-N6-|Ff5eZuq!JK3MCg$i`<` zi#DWAN?Xp&oF%}s(Lf{VU2<Z=@n3ty*pAvs7^z)6?DgMnX*ZL=vpsJ8dXJX13ECf3 zbKNI2&1%N2(9Pmf@u`I;%0GKlw|6-(w!G2)+-s%qR8&#dBU<WX!lcdHi<uHOwMc0c zdVSL54Ac~ry5!K*9>P4K#PecFSXH|8;cZg|v+bPSozCkleSEn4f#u6d5>Yo!>^d1Z z%PBG?v&hYGZ&&>OL))f0d%XE?apb^a%fg?X$4i$?exTMR{6S3b1n;si?Sg_fgZr)} z+LCb>zbl1KvkR}#u8LH<vZ&=$;`8%Tt2cc*FSbL{d;Zbaeckm_tYQ*%3R;&*hS`U4 zORdnq`}T|A)ewocCtKpo?Y!3{T)JEyr{!wg{-x{evhG-^)pE0+mKB>u6s)^&EN6O{ z&Y!KD&%bF)ToSST!o5xFSK1m&eqMeonDIeI))v9f^=nQ%a?+lWo^17V?e_$>&A&f{ z?(4dfd9}yy*fVt}>n-aS-$=W@sdO(-aO;;DUr&Yh&AGC+ch|CKQ+c;;N%x3Vcy`Z7 zG|*Z4SX+jC&y4dg_O1IHlveY{eAoLM?;_L>a(%mEu<>_pgpFzGo`n%@izaN${2W<0 zT~qnl8AB^2XTDvx=18)~p1qZG>8kV;U5}0Ki_%3iEvIy~-ji}W9CSvN>su4&lWz5; z2`gs{3OxG9`7D*S)|)?duYmupsoImHzGx_Hn!)od&SRVJ2N(bEhGyGcW?x|2v|MiI zwu&k0d&&Ym7DTa5)0_9I;+^W|l9;NkTX&d0`@o=de@@t5?|({+PKPJwTu)j3q_(-i z%fHOhb$4;bdjqYlb7GY5#^1SR^>M$<(+Rt#Og(;A?On;KoPH_86<Z24`yKCEzs+on z6m9hSy{?vFRb$^br3KAP=Qi=ap7?W8_B54!!W+$4S!7+^CS12~aW4^)bDWuR;Ka34 zSG<%rOg$GbdCzP4KJNc-AGVok@3%hCwvDy8-n6^@&V_9gF1&Bs*4m(Wb#+xmwer`f z=%t%3-;wY1x@#<3ej)B$*{$sF?z_yd#!GYGlGN%sH~pmDYu&GN-qn4b##(${{eXS= z-qe@P3%d_{E^Q5b8h9=DA<M7u?KMnn+ZPrvDOSqIZgJZ@?WwTcUY%pNwref;@G_fw z$=xXd2_Z+kO3mYr{h28iVj;5r^(nuM@JWmU|Ctm1iOH48Klrb|fAhR6QR{CxSsRH2 z9ov6dwX$$|MDCxrH~v{Q1$}p{$qiDKNV>7z*15Ox<;Eq`RAn-9YOD^wN;Ud7|FQ9e zi;vfNSq1PKG>C?}+;M+fuYKvA_Dj)^-@<&>Us|Mn>FRpN@FVsyAGHIYl{YJfuQ-4I z#F<<3v-Vy6)}iq8WwdI0*DmI;E46-6+x|OkW!<y)<&AsYSH&*8o7|Qgf3QrQYuj|D zt+T(Zp1>)0Q7%+9D}JI_L0835&rM5w`@Och#2Z;DJbGVnP5aN)K+Y|fzkS{D>UvMe zskUnqR!a7in;ZRZi|lRrnBo34?9;if?YXhHnKm?b9n-z|r&#zU^G{V(_AN{+z9>}j zEm}VHFQ;_w+Z49ic`1*}QnoOrzt8(My+PW8;liqkUsV|7GIKH~#;d&KQM<k}X~LCF z{y!Yg<<uQBUCNwruWqaUi}p6AB^NvPO;dC!Q_hf^&+PCeZO#S0)sjUUax-ebX4OvL z*SPl!cfdNU$^@R<N501GzN9j@vt*xNLw)Rz^{Ezz1H@8J2iI^v+J2w8wtYk5>Hzbu zDH%n6@n3)KZ&`F!`~RfS|9p>sn_o7&E)pp)RWS6ln#RFx?2UhIXR(=B%t$-EF|W0x zxL<2t^U4APQNCq|@_buoE&N@QWM}NHIDMs?a|BoFi{IYNH<Y~>_AIL1AYyj;Sk#*% zK^lj*v0HNG>a<4f<gCsWlo9#vSST*JJ^AQf!}P@bVxhL6<*6@zpZ2?<TpHze(Qd`% zvs*TbSqCmpy<ruwyp(@?g5FP){eFR!OJqA2Bz3<H`zd5?mHuhYkuS-LuPnvuYfdxo z{$jgd)$2td!)F^$hiO8po4<T;o++%Pf3~1L`RWO`E9*|AFDMJ;<eXR$a3c4e>k<ZO z-%tm;TDkit9m*yrWC=R-iu2z5l=1A3Vgpz4!8xr8K^zX%4qJ_?f4MH)yv;=M#)^|u zI1<#iG_8tHyL^1YHO0p_KRVpgZT=aQ6}`!i+eqkX`|itKkMCPLb2$9psQFE(x$4wD z;c48Vw}pNy7YK?xf7I4}D(c6onu|U6H|$e3n{JT0K5t_J%O4RwQAeIR7O$1N7C$zL z-`vzY|KeZSIh%g)yfwdNYnwK~K*e;EhslBcn^lVwT&L-r*eSAj{lD)&R$u)X{_kmc zy~W>G?U&c<{mU;|lAx<LVatMtx8G)D?0I=qDdKLsphf?+n=h_NK2$%{AosX{$#40^ z>1@v(3~b$>-FETFoqncwTKbmOk7s#9G}-HpyPcF=&3-CP_Td$W?z1WSUr)cN@4NqF zasR5dKGvB(f&*^4vDLQkE5B-S?Vs7@kRIPd75o2*OWQfm2v^+FRZ+BYU1*-1#EIWG zF0h2U<OFcawuy!dY)#~KUM3o-9y4wG?NyIou*GONJTOpQyvu+iJ6M13uD-MX8D*6- zzeW50D~gxN-nZ7+uTt}9NTtrpi_s2RhW(N34%2OOf6w^j@9h8dv5C{neaAn4dg#r4 z`pXkXpGo&7&z<es=T+TXYxgesfoAuwS~cUD8P#2#=7D83JbSv<W!vUIlGd~IxcE`} zQvU4hUzh&enfs#RlXBmo>RH)SjTW*?oiF0L8hq{l`8zAW_DuOEeDS=$($*htALEj2 zm@|^wwuhIldGN+n-nb@KBc*qN*PGre#^HO*e4~T+3jOtrF?-s%V~R`JoJ(<Q`n*K~ z&oYTsud~RJmgG@6uQlCuh47YRK2BxxKm4^gf9<EExM`2`OVh72&TQ4?%goR^dXmw? z_SY2dA5x-iKc0*Ii{V{7<^F4xeY`bNJR6t&o|v>rpzWR8;wb@_&wlcAHoJ4H@0d); zvY7ox?|kBZ__zOR7u(^LE3?WbB=d$iPBVAjQ@-l)h8r5Um)+A}$am9WeNFz{L?#hG z`&osY^;`EHPjQ{gU3KilU(YJu#P+sbeQU&bo;ozAO>nhN{@RJU_N||-gKZ+duw3<B z_Lo)Wjk3?>snctoxi9`y^z7V`X6I06A5W(y)xK{P?LGT{NuNHsVv0mvn&zC0Bdbd< zJdU6FWbwlff_1lB&D~!Gt`s^kpIf=7UCxTX`O2?8@ptDpwk)XQPnh7<b6YP*Zhi6E z#Q}z&LuRHg(~Dl$K1=n=#RMg@zcJr#R)*c(c6!CM$`T*-FSBirPxv<7c)7wGGdYjr z>2r^5@m%hi&r^Hdt+g-rM2NZAoc{3RfnqvLHebEZn<%V&nD27fd(zjrtdSizKD`t- zP@ck8@H#ov<B^qmZ1<0a?^|YAJbaMBu#ly~Ex&%wCHBlGkFVN(67ou7RRfJ^Da?*6 zONu|uCLg)YL39u6JT8rm&A;Z|5e|^?(L7XpUV8sh`_~Dadta!j->%KSY0em8{{2Ym z*0_y3W~^Kuc*SA$w{`FDzCLhe_G*h$(@GbrarC&yCz@{kZFgb!CUN^!meQY!N_o}R zbh>&U_uu1s?aZ?$rW2m)l!Q91UNME?{w$jlX*_4m8{YHEg{AS>=+~JsD5~F7t!MCF z{$+)x=&dipM=q@9i^*jOm_IKi;K|giTT`6Pc@`w~#R=V>{U?Ll`&=T!vAV5nYRgO+ zk1a2g4oJ;jq?I6lVSVKUhq#ME`qw<ZHh0h8x7%WWNVuh=i_c1~E8CnN^IrV-^6by^ zXD6gxQ%;duw72H#-P@njD!7#{rc~5yyvh)DWF_aUm^{`yT1A;N+%g<io;|I4I_TyP z&Go)B^_GU7yP5LZ@_5bVg)e{CIaoi`J8*Ev*=3?$(|2szXwqzXdq-cUzMn|wd#(E` zbzi4-F}}Xkzw*k8bw9$CR~{3Ly81M}%WYM5+>ETM^P%-u4xKESb=q#}(wCp~gBQle z{Bt#wjs3V*%u4M;>^IG~UeoJm&MLZOT6g_Wus~<t!&6t(ZpEB7O^w{P*{J!==GeZF z+U;#m9?R8A>qxqMOSrG;ul4NTrFlMUny2xHbgq2dabao6a!b#$O9wjnv=&d9z?SKu z)y5b+@xjzCKfy}JU9MSHUS2D2zj4TXtEPE0vwZ%W8=jZiyHf<%J;mQm)SIiEQhdI9 zMJ!j^%ty+KN0;32T<`rfLQ((po}ZJ>ojLHx#W1aDAJc}nCuR5Ov9CXU@O9CLT{2MS zr-;3J>in}F{V)1(NM?_L^|wP;cq}rXwPeah8+8b`ty})P{GiB(Zx0$aK9V{1H%K8h zevZCq%f_v@x1F2L)TZbhG~>kj$8{^W{`))ekntksDHWm7DX*TfzB{O5JtL($W76CW zFE?*iIIq4kDN>zxVQTJ*>VPe&8SNLhnq_@+y&HCUn{scqv(b`Et#@qq#VNiDTlT6j zzov3i+=-&+77XW3Pwgx#Dot78DJ|yvW23sfFPp^s1HP6CrK^8<Y=2QuIj<tgNpI~* z?es67$~_yzOeNZ!3+>!L&b{y^NxUgqdTPy)M3d*r-<~XfsJyng{HV{K-)$*sM?(XI z>h7gQudg|Mb<<t-$cVeCzom0_<fSFI*5%l-Dn2=3*lg>lofdWM%*@vnCw=+0mdy_9 z$=WBs@LGP7+|MgNmni&XiDAerSP`-Q?zYPtL>+$XIT=q7Epm`<@zq{G=_#+Sz=5vs zf?@8AZ^A9oR;Jppf9YQMpTA)5bRoHD)k&h$r85_Qbz3D`8gy)>pQO6H^wD+G<}Gs+ zu8HAW-Elc?#q93=@x?hlTqoU^sg(%IbSg|xo%1&2MAOTjMOQX){apV+Z`&FxALZFL zwR_mzuYS_ad#EeH^H=sq&D+PSEbFG_Pdpf1pkS?W`=`OO)N99=pSv;V_hbFN*>$e! zxuG5le0lY9rHvORbA;aA{5xPup7OKXVXd(}TdSTv+UPJ<Z(F!!7{`owE~DFeo1&*& zG})DMU=hQVr_T##tY7r$jP2EXGp)94{WUwHA-qy(0>fshoiP=!Tpb^BCOOX)d=dKm z;iH*5J{9~wYw9l@<}GK;rO~J$_U0>#3j@=igx>Az^a7IR&Nw^eoN}X$Q1!xvmsW4l z-1*?omxsQsn(Dtr=QYMZV^*z8_c|H;#j-qMifqh<-3DCVTznViGOq0P*T|k{)3I~& zVJ;Twrz-;&HFPcSG_sC;`a9%|{q*{mdukY$uK53pwZ!C?UV_7hZ;=Na9B<5Ay<6t( zGiHw8A2Oz2+%ow<t!%~NO-onROFjNuAAqvO!8(Lv$5|!@1|~KJ1~CQ(2Iv-t(1M)& z#1#1Q=iZRm?Arz+wcpq8VCj;brSVpdjk{uksV2)d6_b~TGrR)kWV`!J>rq)g<<ft< z$WQK@z9rUeT=Ki{++O!^9sMOn2U4dQPGmikzceq5YxdN-tB$Ku_?BG(Eq=Ztwx7Gn zit}dh*-6%#LDO7UhFF>wR)_}9m6(<se>hZSMJ!ML{*dfG^(X%xWN$qmm^~|Ue*wce zG4smj-M^nIH2B-)id?eUCemrf9yzN{fQ55;)ZyfVs<wA5yOPE4y#9KpzW4~Y_78^B z5<)YdFHPVy6%&t}VcE3t-er0I2#<;xYt0QJ&vN=$v^Qya-&=5LLI7hmOD~(obs@hV zrY_;&peLdSu05Q$BB|tjAU}hr+Z^jIXT_PNg%M)u+oIm3b-&EAjL%^U$O;MV);rVx z`sU%JPuXdgXS5v1kF;X?)Z(>~+3J{_;lx8_D|~u%-}dB1U$;CyO_np}%?;KqEXUX7 z`m*0jW;%VyKvP5A;OLZTcdEYi9TRzcQDZS%{EOEY#0rx*`!Wu?EzSO;kt(*bT+zEd z#nPFFTk}G&Wdhf3S>ZEp$|kza<Fm79|IaD;E%C?QrE=TFSDo^RQcSXDS(3+d@`6iZ z=$CheUyChgZoAYX+gj&-N%^XX_MTYBvlk0Xc6_^k(5y84{vF;aY_ArrG4q->^ZJSV zArZfu4lsF@@7uQMR$(U3)~xhXb03CZ+Ii%v*pdRy9X=ZEbJX0`^bU#63gWbFtCoJ0 z7ccvf{|Q3`*DfC+>m8XVPcENoYFu-mHZ#6;UVdQgGMmdE-#WE@kK6B?cz<r}-w#K= z&UQ9i`t7jv)UM;=3u6}?KlG}u#L}Z!YAbKo?W@Oc+_HV8v(tC^gp4IxmTnKrth?sD zFxV?uSH16D{`TwNvPuqil{aQyJ||H$DYCWu#j^h;)^hjk>NCWJSN2@G(A{6U|6bI* z_o44gblq#O|Bd*6@cPE`H4E+?=DT<L)+UaBOo$BNq7WX*z`(%31R@w17=#cRAU-}b zFS8^*Uaz2%nE|&Bq%4zIkg1PD7igD3Wpru%HDLyZx>yDVL4-XZT`48`dIgnlWwMKJ zn|<0{->POlb6IhzmHA8c^Iw=%gT=CKWjc#yr5MR{wWwUF(O}7R|M`_&M@;31fTwC+ z{=2GwO2QEd_qh``J~8V&-1s<Wvx#@dW1ftPj>#nt+ydw9((F|(D{Rc&H+#~QwkJv2 z$3CcE=Z-nX5!}3O3d_DXs)1sw(kB1ckG}l4(arj*-BO*unHwxPbn-r2J}|+evtDr_ zzx(~(pjVnd7M?z#^No{zFL#X8S`VkY4Rxv~kG7tDnY2<`j%~l#=bAkdAM9PfWq<Y0 z{jvH0ulYXfiak;``_eKui3Y5%tN8ivQ)<P}OWWi9*2SG$7q>2M|DAsy9v@$Q+I&9S zf0;iY9=6YC<9wLZEptx%=T!bbA0J&ldX&{8^~3Gptdy7kLjAt>hdcDWu52+>@0Ir` zF@4ayz*O;e%ZA#mGk;wb`}EYoa*1=Lbnm5050=^Kaiu$NGYo&H$hV?gXV(mIc@IP5 zaFxfi3T8}*y~y*U(fQ`GADf-Z-Lvil#;a!^H=QHXy;I5jN?M&tr$dCvj~MwQ-do#R ziWJxd#MajTkUr1pxvRgHcS_D(9S_+=O;*lB9*t#oF*9x-&%T%N`MLiczXLJxD;uM) zdp~~iBm2O?I-O!mAB~&aHr+ZH(VJxYS3@!8M$-!3`Fq<I*{l_J*W4bhCm?H@dQS0n z!Pz)ovqG5_X3ySwzL>UK<l0xq9fxdH{Y#fcd=~J0;SqSj@ugkbEU}dn5<8zUU)Sb6 z(f7mem`9M@no>E7SIaFfUYQf<?zisHG534QQ!M+H7bz^^eIg)}&ADjl?lbRZnHEH; z&p17kP3o`eqSHqCa}1x(y0nb@PR8`YPEp<HSsOwg*_<?Uzr^||Z@b9?fh*Aq9vu;0 zmG$QQ%!fI1%DQ60O+8BmZnQ;xsXte-=ULoqYgys96*oF|HEhfCXik<6$>UW&`>%xO z!P=(Z2QokR6m4L#-#JO~d1TLCxBojEeU@_^+qQ99O5l<3@?J4PN3SREVz<4YQaYja z;?9;|5{}-1ZRV^`rwLCvebhHeth@P(*gLH?%@NTFFP3ecxQmOqrIORu<VTwHLz}3_ zQO<vge!SnU(s0}M<HK{$A~+-NRQH<rzEJb#e9aXVyY9AZb;+LeHc@l+&#Roi)vM%` zxa|7XmB1aj&2xv{6F%{ow^ls6dc47R`G&XQdw#0lnDn?oTtDu>`V1w`j0}PN;@L<4 zzIrY6=90-eOKbffS}*qp*v{d;aP~m);>H&b^+XQXtUqeOP`!Oi&gIBGv%4?)bNY53 zUc0`M>xI}f`Oj-JH|%9Gp6Yk@$Im1A#}j>)v-0s>>0@4&Ie(YP{Bsjkd`_F^C&`>) z|F}%);>9BoTvdDb&OR}%I(em({M{uP@=?XfKjTdDGoGj&m)Z5=!H25(xo7Y5FYjLX z!Yi}n4$H@7FE*aNpL=!kBz?_qE3WNvJsZ$7Z|3!DRm&8dA6?ebd62qZO0~Ls<K?4& z+<JK)WrX(#+h$F9p?Pe^=dV6nx;8J(iJa+un!(oC;>^mhXfw@Iy3t+Qx;wT#v%Gxg zkU-wXhMg`6M`oto=@FRHdPlA(;-qYu=d(|CIl9lb=55GyF0XuDvCCjVq4W{GZL#{- z4zJXd`a8otvuW+K6SF+cY9D<xm0Y>oEQj-SveU(+=*@dV=Ol}sH!e<<-fVr+RBl?g z-Bq3Fd$TWn=yQpfYxGw$&*!()zFQ~4eC{$_-L)d*aD%$|{9_-s99<q=QRR@jht;&^ zn4JNuIIrWR)iFmJK0Hc_nc3j~=AvYe=oiD9UG2-=YnTjoXs|FJ+nIHTz2aAw7V8`7 zBX%ruW+$3=vMHb4!2j&dgE`I%a+;^`s(;uLo~Go>GQZ&*?<Gr?e`Z=NcMe?U^A&u- zGx40@g-43I+Z~=euW0JwG5o<YrPAZ3Oj>8bG=7Gkp^i-Maz!RgGb=SV-!5->$oX6B zg81XfJeeL}S>}EFVZ!v!W*JZTEFC*WHhIG{2R|vNep$f&e>E4Uk-`Jv1oe(sH%3tw zp9j+vwkJ2-QF`*jyy6%0d<XvMD~Bak+*7)myy3j=t>?TtP1Z3?`3>h}FIlq6vaVPh z{ouXhM|D||%$=+?{2k|8B00_#ar^WCC}F<yZo+Np3#a(D8ZqX5Kk=63!&|}o5JF{# zJEtGRZ@G>B4tmv7PO})i5o~6aTD-!LTS3z)>VU3mp6�*PRg#+^$hN3tE+Q#S#{9 zG5@f3t>52RXl?3uEab_1^B2FFf7dZr|8$O2@p#F&w1oRtwZq@LO#J*O4(mRscBt{* z@PtM8r`WTafMTY4ey`aFelvfn<G%K};aV}bjIDzE_6MQ-?pwE<bmg7j(9TdfgJ~bb zN8hKPmWz2`2yC#L#Z=Gu$$YB!iYOb#>V_NX2jV;aoNZ_iaOIug(lKd9<J{JabmN_? z9?mg$xXGtEn^9Nsk`eREHjTTIF1-Saj|uJYop4(+KvwB$@dI0@d(RsbgZ}Yd6JGfB zOyet#mGhdvx@6dDS0rgQG4A8|c-FB=(5ry&hVqd-Mt+gXh@K<CZypL~7`x@_HSCx8 z8SP-wYdA~Kp~=we1K%^72Xo2~+-Ll`oB0H@Q{Te;)xR7*u}}FU>+!E)Qa$&rKRvf% zn7*-W)NfqOVj0Dh(lkN4Ath@vi%^QjLD7Wtj#}0|#!qTl?-)HPW0jCdif9az$V!E9 z%Z^>K(lt-X;%1FXTrqX(9WTZD;sfG}cEU?s0=%>zbZGV+Fqi!Gj7wo=6U*zw3|q4V zf5F|n|E90%HSkb!^}M0bDWaNq`ftL%zpd(9E17otUA5ws$(^7qtuk?uO3n-KQ27fp zmFAkAFm|oHb)dRy&uxW+BB~k8+ck@Jv#l~-QpGz#(rI1dG@kTG=almXo9;97_n$ay zd*NqC$vx(|{T|P)Cma#>N@6kk9FUe=aqH1#Yl-hIkL%cX);R9m!_MP=<b#|-KgUl- zgBn*Jd57)so0GCv8a?<lC(547xoMfj5vRo#M`A@+p746N?Y+;_#b0+W)|v0J@`SF6 znQ!wi$+)+b3&Y=Z{+v1aS#lhISPRdOlk7#-%=X`Y{Im2j^xouunR)lGpXt+NUHaae z#_ag`_|<ERn}5$F-aNnRsgcS`Z8^QvuIHaVPLJ1fuInp3+I#G&Vkf_fr)J{+isG4E zUZ<o#1)cLLF@L(~b4Z&N>y%5fK@OHY8&<E2^z!VV`rBhy%eVB)0T1@;ZOVJgX=7{s zeQrsnMYYF@-b4E*t!i3SDE3o!<_Fz|kfNzKA|mRe`_^*34mq)wk72jE-?R(cWS&f( z{e#bbabDC!Zv&G<*LdP0L)BS6mkS=7Ql*l$<M5TrGr>EWwj8^%ecqNWo1L9Y1Pb3} zJqXs<Wj@7lk4;Zb{=`Jn-hFC}nG$yy@*EAFc#S%2x4-G^k-6jIlJNFh`;L7Roaa^j zpK~<x^;)^!j>FU2C%Ek`dal4cbJ3c>7e^<$^JTWjrU>RT2hR9$q@;S!@}9g5hs(*& zU5&PFjrBflDek{q@762v=LP>S6^hqBOXZj@B>(bLz%kMFiISpkIn-O$oZ|9oShRTc zz6EJN-cC=t`qH{0Z_kCUO$q`tKm1r(5_!e<=w?a&j(O~x_5B<c#jc8H4SWAW@~>Ca zuD{dlCdysYf9K%X)MLanX&bZYDZA~BRgn%Z_UV-~Ju`RdSwEQe!gj?(jrHpc+gsZ5 zib^UPtnwGEU|F>L#Keid#`iY9*`a!T-&VuoyyByuwl{@7pVKXvxcSznhSy=2-=0Xa zoMfr`!+ojvgExokL#nd)*abdzcXlt8QK{=*+!lDprH=pOt=2SqxqVaPF8JNq_wbX7 zPwC{3;nR9MJa?I?F<j0*AKW<QV$}R!Q{H}^u{1k5WW(+LYtI-<C!LqNp3LcX_=TQ* z#<sryaa;eXN@=zKZ(0`o?#K7ygLTaR!uRBQG6e?3NI0!NZM(}c>~{avWhb_$b-rMH zdM#nvjZmwSGU3naLIGbpjwy%lmEhLMaOmv|zSnc*kMA_clXrK8EZQ;qnwFO<|Lxc9 zJ{DV6WlDeYo4@Mz{j>;O<4>N}{nyR<eNQ&T-L|*SE1u9+<M($0hx&Ud*9xWgt}OR= zf4ZxZdplhGX^Fa{oMvTKJA=(y)p<>Q8h%b1XY;i+mE$|6m$n>niQ4?^V{g@J$y)uH zsx6&;(-yh$u9}v)GE_Bt+uPm8=S@hInQP;IwYdCwxaPc)=)m4kul?O_A742fEBPV1 z<;mi6MGuypSfJ#1a_4WWZ$JJ1*0=wAU;JW!w{d;)-NM!G;;9GDzdvUiv+Zi(Kd$bu zpu9TsXL}~)ed)QRd@DT8^sb1D|MjZtpJxdAYPO5`Of8yGl^67($<s5%xp;1u(XVB7 zPxRIXdaZT((Y9uT!zUfpZ_iJBEvfs_a-v#mcU+qNq|U2(eBR}1vd@qHo0(epQBSGq zAY)(8wa>G7w@d7-?5v*HKS5tR=<NIgR_oXI9!-<+7Yc|u=n--#R{QD=C9T5GOX4mY zp5Q$CdO|=-w8_r+FUuzE2>f|-`BSlJzxw>;LWAdd+XNVUN^N4)D$<(R+OqMIcB~xx zx;tf^H>MT`O+W0p@_91X#x*-9{#&kdswH&J9#Odq8sbV>GFp39@BX##X1MNSuG3z@ zhpx`J^{goG#<jgKZ%osDy{ea?$-zsWQz7)I+hLicskxUH9gmaxeD%tPv#*o*tP7Rd zs(Es|T5Sy#5AOE(x$66)l6wzi%nG*$Cv89X;wzKT$v^I*td6`Q{{zn#|Fm&GsI#!G z<Nu21_jM!L=l=2A*prpP>&_jyeAhzh#I+s^4F6x3zR2}IVfNNZTa!NY=ggM)oUOUG zQ~IZu$F*J-k^NfSdftnUuFu-&zUipk%1`cd>Z8us$DWMY`QzxNoilR;_upu0+M%sd z$R7MzUMIau`MAwq!K16xLze|9oL_C0{j^6XF~V76<E9%OpB$Y-kDuMWpvGs*rkW#J zwdLlf>Cf(zrL3KKH0<U>frj9lh0Jr>7BuL5;Ls8)zCCMwsn-v;DQ+{}c$+-BHf&$; z>Q+qev}*yg9pyHd9p&L-NekHPBYFDN%$eH?b5G3L(|I~A;^LIW0e{a$+*=%Bc_LzJ zdROMVvrkV&ohh7F{j(^>j`N#U_r^I)zr}CMB<1Z}?RfTNu<VDt%zM$@rM2gFx7b{= z$e!{0T*NKb8MBwH@)yvvnwWJllqZUR=S}||8EY;3j;!69FWRGfcH>Ty=gPj!-kVf8 zAI|QMVYL)^q456tl^qgmwbhDyO*3aH33_M=?Vg$Dv)MX3YSYpW4$OC_FfizH{_48; z{n#a=9l6D-=ecxua>n-suX`Ra`B{=?+-k#RsW)7e;x-mGb8RR+tGUfhCaSXcOWt{2 zljVY1ruV0&Xl$$8#lp(a<zMnrZ^IMrvs;bhPH81RWP0?P^`Au`>)}JX;;)~cII}YL zXyhZo-g8TTmgVYti`1OUSQN~_;KB4o)I_Ik_0cO=u5Q1vAwp!^lgFYQJ`1X5hIK@) zWB%RtHR86W$+}aAMdO3r6J8&4i&<X%Q#<rqN+EB{*$2U#tM*OzzV<|G4!7&)r!iIA ze^jw2hHVj@*=kZ=bX&r&wMKD;rgrPvt4Z3A!V*_+vz&G2pvsXm3~qaBReYSz+}gM5 z@VjR+j0YPRc*-4Gz!osmd&52P`+-xG=f$*D3htZt;s4Jxo7UIq7AM5?ZTH2_{&d$~ z;##uOv|I^K@AYPNx8;`BPP9Hb&#cGjYl%pF`^rtn%+p`>+AY}m-NdR}VCRodh9+UJ z-db4bf1BsStFeqZSlWTJ^53es{!WHpEqA)VoHF-_pJzF1%7pcbO;J;4evH;Qm-rwx zLaJ@1n`uW;W{;z4-J`tQCWlzn6%yn=9@4d6&T=rpne9)<QQeRJ+xO4&3i`ikQ`5O^ zQnmAT9sN?oR@;?d!cyDCW}k02>!tePV|%7dn|F5qHWt~bciMdno(TrY$<MxI?CU8s zu~$%9ecH6HD_%Em7EN;X*IhktU*@fCArc1n%;nX%^=Gqo{|UJi^~%}h>+RrEe2vv> zQdVkx-#Im$)#Rn4Yv$8rf!RH5`!-~)jTE_Y@`^_`?>wKWTbdVS>^dNH=hT*3g(L43 zPQG7o{Jmq({eGd3PgmIX-rBcMNoOzbvN=nu{+*wBAYIOCU+$r+^@~1yezSfaL+ajD zuKO2P1wVWADeuJgP==JEb*wDip{5eHr=wO!Tz&BANaX*nOY6FqZgaZ4Zli5?sx{+* z8P*GTWLy4K*l9CIr7kJ=yN=f9TZ@+4h~8$JoF3<Y;Kg;8^N-V?*QmVMQeJ9#>Hmyw zoA#yCj2_;vzI}N|>q?Qg+0&DrZu;-F_J3u3{G;2GdP4U1ihiCOyk+v!TlcFzm;5^Q z`^@flb&fHgE{6Kwkma0b{bNVJb>k-44Zo6J?vxj4&e!eo51hu!vF6mp{cc}<ws+N* zXzyKj|2Ct`z2f$_t!mHj3Y*m}`jo?;Ge!I7qqlc6!b@jA7tH&2_sr^3(?86+x%Nrm z>+1AMySoQhvEJXZY7&d!HgVGlPuB2>XXmcJ_~~|H>7S?9_g4FcZk!O79D8`T#oA@F zPCX9z$hd#<>*g=JYTi9EooUl}@1I`I$9-p~n(gTN?DhYH;=IJrfA=z(H1$>syxCLj zDs$z>qOP5rrcXO_;Zt+TtbnNtWhGZnRMcm+onE<aetrAlvS+U~>pHYsbtk@=sV|ef zBxqaUn}V&+Rz?}Vx+Nq1dgZT}=~jF8W=trnW>|lCzTk?YOpT-FFMb4fU(J}6#nz#$ z-ptaNwq14a)R?d-JqK^En0w)A)*P{Wr_0V>30HmHa@}Q7&w8_O=bydw+xOtw(vxQP zd1W*H>3=+F@M-0%W2M>$byL2Y+VMQUD*l!0oL%f6Y1E;^w-<Bg-eO>2C}3n@5JepX zOwCKqPf0D(E2vDJa60dZ0*~wWn%1eIO0FyJ_PE_Gzo<9M^%lRv!4exTiN?({_Uo&B zUJ>PO)3UyHoua%Y=Nx19r7=nTWnL1IvpsHcF~4o{|1{(1j}=p9iBC4>5j@<Xc6Rx7 zgUv^;TvPj1D`U5g|894akniQ3=hH7Z6*ca?Q^>T&itE0DI?GPM1p)VuG4{1Df3Ee} zt!qKf6h(!oEe5e>Hg9TbkLQSYuhZMCcPT9<hTmrH`naqK+H*BT!e(sL-TBY(u6|^1 z%cf-kuT4|$?cFl>*W`2AI+y?d?w8Zrd)Zw7YU?jX)WFC+*LdV0BLl-8HU<U>w7{rH zPAw?O%+D*<E2vyL#W(M^fk5kbJJyGxyEFJN#0u=#Es}9ZCc&pKfl0+(wY{(O_ql+u z3nHwl+iyuslD}`he+#3R;rR$RFIM@J4;9l-$@7JGD_48T?|;){^ZW0<zyB;2pETdP zQOSIt#PfDWV>L79Wf>7B6|xtNteiRR_ZLgB?zsInhk3uq8BQg+b^8h;-LKD%TPa}F zG`q+D*UdR<%$+TBXRl(mb@`B}Eoi^;RzvZmvY-0zwp$B{N?gskxTng_+qL!fr(<RN z*cJE9XME&$$#&Jr(mnfw>?)rdtgUXoYQH5Wi%0Q7w*D)14(6vFd3SFzHvc;I)Z_TK z>Z3NYGe5Ph+;{vtr)0=~jckRj$5NJ;Ht-xjdi#Eu^1YZPdk=W8bbHyA6SSXOFyhyr zf{7<vf)DscaA$s7-aUQm(@KV{1lcD)-=-g3)R?-*mGRZh+e@@x+qFGbdH(2|P{gW( zTT670Moiv*Ab;^X(OJ2^nfvB4$gO%I{JK&xPtM!-s&^OLy}9oj`ih@i`p{A)o$XmR zLC-UAW=}}?t*56WFU8edoB7{K%J8+o|BK-f%KLg66AtrTTUNc>+-qx?-tmQPecwOJ z9GjNCl5={aZDw74YzNYDI~}X7qy7l+*yZpuFvRLGFv!89UDr_0OwU*^C9}9hH#09S zU*E^m+0`%D^=?#j@$F-xb>G+DC|VYr$+m2+Nv8Dk&W%sn);edp?95Y}+^)JoVLRJ~ z6M70=f4|yJ-`lt(rTkZz?=n-*H#avw|1|ggoTJ<yckXx9KRs9Ied$W8<#9HjpV&_+ zy;bt)_0QK%e|*apZ(;xV_4W1pHaj!SdH&80U;pj*-<V5g#mU>(OWixQx2lo*{rdNH zQQb#hdF|O78LRt#y7}s@73Ib1c5Bvi7navnmluD1s9P6%AvpZ>*S~i^we$br<@}MQ zw=QI@wQWOD-oHcH#-G(^ac-aNs~n|jZFs<wJvCZACA{-eiRgNvts9d{RtbcCy%v(( z8803uVi%oh9<f*QW3}Sk6$Rd*oo5}_gr0QT$Mo}B&+WNC{ANhmWmKG-lDvA?!wCIk ze-Ulp`VCdPrCV;6pW+JO6nphh;fckYo~!?t{oOOCSi5bm3`@?gtwLgD(N!mID+W8{ zrYf)V{L(3u+|I7@cIpIGPtK?Y$p?}8#||*ZIj)t-=Vg;!lgXvHmP=kLXxD+u54I<V zAKY|l%i5QFRQ@lx@jCH%QN`h%73n%JFZORU7ce}z>f*zL?#BA5ZtjJToZ>$PZ4TeY z@ICT_kk&%$f8~m7%3hp)$Di*J`PZqF;HquCGxUYco$I|%&uNEs{Pnx|@!;<*>s4;< zO#LRcm~%-?#)XzUkIQzsdv0BKaMs>Us$Khjd;=X{V9oq2@i4pN;|FXTtbQ@vNtwzm z<oLv`G@&J^SzG;*vF+s3^=6NKVh%+8nLao6SzP=73u^qkqyndjR@PK7z7pJWl~0s$ zZ}eLkR-2=e>Wn*|s$99YA(~T@<K<O3_o)2PwQE|Re#!O~``;41W!a?y6VFIdnKipN zNuCs$(6Y$5IiqBCVflx}#$Pua|4_6=(PAmn>-Ia!j&VHp0WE*le=Xbc#d^omK*^dr zIsaG}7OdL!hVPH;j^rE-`>gD!9~<wS<lDl>$rO0evL>jlVNt%+|BYfn8!A0w3~d)o zFD&u#m>rkwBpGy0zL<L=Lwdt{b@p=?x&3|}c=0xX?|I&8E#0F9FFq&Nn|!;>sqyBa z_oW#H9Ll;&8{Qo<Ok&#b^3TSoNX7{^9(Pap3V*Ucyp-vp2=j(1c2iQ0v^L}=uvJ(b zl8)w*yOt7W$rBNM!pSjO{}B`40=d-NhtF*gSRi|7j`*X=-TT5fd{$NoPX0FiBv<&U zSL_=eH49}3m|OQT+<Cl*_s`3{D%%_bYLsQI)-MiOQ^4O-*CBUI>rU65)}0&fzbu;G z$Y_z>AjL2<^J=qNc#=qSX3abfRxvZP8YaPeXDiJr6C<8ZY4%Wj?S12n$rO<dKKZ5W zyXXA+Bht_8cXjd?{UaNH?)hpkYwvrHJ?o{ywgw&l6S8-Uh-QYkmD}nyS$q@N@2VT! zVOzxdc**3oyLkMrGq`M<rYhR0w0h#j73y9KOQ)=yeEq)Cl;2YI*B&3Y6bLrEtuJ*! zJ!ZwyKz<RkkDNyfp3d}`kaELp3s+se*H0zyF2=z72d?=x<eKL(Sld*v+;hC>I%{&3 zooI&gp^w5*f_r?PzPp(<QCQR^^_JY@+QkQEn9g{V`RP;Y)wnZ{W~Rl7UH{E-dV`1Q zgobMj65=mfdvi4UzKLBgb+J2kE;>Fz?1@|W$$*UI2bZQO{@(rQW{}86?fcCCysa3O zUa^UrJ7_vag>6z2En+ucaqX!9pJ{nWgp=2*iT^mu?8EHRv?pdib<;PJnCaq}mb*o| z;7(CV$kWW@(>`3fe4@XlVx`H-;|VP<Bb{vy1;(sDeX)mc()Ov}gq`O5zR?KKd-`RY z@|*Sm7x{^a=iQW=uI8|Qo2GRB>d!YOt^GerZOTp@I3G0cPD4lk+l$MR*iYq%91#w1 zbM@f!dj5NfO3AD3f{&IT%=Kpe_N=J4#oXJTZPEJYkJfvvF1Wq@<B!J3&aWqqUOoQm zW}2G!W|^s?A)XT@Jrr6R&K-HwA<kgg63le?^;L#xoDbPATo0-4jah7b*Zb3+X5q)j zryr<#BPOk0JmG9XMPxMVd=r7)?7>PC=7$vD|NpRU;q4~T3CXs{K5|}CwRnG=cMYqy z(}HikEe`$n8_vaK$<{vZbiKFzsfm4(;l!ttWzSD3J|tFlLEf1Ct{2PQ|IF`W4j5hK zpOJ8(h^JAhv8hjbk@v;Vk;d;CW7!j}e=g{F%G$c3->kIPhQF&Ji=pmkJ!4>x><vRf zcALO&YbGS9&EfGqV8^xl)V}-;cTHq1=C0|v@ibIhdgZ};e{#w!HYjnPTq|9;x%o}0 zUzG37$Y_W87cOeZX2s9@A^uM2R>Eb?ctOU04HI3${7?6Zw=fsBzh14o;=D@!syX+Q z`qy!6&C{D^`pf>C6W;``WGk!G3(;YYd8+?>6rM|e?+)3Zw0+yLozqhcY}_*4p7{Tf zw9$7}{+@S*S#E1!v>sE!#sxKxSln0qkU0?On{ae){?^HJj4YoE^ojntC=|?U=yP=0 zL<x=H47b{4EpEzBXXsZph8C6{5OICq8Zl8%U>nyyo`d3Rxi4+-Un9Y_Z)UgkRR6YT zTS~S0IdAp_aufux=NTVdoE{;!lO<C*$BgMjpp4?;#{cFUmHcm~={@vUh@2RuXyn1Q zHcazdQLfaB&K>*M-&6^|dege+$>ctP%;+oPS0C3g-&ysrgColFYwumfe{*F*f@&?^ zsq9;BB=zl1O7*7)YJr(=7H_D3zOe78K+`wJatZZ2w!3nwTXslX(h!dRt}E%han8$g zsoOS(GOI)gRuo@56kN_AB`dFY+ahlU)1m`B-d8t%xEQOT6UJ2;JaHl?*G0vpv+bq( z70$gV=2`h;`V8sC=@T4Jg|>0%hDh3|&6;d{j&EhbM^8WRuU9gzsy2mv*`NRC!qv@J z&;I@N_AAe%_k{}8$+v#mPAE$M{p99U#{)BcEH~=>)D{+v^5?XhBKmcP=8G$lo0T*? z=X_2}vRNT$^uh53$I<CGOofZ@9ZG-eb&$<SN>z4S@Xsmt^gVBK9pNym6}~dX@p#JX zl!cxlJJU;l*s*{1oba^LR@Q+tR(;OFNjrT-KZNYtcy#5|)CW~Jr=0%ImcAxLK9x(5 z;|0UbNQDbw`X48>znIPUy!e8F^2Pw6Sr>lGmM3<^FHbx7$M;EN^h=8;&2mbn>rVtM zd-dav(h)14w9gxJPOLgqAN{8MQ^%PlELZoo?o$!w+P06`{Ym<wI<Di=p-XpV<uK>Y zb@5>kd-uP|y5F#uN2X08p>6X?m&;l&X3k*0@zLVn4FmtX(Q`}#Uuku0yR=~*=Yfk4 zw2N7}K0ZGYdTinxw`*33JJTg<q~6ZmX_RDmGj`(2^BKWQwyazkX=8J->&fMvGrUyz zx1U>9>Df5>_9{=&zBSV6Cta2r_NgV$ys=WIlu5X~#`|pFe$EGRrW+m1#pSJ5Eb5!H zOfGS8Q1WkYq0QWrEbd##Y(9}QV`}flc`~u8%lfV5_={$|%Kh~6bN%I6m9t#4(ijgb z&Da(8@Y}@e>(4ZFKYGi1b$ai^WjvS5yx+=B6AU`r8^AYbl}J2GqEw3BM`^>|4;VEg z47a&Nzj&$ff#1$~g>rEJsxu1n8qB4RtXjLJW_`(>>L0rs>={Mam>vm;8Oy~=I-P6O zEH6`TY5Ojo<r9C%v@NGFPfU{6Z|{`a12gyi=dk)I@vPnX0$Z>1k|kzWSKW7eo8P}- zf%ON@X(dIPB6XJ^eKpBq4r99)c!+VYcGBg>$+sr|%sH{_fq6XdxhV|WuFQY_$jdrw z?uSd;#N-?6n_~G4ITx*(&1}BmN@a5Q)P#mT9%sF0HHn@~wEG?#^p&af=)!}A-Lvd_ zAD`|l)-PPgI>A1A&Cw!TVSAlxr%Mgq9e?__-(3FP(c?$&-c2gqzbCGH_U=DX|DMf_ zSW_ofAHQy0!@G=qjCDs|uJBgB*rFY3rsgZ@QXC{%@QT4#Z)TU2QZ?7cgfqXN{{8)$ zY0bW>oiTfNN3Z)=_4o4ESNjC)WAE?%E4U@*&xV@)d;ZUKdU5wtUFqIu*V)D5j=g=v zC-d#$-$#CT>UQkj8yR1`_37<HZ24ji|K-fCmb`W_H@+k4cbL^C-8bL#Qn6J5@5R>s zfIq57&OTdelUu@PAt+~lU~5^+n{!jFww>g8^>5zPWgCCGzRom0z47~W%Njnlqpt6_ z-g(iccYb<ACF_Oxc?z}>Y&BOeY!EJK@w1lR+A>>*V}YW)WJ%WTjD+~5yL2AqmK#bw zJ$CYZ`s2S%olNJxNbgm2azB+@C@1({_s}%veT@%Zl>MoxGpO=A#m<-7bXv++`gbS8 z&aiDo)^i^|e)Yl2p~~{WSFZQhHs4P7&`{V`Gqr)GEqzyo;`3IvmSZ!eU-UlCI$i!O z;%M^PW6_TvyG>tX>DD9pQ~GXYdfJXz{yci~_6qYyJ=`dLm~pr1vRkj!=F8SKEz0>7 z_h^cM<-v}w>p|v=pJu7du6iT1bD>hjGhcx{tOp*PeS1(^o4v8Qu!H4qg~0RFBZ<4# z$eF}Wy7uoY?+J$dmJdbE;^!ql+>O!kTEm&q+OTKGXC={BI+}LxChYRR{PoAC4>w<L zJK%JBuAvR<QqSj4HqA|2ci?uGYXwt)yVR+5AvGQIjxUh=%O_I4>g|WClS~AXH=8+@ zCz|!ncM{C6Y~9d&X8QW52R1YG_wB#L=$PF6aq-P$^&@LjOeAg^3(q;{p1-BUw@g~d za{GR<g^KI`OEsDt)OhLbqkeahii`i`MLIlxd?c#XVvX&R4;Am5ock(cw%64Q>ppNL z9J@O6;?6C)ih&B(FLr6pb<e(>J9EAavzl{w-&rmG!0yXCKR$bK(#`4uqwa(psgr-~ zx{vjkxy4#EtPc;52tU7<&3(UqUjD<0Pwnq7;LeO<=&1UzUjNDZcMtQIoU*&8dhq^V zaXpPc*&>%SofceW+jPuH+OB1#+eE9MQLC2~F>$e|SU3M;%hwcjdG=;{e7fL|45Npu z?<%qgFI@Hh*CxLzJ-u~4-`juebC|Z+@yB~T*3#EkmRT(j7vOaGxL9tV^@&quW#-*G zAMrIj@BgSYWmZ)fLjjYR8K3@&ADQ;*yc&Mzi|#l~QA~citve%4zN>IY)ZG<dPI29x zz~(EXH>a`4WQQBiyu`IL?$!L79v|S#VI%wg@!qG0_GZhRU!vH)<tbnO8cT^wsgLy8 zfBX*p<5bl=&wcxv{g)owd8}HKKC8`t;(h@wy$_8)&OLqlT|?=MG6ze{zCS-~E>zt8 zX*Oknp<Boj3#HP(Y0j68EG2KYI!trs_<nwG(J#3jzq4xp3WY3FjX!i@{v)}6bB#qN z_g?Y4UvS8~`A_3=i68$x_A`G}+q`z_tQ7)Hb2503@W`ya-6v4sz_~!D<aqwKpP8PI zUcdVi^Z7pmVt5ABPY>VhukIkm!0^DCfk7U3Ki$_g#L>ku#PM#-`=Z-!lm4GuJ|p?v zwI{NiUPVdjUQ?{xCMCZ+HEG(EYtxICzELz#Nas!3VBC=L?yBw8t9uXF-7NinhCzYh zR8;;eJDJm>vlT8}zFc2__wotpiJv>3*Zfgm*c<Xv)0)$->Uxc`U*wi6O2K<SO@I8r z^~0X+8fMb#%9p=+wA}K~nY{9!QA^)=>6ym7+Z!frc<u++y!hvpX@2UH-<C<AxWQ7n zajFt;g~W#%rOOe;lV2;H;nqEKM9-|zRBdl2qsmv!>cgda!Qa9>l<yqfc%xwEoK1Cq zw+rsxou1!VHvjL2g|82at^Z$LdsMzU+(=|4<FTqYE9Yk(JG?dF-O1%P&zG<!*+^}? z|9K0;!VQxbFJ5o|+o0>TXZPhzjh9w?CQUb+{OPCF!riBT&Ssq*7r){2?AP5l@4k6f zbujMknVWwf6&-mtef#Ix-M@?X*eu$um)5=e=bPo#doFo?ut*SBnzr&xqOjVFJ?wV1 z>J#mZv*)SgC|8^+nh>J*<(R=dH=U5ol$9GIGQ$?kayT00x}a!>P1b}X=}Mepiql#D zo!gNpxJgNA+ntTA9J(8mBivUfZB4sxD0*0&^ZUvTH#$uI%k1~sF2NVN?Q+r9b2D!( zb23g4<v3Y$+(L5BAMLgG7hM0EvhSHCb6VIe=Ef3Nb4yFxLo*^iw!~hVr2DK(gw=7k zNKd=V)nfKXP1Vv*MDDyWQ)u0&)2LLmc9P)Zs2}>Axmhi{kFIu=I+(ohR!+#R1ux_h zqGztxwLR@{AWqY_CbjjPNJPfc-b)R$tln8?)!tf^$ZWYq<x1EK!4>h%(<W-pyj9;H zu`c4o!HN(2*i5UrJv}z_`YXOzAgCa}jN^LWMZw$aSUXwQbX<GB#cleNZ6ZDmw;Y(# zmxOJeCK=R|$`f?Hg|D#lpt<{hqa~@L9p|-Hcy2i1%NOM|w=qibSmh~)D$O8)APvW_ z)vK@ku*)&pzhcpOHV5wiOMf5Ub@hP!l)KG6TuatQ-rXnFazy<`ugM98H`&U)itNh2 zxB9ui`m=^pzoA>eiE+ozWtj(Oifz0gb>iZB!^~I8dOHIrvIrJ@dbMof2@@YKAz2pY zX{+X_7Aa5E-oU>2QB8MRc1B`A7E9D;!v+qs6E~&Z?evZog=XyHzcQ=C{m`AWpUx*F zy<PjUBz=8jRCmiCqib2r_HEho4y~Kj#~C(Vs-~&Bd8u~iZz<z*Ya}|~WW+P@M)4Ll z+)fjcjS}4KC!@W=;D&O{Jz<~lE3BP1H`b(1nAfW)E$DgfQ|z}H75B9MZWP_JtzcrA z%SU0|-9?TkZsg6@W#6)>?DqW+98C9^msIWZsi|3Y^s-<YyUCXc*1=EL?s&S`xPx0x z>+t5OIyNevyf)_zuTN63{mvW2d}GFsBj%C?Oe_kmjn$D%KaQB3W-0i@ImasS_QS-? zSPorz2X6kRg%5o8X9n&l+rDN_iIm9NHGhsxyR$%WiHMX^4EJ8XHJ6S>#7w%<Yqulz zbirN0Ee<a&pV)LrMA>*4aek2!Sok?u%|Y4gcfP}^ncjD2OS>4p=4KZ2h<dzXht~<o zhlM*QX|B1pZDv_r=CSJ)`Zm20!F&96z0mc0zNP1MmsDelwqHk2_9lxd(z*G{TRh4h z<iB(mdLy)k@2xIths_r^WyOS7Guo%H%+}kc{zq)GhV8;fhr^2dG*2fk^6Sq06(wn9 z^+SX8oy@)D?n(A4yOw)@ns`ESr<!YOs;B?q+IBPZRhIF6H+>noJ&k2&CUF{`Wi{=; zej+N<{m8mv%cu#Tg1OsF*S1{xw>WYm-xq`30@5$sy%`VnIl9beulIL$UK9Ur<NXDh z9|LBFJxH9`a5$UwWJ=4es820#3Ri#pIpsjqL@QmxFYEN4c6d$DIDRMOoJW<>V)x)& z?Pb@lx7dsJ^PDzPnZ(e-zG~~07$=X-#yf9pDYBg<o6zr+;Kjo!y~BF#&4gv!U#vT_ zru1o#)u9{nzFyhVRMaY^ti!WVE~?V`<DG+Fw~I91)(o%t<aBF#<M!+ui%zCQtT^Pb zp+V}4a$8dD!c%G`qHgPgPQ@l%S`i%Nu-rBI!khT!IE&TCn-={4IpN}pa<7dQ{`E#7 zYq(_|e_wWxCz^S(H)9#+gqVP5jc2c1&$iwzSg(12PdG(6WPv<)_=XEBc2<@r*l^xB z&k;Ov?&qKwxs{t-6A!k0ZalYW%i*=JZ@MsOC73!I@uY50cRJoOnW3gxguyahiJjBz ztdvu+P_Amy#*n4Sn-rKQ9bBL6&{@^Wy7AUWmHWNPx({ZvEcmm)$;W~HV$W-K1?GLT z+SCs&H~um?j3saR;x!RWyc4V}oTe2NtoX$B=BN{wbGXcfRo9=!rbf)PUQv-*c!4ol z<5;Qow@TlQ+hryn{hz#+??K_jr!O7^Xg!k)Vmf?GY@746NXaW(_?`+2#C~RX)Yy4a z;cH}wjB;FCikgsz^tb&2FQ=Sa>vVd@6E5NQb(()n%X^eI?fM$?LC1T;-UUGhQkU3{ zg&ohDQNUTX@q1a0)Dqt#uc9;_*Kl1tEU`}2wKc*y<jd3*6VBd=<9A>-PO%AGSs*EY z$V6f5rd^AU&*nEV&$5=`i#@PS$Kzi5HQlYQQ-8+DZHVkCySyrq*Cpu7%%IMlF_F`L zbUi*V(h}>O9-#UtOn32A!(<_yJpB;XN4~#hb=o$!<ohZXi#RHUnayl;`I~lY#tOl` z^4tfe+<xQMlf84x%hstz<#oH`>ZP6jIh=F4R@<HD<aNKMVBQPv{ioVvy}qxwoMz6$ zy5jA!wS|uv^H}Vwl=ZeUglzoRzsvdJb;jA<RqjR#)68nZUGJrpv{>lcetX?Bxqm@Q zkm{lQh%F5YKHoYz`2U6Jx@@{{w=v+E!xGt0Rc+37xvQiV*K9qa)hKoCk&Jw>KmWrX zM){~tk%W`lclbBuzjibb=3I1OL6p8>RH%Jj6w|{g?`MhL`(ACZ=;Y~5$GUSR!j|$} zJ9y*y#<MQHYFtm}`dsA8Enkq?_T%7$m|a4bj$J#~)uN%Z_qZijwoK;4=EMCpe}l5W z27G0kW7c}%V8BU_)B@!%Ke%Lj=9KputZ`>5e6fPL=3)EuslTlyZ-|Al*S7~T*J-8X zY;IWYdd97bi|fR)9kn9+dl{_q)w6aVHfyPjIdM^-IX^Rg-352ySMm4noIR)iTR_I{ z=@NY&_Pku3R;z34tE+WWN-J`_g_k_%o3!uifrD%nE_+)~?QmT#WiX@2=KBkU=S{}0 zM!Owv-Fl%}^+MtL+L?Z~6FxGnbt!0mT6jHkM)j61B?g1W&fxQA-)+LJR;t{{T>30< z-oEwft8Ev*?K1w|8=&@BOHZjJB9vpn-o8t*$Kvx&C%%lje)VdRY)}t>g$kqYiZ5%6 z8aMPE+wn7Y<!O=M$2lF884{XaH{4yDTiRRrZG%--nUlilZ6T-9Os>>~US<-EHLpH5 zU31a9Z|An1+Hzts$N#k(^VUX}v77E!RX@1A;>L-rlMRP<ee)_c+IDo2$CAK}A5#y_ zJNlC${dLXyf6g1Hi9DPgudvK7ed#-mEBnOMUp|^38-39BYs`k=C844oPnl%PA{SiA zI8e4ipmXQnYuj7aCUsst6gTx^VC2^5^Rn){rp3JF2|p@(r}x%7$>7Ne<qKNYl=pg1 zSKW2O$$k6Iq!p#B_O!d5(&9KDuwsd0^_!gUQ$^Dj2UUkmydQA!mEX0T^^2VDswI5a zT)^RcN^E{ZV?dI1OV|ook8QtFcdJ#cHx13sz0$n)a+zzJjEQucSd{+j<@)hKMb<yO za<227pR{SI^OZSf8|G(EeSG+-rq<KbOE(=gYwH!A`hEsqXK1j4m9di0w*;}fYn`X& zC3f%1IV`^<cG@=W6*o_AEIY@%@{-tmmm3ooX(Uczx}0=$tL^*TYd!4eF2p%-e0MmT zV6pzH<-|oD^KVaDQRdX$RmA>C?3rml`%kvtyHuHu<gK~DU%~clAJh7C?r+ZC)BNK% zODue==9VAcigz>hn539@xp+9MF*0~O%n&GKk7AS&Yhsx5D#}%Pp39bV@_W8l)$V?C zZQ`k2s=tg9#4iP8_8gWmtmdwef3jVB?%F$tiqfSeugp9sv`co{38@tlYj<r~?DbGj zY-ScW^BrchnS5KdUil|l*PZuhyOG{1a&5lejhu_=_P*kqU4td_)63WAzk7e<_RAW( zz58az>fJcI$L?S8=Puv%^@;T}V&fTfrj#i?5ia}dTirhCQCx^M+X|a$=NNbNFSg#c zb<q;0aCtvog)h5r-o5&iV@s*+yx9G-&abQAS5sVBYo3&^_x$<##@8?XH?O{VS3jj| zeOmeT>D<=aOmZ*mntRUi;rH;%mb>@Pzkg3hPxsb_<^MV7ojJJAD8cE{O4+$JxAGje z-)ua#_0*OlMx87|&08O>O*tRBY{gvm8+kho8)O4{&Xy?irfMv9irnU(Q&jX>wB%KQ z{Dus3(_OhgZ!^?=*K$w_pQNAablBY3MS<r*(k$WnX=*WED?0i2XzzWU@$~29RD&aX z?iG0*)tcB4=WHl5HP~qJUge&!<sUcyGugnvb^d_RPL%|oGwU|YziRdWv(6KXmnj*$ zmfilJv*o^b^NlartE?s->3FR&G4lg&{M-4JilX*eA-u9PeIDfa9S`BM&=V2(roqQJ z-}dkU=3@6d>0)nK58HkC;dWb6+Qm?JP19xNvu^C3do_~d64#%&qPbt}|86UvX7}`T zo9P;TE|KgJnxeU>m#)74$C2QYYH`j|sVC$?Taw;nr`tNGC-3mk{^0KUZ{kT48(Zh) zD^8y_QsR-2yJalqah9#HIjr)=k;Uwu&iostm6`dAojx57$(xzS|64ENvOux4*XeYw zCmB(UQ)gY?8=K6zRbGux_M3f`%)5)VJHk$teO;M+-*S#~I#)w|vg1cyC&R)smjiD2 zrfpmMe$nT?HxW5OGPT*}S!<<)_Ny<O*7>?kXx;1ti6dNx<uVW1U6hZF)tNnUpAJL( zYTdAP+gt;<raXy{UU19Y_rcP&91MZ$)|B2URF)0faa!WT>H_~i!a{5O)NjvR@yg@c znUixH6V_@c&-ORCaKplRQ+M>HZWo@^rL{s@6IVRe=zPuV>JoouN>E<=M5ouUOm5Ge z;lL*-b@z%aU(c=QDyQc%$G+`-7vMDY&FQ49=*_RB{^(V{F6%k{n)`@g?Bk<zzx(Is zKb&~8e$FDz0CP^GgXenPuez`JXr5GB{UJx(uH0Y6py+Y*@7U#Om5UE#mrhIgwlVbg zidSEb1gT6+obW?|<EF~CBbqFXau@2qXBYc0KhP}O5;N_7W%ANB4_5t-N>@#2=ALS& z{k-2QsWtx1{I;H5mRFV;Fzi2YXu%h)pG8-rdH0o^Nn5afmh6+|{!bq;o7U<$3+!)j zNc!;L#=W=am}f<H&f8eVd96pZNp~^lxpcXn9}~Nlu5f#mp|t4aOh=~LgjsxL2GhS7 ziof%>+M#HhBFz)C?ODZ~mcMsgZ+=@nD<!5qdrrnnvsGCh5AO2W?cY?sMgN9-@~ubL z&mEup(RFK7#eE(3uLtYR4oIJp{Q2;EY0$oPM-HT3-eKMLDRr7ptaX!9P3B776(?5d zO^gZ>pZ<R9w7rKv{FyMj_TAKG?G;<siBC_y5v1O^JS3#uV9xA^YbUSX+H_lZenmw1 z{)fd=FWE<^{XCT6e}`M~Tf`?nw*tW&;cau)aTydegiPSO{4Aw(v3B^?@MU}NFDPFv zD)+GW{qt~%F!Mu)Ht5%_PV2vSv`+tzcW2s{PyWr{c-nXRxR$7XZqaYfIh(q~a;AiX zhwZZOeHD#XPakJkx~*b+?q5FH;!*PTEe4Z6wj4Wr=ARa~`Q^XSYcKt7zTxQC*;Btc zvxL$AQGo93>HS~M8LB;+xTx(m!)Fz(#T#}rc#5^nowsTI%^81HiuRSio_p$mjo-v< z^WAav66<bXU%p_=y=oq_J(p@WJ38<Bw2ifVclo*p@#mW#Ki=z}XS8PXhelT3iw}Lx zAE+e6TP*7-Zu)wAujb`g<2k9<xR!5!u$#L;_4q&46+27Ijkm?j*(86yqq|$nzUO@I z?X;Thr;li=Zsq(oPl;pWKhrfIwL2;gH1ryZUga+M6x^kG=*hF=n<qc`S@`+7Pu-KX z*}FMr3nzZITA_M-YaUzplV#-_n{^Zp2b(iR)yDtcexqvddcHj`uI=u;D=m|#l>2>7 z-GUV#&e?r_{ou6B>(>u{vYb-vOXf~#+IuSNZI4!C9m`>+&-3Q~eaBe-e$RtdOE<@= zos>0tZ6{pMt@rU<_uGlT|LT_5cYdBY`{nnO8`?V_%D#GOc<96D6p4nO{Y=cJ0pX81 zGS`29c$j^S9mBit|7PA4IDAa{LY14dX~f^%<-!lo#r5A>mas<tqV=4No^bJ5&-UL` z{TFfKgR;%K&vEb5C+^;9K53(^<RhK!cYPl7wA3Du_`nqtP-CIGPsiML*WFJ7XB?+J zzsB;WLv;1JFIDF(&Si<SKWLxHWKnYM`=X6Y`j`dZMS9e8JZoQ5lxDUi_sP|Sreiw) z(`9r|T#wk5vDI|1MqBBdrh{Hj-e;P>|2VVJe93nst7^+lzmL?*+sg~8SX(#E(fO}+ z?m@N4{JSrmc&b}&vIX|UJa~TjcYtGyj<Ccb5!Yam8@!V~gbT2|X;g3Ba9LPus$lQD zN7X70PdYX}7C&gNuHP4L^v!F6QMan}oqd*eObmav|Bv)FtN)$v-8NT-c~a7w7eBtd zc=6)Kx*xyJMk^HmDW6zb*Ky|Leb;A48I2rX+%2AD|NBUvzk`P7M$fbBubHJ^Q}W1H z@Ohe>bAHyGn-;U3Uw8jIuancF5TYz$_xiZk*WG<PB{!t;s2$(@Z&LOKuT5KYxV*kA zFkAmVpMK6|-rQ-6WH+WSoqOPEy04@C>o`IC^A}cpkX+uCu6*TaJ@4IV%-TK6XIUn_ z`M%@gcdyHL-zPu$!}E4_39DjK;$n7{1K~}<0crc2bMiiY)Ghm*5wyZQEk8qMt_u4Z z=c~QKl{p{uf)@U~G~<8LA!Ey*S}jcW;>jwuWi9Q8i##LF=3o4C__ZjTMxWqHJCBXJ z)4y?FnWihgl#iL=$$duUA9WL6EB&2jeLwo%uKwFw1@}+vS$nrf);H?K95MGT?`FmA zUG=Obd;i&89J|9ZcOEWOQ;zy`X`bGpNfTxWvivhU?P%J3dr4sRZf_se&|S*!4TMAX z&AhRjr}E&=YFD8P=S7a6Ua)PmZ=O_nf|fS_?1ewtm#bwsM?HGbx;EVPm%>&r&O3Gt zYnHa&`Kk6taNYiS7XlMwR4R-dm+!DJI90V@U%|l1vSe-1#*kNw7k0*7nUI_7sG|C~ zIpnWm!&bW;H^mxcIv-v6HEn0_hP^+ZK6>}}OWC)7pME|1mR45#{pW-T+v5E@=EVEo zkGXXrB6j~=J+b`!XX0iuVb{f{KmT65L;7<1e)HPT$D?=s`IYu@O6uv~`T5TZ{+sK^ z&AXy!R<Sbg-t(n<{w=@x=UrXZQ?c#cR$=e+*XJ!0_n*!&GkD^{9Cec)H?}iQZc}oU z4VZqrD}HU*J6o|0U7rMa^)|DdmTg(56v6uD@S9&(&x$K)l^<PuwYXmS-p;0aE?Wt< z4L?NJnSZc<RCHMGN#D5?&g-jr4BCD3D%t|;9B<4LSXtU76XdY|`}&A!M;WWleU;xF z+hnO?yihy+?82D4)8*SlH73um|NiL3?S#4clOFOn1lO1RzuqOU_Jj3B+?j@~zx6pE zS!Su<-&a#vR5anme<swy=XHHQ9>*{+FhnyjFv#E@d=B?;b@gFAXvlTgfQR)$?D7jY zc#Jp~Zu!BqG+I+}X6%nGjLNK$az(%QZU5V#rM>6vvYE?GE-`cIC(hfc_)9Qt>&K^M zzTZvwzL;@WnpKv%-?g84*g8Y={+Z*J-Lss!=D8ppmH-+OPmE@&<78l9U}s=pP{Hl0 zlKg`BoYb<^9KDi?5^ql}FWnQ*nb1bpwG!0zikTP~j9C~MWN{l6<m&7n<g)hC@xIv! z3@i_R+i_QDE|V=fAQGJ8V>*L-(VsYjx636A{O9)yx%Y)tpXRQaCFwiu3&XbeHFq5s zYB?C^Jz$pnG-JUF`SjU(n^z}4Ju-FArmpm@e|Q#Z$OPL9<XG8=FVf)iR#>U(RABLY z+TUY+cP;7;>a8{}Xmzbj3!Ix;@G;cg@|)Pyr@x(Z*qq*`X)iB!D!;45(l^on4BO%G z9^TT2F6(=y2)wIZ!<(A7<@dUXL)-~FpWZP3_Nl=(eTQEE1B;Unj!gcXaP`<t@d-}p z&c6$)_<T2Bv3)zabe6_hTgwd9GFwMOuY%3_+2#*~nu4F)UlkZ)a#X@q|H?E$RqlHc zsn3sOJXy81KWG-iJFyL?XBqVcd_HVD)4Keo^M>WZhac^ax_M)t!OwZ=mlK2x-kC(( zSeRtopR76c!>tD=x2^OLldITOEj&d;(WCFqzMuu3w|Tzk-|>{1d~;sc@hg)h_(ThZ z)~>5w;iJArG58pp!26q9X9NVfdd&LE9v#GRd{J(jc>a?muN+Nx{%|<l?{fQLVjKIv zl64ZnY8Pibb*%jK<z(?=-6rEB#<E@cFL-yJ>`HX$es*i0e2Alw%*&I%+9t&-pAt(d zxc=8&{H2Qd)d`b1zioJNIPdj=ZS&?%ut?bN=VW+)r~ApLuKzxJ)jwD@QQs%-+u6oY zsd|pU!aeTIdw%&`dAX+MTksC+hnrq*zn302Y2p6nTGvT@{-L=RH%-M7F3q^N<7r*m zvq|erKTmR<`Si|`4Sbto%S1w^xLW+NF3L#^Y2*x<T_`z!iwpDCV@Gy*3%$GcsO7lI z0w>QMYcH<l<SCXd%ZQTLRsV2ee)tB}hbi40pS}qPcr!AIFoP~V<-mFsDgzWOX#_D+ zuw0CaYy#*21YWdj7D4(zcuC_kX85@yD3>mxn}B|=97s0^FKIMqhns+M%N()^pbK5m zPdfqW2H_=*j}71^grc5(f@}u110z8CL3l~y6Jxj;NC!dS(+@g60;Cs&mo$o*!1X7h z9wvco1}H4i50e1t2jL}+KB#6uj+Q{y4)Ox}GIWqu5MI(4=z-z{#G-U`BhVLbgS3P2 zlEyesR3ng=awD4pDp1ka0)tEd;U$fs-Y`>etqevt3w^#4WDW=~Y5W_7(=6ERCAwkg z^$*A(5MI()Rfy9taBYNc5_+8hG6jT}Gzt{qGzp~!K{pY->HwJr!dn`nahnLKNCLcB T*+5G982A{jF*7i5mV$Tyt|Avr literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d11ce1f61e95fc31351dbfdc9abfef9124187f64 GIT binary patch literal 40624 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 literal 0 HcmV?d00001 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 f4007569a2..a9ddd46929 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -219,13 +219,7 @@ </div> </template> -<script setup> -const { refresh, user } = useOidcAuth() -if (user.value?.canRefresh) { - await refresh() -} -</script> -<script> + <script> import TableSchema from '@/components/table/TableSchema.vue' import { notEmpty } from '@/utils' import { useCacheStore } from '@/stores/cache.js' -- GitLab From 9e316af34248b14c7a0827211b101f718689824a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 28 Jan 2025 07:26:01 +0100 Subject: [PATCH 28/52] Fix lints Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docker/docker-compose.yml | 36 ++++++++++++++++++--------- helm/dbrepo/files/01-setup-schema.sql | 4 +-- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 2db8fc6185..d82f3b45f8 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -78,11 +78,12 @@ services: restart: "no" container_name: dbrepo-auth-service hostname: auth-service - image: bitnami/keycloak:26.0.0-debian-12-r1 + image: bitnami/keycloak:24.0.5-debian-12-r8 volumes: - ./config/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./config/master-realm.json:/opt/keycloak/data/import/master-realm.json - ./config/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json + - ./config/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar ports: - "8080:8080" environment: @@ -92,6 +93,9 @@ services: KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" + METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}/api/user" + SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}" + SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}" healthcheck: test: curl -fsS http://localhost:8080/realms/master interval: 10s @@ -109,7 +113,7 @@ services: init: true restart: "no" container_name: dbrepo-auth-service-init - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 environment: AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin} @@ -130,7 +134,7 @@ services: restart: "no" container_name: dbrepo-metadata-service hostname: metadata-service - image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: @@ -193,7 +197,7 @@ services: restart: "no" container_name: dbrepo-analyse-service hostname: analyse-service - image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -248,7 +252,7 @@ services: restart: "no" container_name: dbrepo-search-db hostname: search-db - image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.3 healthcheck: test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP interval: 10s @@ -272,7 +276,7 @@ services: restart: "no" container_name: dbrepo-search-service hostname: search-service - image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3 environment: AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client} AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG} @@ -296,11 +300,16 @@ services: restart: "no" container_name: dbrepo-ui hostname: ui - image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3 environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" - NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}" + NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost:8080}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "${BASE_URL:-http://localhost}" depends_on: dbrepo-search-service: condition: service_healthy @@ -311,6 +320,8 @@ services: interval: 10s timeout: 5s retries: 12 + extra_hosts: + - "localhost:host-gateway" logging: driver: json-file @@ -365,7 +376,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.2 + image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3 environment: LOG_LEVEL: ${LOG_LEVEL:-info} METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080} @@ -422,7 +433,7 @@ services: restart: "no" container_name: dbrepo-dashboard-service hostname: dashboard-service - image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.3 ports: - "3000:3000" volumes: @@ -449,7 +460,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.2 + image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3 environment: S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin} S3_BUCKET: "${S3_BUCKET:-dbrepo}" @@ -479,6 +490,7 @@ services: AWS_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID:-seaweedfsadmin}" AWS_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY:-seaweedfsadmin}" AWS_REGION: "${STORAGE_REGION_NAME:-default}" + METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}" depends_on: dbrepo-storage-service: condition: service_healthy @@ -494,7 +506,7 @@ services: restart: "no" container_name: dbrepo-data-service hostname: data-service - image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.2 + image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3 volumes: - "${SHARED_VOLUME:-/tmp}:/tmp" environment: diff --git a/helm/dbrepo/files/01-setup-schema.sql b/helm/dbrepo/files/01-setup-schema.sql index c9ce89d1be..173bce7b03 100644 --- a/helm/dbrepo/files/01-setup-schema.sql +++ b/helm/dbrepo/files/01-setup-schema.sql @@ -6,7 +6,6 @@ CREATE TABLE IF NOT EXISTS `mdb_users` username character varying(255) NOT NULL, firstname character varying(255), lastname character varying(255), - email character varying(255) NOT NULL, orcid character varying(255), affiliation character varying(255), is_internal BOOLEAN NOT NULL DEFAULT FALSE, @@ -14,8 +13,7 @@ CREATE TABLE IF NOT EXISTS `mdb_users` theme character varying(255) NOT NULL default ('light'), language character varying(3) NOT NULL default ('en'), PRIMARY KEY (id), - UNIQUE (username), - UNIQUE (email) + UNIQUE (username) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_images` -- GitLab From 7019a7b98bf5250809268a97d12669ca5813013c Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 29 Jan 2025 14:33:52 +0100 Subject: [PATCH 29/52] Fixed UI Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-data-service/Dockerfile | 4 +- dbrepo-metadata-service/Dockerfile | 4 +- .../api/identifier/IdentifierBriefDto.java | 3 + .../java/at/tuwien/mapper/MetadataMapper.java | 5 +- .../main/java/at/tuwien/config/MvcConfig.java | 16 + .../IdentifierStatusTypeDtoConverter.java | 14 + ...r.java => IdentifierTypeDtoConverter.java} | 2 +- .../tuwien/endpoints/IdentifierEndpoint.java | 67 ++-- .../IdentifierTypeConverterUnitTest.java | 2 +- .../endpoints/IdentifierEndpointUnitTest.java | 260 ++++++++++---- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 3 +- dbrepo-ui/components/ResourceStatus.vue | 17 +- dbrepo-ui/components/identifier/Banner.vue | 2 +- dbrepo-ui/components/identifier/Persist.vue | 19 +- dbrepo-ui/components/identifier/Select.vue | 23 +- dbrepo-ui/components/subset/Builder.vue | 9 +- dbrepo-ui/components/subset/SubsetList.vue | 25 +- dbrepo-ui/components/subset/SubsetToolbar.vue | 4 +- dbrepo-ui/components/table/TableList.vue | 10 - dbrepo-ui/components/view/ViewList.vue | 10 - dbrepo-ui/composables/identifier-service.ts | 340 +++--------------- dbrepo-ui/dto/index.ts | 75 +++- dbrepo-ui/layouts/default.vue | 32 +- dbrepo-ui/locales/en-US.json | 4 +- .../pages/database/[database_id]/info.vue | 77 ++-- .../persist/[identifier_id]/index.vue | 23 +- .../database/[database_id]/persist/index.vue | 8 +- .../pages/database/[database_id]/settings.vue | 2 +- .../[database_id]/subset/[subset_id]/data.vue | 22 +- .../[database_id]/subset/[subset_id]/info.vue | 64 ++-- .../persist/[identifier_id]/index.vue | 26 +- .../subset/[subset_id]/persist/index.vue | 43 +-- .../database/[database_id]/subset/create.vue | 3 + .../[database_id]/table/[table_id]/import.vue | 3 + .../[database_id]/table/[table_id]/info.vue | 55 ++- .../persist/[identifier_id]/index.vue | 26 +- .../table/[table_id]/persist/index.vue | 14 +- .../[database_id]/table/[table_id]/schema.vue | 2 - .../table/[table_id]/settings.vue | 9 +- .../[database_id]/table/create/dataset.vue | 3 - .../[database_id]/table/create/schema.vue | 3 - .../[database_id]/view/[view_id]/data.vue | 6 - .../[database_id]/view/[view_id]/info.vue | 59 ++- .../persist/[identifier_id]/index.vue | 26 +- .../view/[view_id]/persist/index.vue | 11 +- .../database/[database_id]/view/create.vue | 8 +- dbrepo-ui/stores/cache.js | 5 + docker-compose.yml | 2 +- make/build.mk | 4 + make/dev.mk | 2 +- 50 files changed, 724 insertions(+), 732 deletions(-) create mode 100644 dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/config/MvcConfig.java create mode 100644 dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierStatusTypeDtoConverter.java rename dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/{IdentifierTypeConverter.java => IdentifierTypeDtoConverter.java} (79%) diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile index 4b45e94290..9edf1375fb 100644 --- a/dbrepo-data-service/Dockerfile +++ b/dbrepo-data-service/Dockerfile @@ -8,7 +8,7 @@ LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" COPY ./pom.xml ./ -RUN mvn -fn -B -q dependency:go-offline +RUN mvn -fn dependency:go-offline COPY --from=dependency /root/.m2/repository/at/tuwien /root/.m2/repository/at/tuwien @@ -18,7 +18,7 @@ COPY ./rest-service ./rest-service COPY ./services ./services # Make sure it compiles -RUN mvn -fn -B -q clean package -DskipTests +RUN mvn -fn clean package -DskipTests ###### THIRD STAGE ###### FROM amazoncorretto:17-alpine3.19 AS runtime diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile index ddc20cb420..fa92b799ee 100644 --- a/dbrepo-metadata-service/Dockerfile +++ b/dbrepo-metadata-service/Dockerfile @@ -12,7 +12,7 @@ COPY ./rest-service/pom.xml ./rest-service/ COPY ./services/pom.xml ./services/ COPY ./test/pom.xml ./test/ -RUN mvn -fn -B dependency:go-offline +RUN mvn dependency:go-offline COPY ./api ./api COPY ./entities ./entities @@ -24,7 +24,7 @@ COPY ./services ./services COPY ./test ./test # Make sure it compiles -RUN mvn -fn -B clean install -DskipTests +RUN mvn clean install -DskipTests ###### SECOND STAGE ###### FROM amazoncorretto:17-alpine3.19 AS runtime 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 97f3502674..f94edc2cf7 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 @@ -50,6 +50,9 @@ public class IdentifierBriefDto { @NotNull private List<IdentifierTitleDto> titles; + @NotNull + private List<IdentifierDescriptionDto> descriptions; + @Schema(example = "10.1038/nphys1170") private String doi; 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 1d9bc28c6a..97c0d0b903 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 @@ -393,6 +393,8 @@ public interface MetadataMapper { IdentifierType identifierTypeDtoToIdentifierType(IdentifierTypeDto data); + IdentifierStatusType identifierStatusTypeDtoToIdentifierStatusType(IdentifierStatusTypeDto data); + default String identifierToLocationUrl(String baseUrl, Identifier data) { if (data.getType().equals(IdentifierType.SUBSET)) { return baseUrl + "/database/" + data.getDatabase().getId() + "/subset/" + data.getQueryId() + "/info?pid=" + data.getId(); @@ -823,7 +825,8 @@ public interface MetadataMapper { } @Mappings({ - @Mapping(target = "database.views", ignore = true) + @Mapping(target = "database.views", ignore = true), + @Mapping(target = "database.tables", ignore = true) }) ViewDto viewToViewDto(View data); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/config/MvcConfig.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/config/MvcConfig.java new file mode 100644 index 0000000000..6bdb809731 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/config/MvcConfig.java @@ -0,0 +1,16 @@ +package at.tuwien.config; + +import at.tuwien.converters.IdentifierStatusTypeDtoConverter; +import at.tuwien.converters.IdentifierTypeDtoConverter; +import org.springframework.context.annotation.Configuration; +import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverter(new IdentifierStatusTypeDtoConverter()); + registry.addConverter(new IdentifierTypeDtoConverter()); + } +} \ No newline at end of file diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierStatusTypeDtoConverter.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierStatusTypeDtoConverter.java new file mode 100644 index 0000000000..96e67f63d2 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierStatusTypeDtoConverter.java @@ -0,0 +1,14 @@ +package at.tuwien.converters; + +import at.tuwien.api.identifier.IdentifierStatusTypeDto; +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +@Component +public class IdentifierStatusTypeDtoConverter implements Converter<String, IdentifierStatusTypeDto> { + + @Override + public IdentifierStatusTypeDto convert(String source) { + return IdentifierStatusTypeDto.valueOf(source.toUpperCase()); + } +} diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeConverter.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeDtoConverter.java similarity index 79% rename from dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeConverter.java rename to dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeDtoConverter.java index b3f52c4377..61e169604f 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeConverter.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/converters/IdentifierTypeDtoConverter.java @@ -5,7 +5,7 @@ import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; @Component -public class IdentifierTypeConverter implements Converter<String, IdentifierTypeDto> { +public class IdentifierTypeDtoConverter implements Converter<String, IdentifierTypeDto> { @Override public IdentifierTypeDto convert(String source) { 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 b70516fa66..b3d699086e 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 @@ -73,7 +73,7 @@ public class IdentifierEndpoint extends AbstractEndpoint { this.identifierService = identifierService; } - @GetMapping(produces = {MediaType.APPLICATION_JSON_VALUE, "application/ld+json"}) + @GetMapping @Transactional(readOnly = true) @Observed(name = "dbrepo_identifier_list") @Operation(summary = "List identifiers", @@ -87,48 +87,41 @@ public class IdentifierEndpoint extends AbstractEndpoint { @Content(mediaType = "application/ld+json", array = @ArraySchema(schema = @Schema(implementation = LdDatasetDto.class))) }), - @ApiResponse(responseCode = "406", - description = "Identifier could not be exported, the requested style is not known", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<?> findAll(@Valid @RequestParam(value = "dbid", required = false) Long dbid, + 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, - @RequestHeader(HttpHeaders.ACCEPT) String accept) - throws FormatNotAvailableException { - log.debug("endpoint find identifiers, dbid={}, qid={}, vid={}, tid={}, accept={}", dbid, qid, vid, tid, accept); + @RequestHeader(HttpHeaders.ACCEPT) String accept, + Principal principal) { + log.debug("endpoint find identifiers, type={}, status={}, dbid={}, qid={}, vid={}, tid={}, accept={}", type, + status, dbid, qid, vid, tid, accept); final List<Identifier> identifiers = identifierService.findAll() .stream() + .filter(i -> !Objects.nonNull(type) || metadataMapper.identifierTypeDtoToIdentifierType(type).equals(i.getType())) + .filter(i -> !Objects.nonNull(status) || metadataMapper.identifierStatusTypeDtoToIdentifierStatusType(status).equals(i.getStatus())) .filter(i -> !Objects.nonNull(dbid) || dbid.equals(i.getDatabase().getId())) .filter(i -> !Objects.nonNull(qid) || qid.equals(i.getQueryId())) .filter(i -> !Objects.nonNull(vid) || vid.equals(i.getViewId())) .filter(i -> !Objects.nonNull(tid) || tid.equals(i.getTableId())) + .filter(i -> principal != null && i.getStatus().equals(IdentifierStatusType.DRAFT) ? i.getOwnedBy().equals(getId(principal)) : i.getStatus().equals(IdentifierStatusType.PUBLISHED)) .toList(); if (identifiers.isEmpty()) { return ResponseEntity.ok(List.of()); } log.trace("found persistent identifiers {}", identifiers); - return switch (accept) { - case "application/json" -> { - log.trace("accept header matches json"); - yield ResponseEntity.ok(identifiers.stream() - .map(metadataMapper::identifierToIdentifierBriefDto) - .toList()); - } - case "application/ld+json" -> { - log.trace("accept header matches json-ld"); - yield ResponseEntity.ok(identifiers.stream() - .map(i -> metadataMapper.identifierToLdDatasetDto(i, endpointConfig.getWebsiteUrl())) - .toList()); - } - default -> { - log.error("accept header {} is not supported", accept); - throw new FormatNotAvailableException("Must provide either application/json or application/ld+json headers"); - } - }; + if (accept.equals("application/ld+json")) { + log.trace("accept header matches json-ld"); + return ResponseEntity.ok(identifiers.stream() + .map(i -> metadataMapper.identifierToLdDatasetDto(i, endpointConfig.getWebsiteUrl())) + .toList()); + } + log.trace("default to json"); + return ResponseEntity.ok(identifiers.stream() + .map(metadataMapper::identifierToIdentifierBriefDto) + .toList()); } @GetMapping(value = "/{identifierId}", produces = {MediaType.APPLICATION_JSON_VALUE, "application/ld+json", @@ -156,6 +149,11 @@ public class IdentifierEndpoint extends AbstractEndpoint { content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "403", + description = "Not allowed to view identifier", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), @ApiResponse(responseCode = "404", description = "Identifier could not be found", content = {@Content( @@ -188,14 +186,23 @@ public class IdentifierEndpoint extends AbstractEndpoint { schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<?> find(@Valid @PathVariable("identifierId") Long identifierId, - @RequestHeader(HttpHeaders.ACCEPT) String accept) throws IdentifierNotFoundException, + @RequestHeader(HttpHeaders.ACCEPT) String accept, + Principal principal) throws IdentifierNotFoundException, DataServiceException, DataServiceConnectionException, MalformedException, FormatNotAvailableException, - QueryNotFoundException { + QueryNotFoundException, NotAllowedException { log.debug("endpoint find identifier, identifierId={}, accept={}", identifierId, accept); if (accept == null) { accept = ""; } final Identifier identifier = identifierService.find(identifierId); + if (identifier.getStatus().equals(IdentifierStatusType.DRAFT)) { + if (principal == null) { + throw new NotAllowedException("Draft identifier: authentication required"); + } + if (!identifier.getOwnedBy().equals(getId(principal))) { + throw new NotAllowedException("Draft identifier: not authorized"); + } + } log.info("Found persistent identifier with id: {}", identifier.getId()); switch (accept) { case "application/json": diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java index 7215e5db91..b61a39dc0e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.*; public class IdentifierTypeConverterUnitTest extends AbstractUnitTest { @Autowired - private IdentifierTypeConverter identifierTypeConverter; + private IdentifierTypeDtoConverter identifierTypeConverter; @BeforeEach public void beforeEach() { 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 74a252c5a6..3b06b974d8 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 @@ -122,12 +122,49 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { ); } + public static Stream<Arguments> findAll_anonymousFilterDatabase_parameters() { + return Stream.of( + Arguments.arguments("dbid", DATABASE_1_ID, null, null, null, 1), + Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, 0), + Arguments.arguments("vid", DATABASE_1_ID, null, VIEW_1_ID, null, 0), + Arguments.arguments("tid", DATABASE_1_ID, null, null, TABLE_1_ID, 0) + ); + } + public static Stream<Arguments> findAll_filterDatabase_parameters() { return Stream.of( - Arguments.arguments("dbid", DATABASE_1_ID, null, null, null, 4), - Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, 1), - Arguments.arguments("vid", DATABASE_1_ID, null, VIEW_1_ID, null, 1), - Arguments.arguments("tid", DATABASE_1_ID, null, null, TABLE_1_ID, 1) + 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_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), + Arguments.arguments("subset_qid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, USER_1_PRINCIPAL), + Arguments.arguments("subset_vid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, USER_1_PRINCIPAL), + Arguments.arguments("subset_tid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, USER_1_PRINCIPAL), + Arguments.arguments("view_dbid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL), + Arguments.arguments("view_qid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, USER_1_PRINCIPAL), + Arguments.arguments("view_vid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, VIEW_1_ID, null, 1, USER_1_PRINCIPAL), + Arguments.arguments("view_tid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, USER_1_PRINCIPAL), + Arguments.arguments("table_dbid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL), + Arguments.arguments("table_qid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, USER_1_PRINCIPAL), + 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_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), + Arguments.arguments("anon_subset_qid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, null), + Arguments.arguments("anon_subset_vid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, null), + Arguments.arguments("anon_subset_tid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, null), + Arguments.arguments("anon_view_dbid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, null, null, 1, null), + Arguments.arguments("anon_view_qid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, null), + Arguments.arguments("anon_view_vid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, VIEW_1_ID, null, 1, null), + Arguments.arguments("anon_view_tid", IdentifierTypeDto.VIEW, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, null), + Arguments.arguments("anon_table_dbid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, null, null, 1, null), + Arguments.arguments("anon_table_qid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, null), + Arguments.arguments("anon_table_vid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, null), + Arguments.arguments("anon_table_tid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 1, null) ); } @@ -146,14 +183,14 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findAll_empty_succeeds() throws FormatNotAvailableException { + public void findAll_empty_succeeds() { /* mock */ when(identifierService.findAll()) .thenReturn(List.of()); /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, "application/json"); + final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, null, null, "application/json", null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); @@ -161,12 +198,69 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { assertEquals(0, identifiers.size()); } + @ParameterizedTest + @MethodSource("findAll_anonymousFilterDatabase_parameters") + @WithAnonymousUser + public void findAll_anonymousFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, Long tableId, + Integer expectedSize) throws ViewNotFoundException, + TableNotFoundException, DatabaseNotFoundException { + + /* mock */ + when(identifierService.findAll()) + .thenReturn(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4, IDENTIFIER_5, IDENTIFIER_6, IDENTIFIER_7)); + if (viewId != null) { + when(viewService.findById(DATABASE_1, VIEW_1_ID)) + .thenReturn(VIEW_1); + } + if (tableId != null) { + when(tableService.findById(DATABASE_1, TABLE_1_ID)) + .thenReturn(TABLE_1); + } + + /* test */ + final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, null, databaseId, queryId, viewId, tableId, "application/json", null); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); + assertNotNull(identifiers); + assertEquals(expectedSize, identifiers.size()); + } + + @ParameterizedTest + @MethodSource("findAll_anonymousFilterDatabase_parameters") + @WithAnonymousUser + public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, + Long tableId, Integer expectedSize) + throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { + + /* mock */ + when(identifierService.findAll()) + .thenReturn(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4, IDENTIFIER_5, IDENTIFIER_6, IDENTIFIER_7)); + if (viewId != null) { + when(viewService.findById(DATABASE_1, VIEW_1_ID)) + .thenReturn(VIEW_1); + } + if (tableId != null) { + when(tableService.findById(DATABASE_1, TABLE_1_ID)) + .thenReturn(TABLE_1); + } + + /* test */ + final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, null, databaseId, queryId, viewId, tableId, "application/json", USER_2_PRINCIPAL); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); + assertNotNull(identifiers); + assertEquals(expectedSize, identifiers.size()); + } + @ParameterizedTest @MethodSource("findAll_filterDatabase_parameters") @WithAnonymousUser - public void findAll_filterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, Long tableId, - Integer expectedSize) throws FormatNotAvailableException, - ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { + public void findAll_filterDatabase_succeeds(String name, IdentifierTypeDto type, IdentifierStatusTypeDto status, + Long databaseId, Long queryId, Long viewId, Long tableId, + Integer expectedSize, Principal principal) throws ViewNotFoundException, + TableNotFoundException, DatabaseNotFoundException { /* mock */ when(identifierService.findAll()) @@ -181,7 +275,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(databaseId, queryId, viewId, tableId, "application/json"); + final ResponseEntity<?> response = identifierEndpoint.findAll(type, status, databaseId, queryId, viewId, tableId, "application/json", principal); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); @@ -191,14 +285,14 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findAll_json_succeeds() throws FormatNotAvailableException { + public void findAll_json_succeeds() { /* mock */ when(identifierService.findAll()) .thenReturn(List.of(IDENTIFIER_1)); /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, "application/json"); + final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, null, null, "application/json", null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); @@ -208,14 +302,14 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findAll_jsonLd_succeeds() throws FormatNotAvailableException { + public void findAll_jsonLd_succeeds() { /* mock */ when(identifierService.findAll()) .thenReturn(List.of(IDENTIFIER_1)); /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, "application/ld+json"); + final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, null, null, "application/ld+json", null); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<LdDatasetDto> identifiers = (List<LdDatasetDto>) response.getBody(); @@ -225,23 +319,26 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findAll_format_fails() { + public void findAll_format_succeeds() { /* mock */ when(identifierService.findAll()) .thenReturn(List.of(IDENTIFIER_1)); /* test */ - assertThrows(FormatNotAvailableException.class, () -> { - identifierEndpoint.findAll(null, null, null, null, "text/csv"); - }); + final ResponseEntity<?> response = identifierEndpoint.findAll(null, null, null, null, null, null, "text/html", null); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); + assertNotNull(identifiers); + assertEquals(1, identifiers.size()); } @Test - @WithAnonymousUser + @WithMockUser(username = USER_4_USERNAME) public void find_json0_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "application/json"; final IdentifierDto compare = objectMapper.readValue(FileUtils.readFileToString(new File("src/test/resources/json/metadata0.json"), StandardCharsets.UTF_8), IdentifierDto.class); @@ -250,7 +347,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_7); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept, USER_4_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final IdentifierDto body = (IdentifierDto) response.getBody(); assertNotNull(body); @@ -271,7 +368,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_json1_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "application/json"; final IdentifierDto compare = objectMapper.readValue(FileUtils.readFileToString(new File("src/test/resources/json/metadata1.json"), StandardCharsets.UTF_8), IdentifierDto.class); @@ -280,7 +377,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final IdentifierDto body = (IdentifierDto) response.getBody(); assertNotNull(body); @@ -321,7 +418,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_csv_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/csv"; final InputStreamResource compare = new InputStreamResource(FileUtils.openInputStream(new File("src/test/resources/csv/keyboard.csv"))); final InputStreamResource mock = new InputStreamResource(FileUtils.openInputStream(new File("src/test/resources/csv/keyboard.csv"))); @@ -333,7 +430,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(mock); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_2_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_2_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final InputStreamResource body = (InputStreamResource) response.getBody(); assertNotNull(body); @@ -344,7 +441,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliography_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa1.txt"), StandardCharsets.UTF_8); @@ -356,7 +453,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -365,9 +462,29 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser + public void find_anonymousBibliographyApa0_fails() throws IOException, MalformedException, + IdentifierNotFoundException { + final String accept = "text/bibliography; style=apa"; + final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa0.txt"), + StandardCharsets.UTF_8); + + /* mock */ + when(identifierService.exportBibliography(IDENTIFIER_7, BibliographyTypeDto.APA)) + .thenReturn(compare); + when(identifierService.find(IDENTIFIER_7_ID)) + .thenReturn(IDENTIFIER_7); + + /* test */ + assertThrows(NotAllowedException.class, () -> { + identifierEndpoint.find(IDENTIFIER_7_ID, accept, null); + }); + } + + @Test + @WithMockUser(username = USER_4_USERNAME) public void find_bibliographyApa0_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=apa"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa0.txt"), StandardCharsets.UTF_8); @@ -379,7 +496,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_7); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept, USER_4_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -390,7 +507,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyApa1_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=apa"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa1.txt"), StandardCharsets.UTF_8); @@ -402,7 +519,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -410,10 +527,10 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser - public void find_bibliographyApa2_succeeds() throws IOException, MalformedException, DataServiceException, + @WithMockUser(username = USER_2_USERNAME) + public void find_draftBibliographyApa2_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=apa"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa2.txt"), StandardCharsets.UTF_8); @@ -425,7 +542,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_5); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept, USER_2_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -436,7 +553,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyApa3_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=apa"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa3.txt"), StandardCharsets.UTF_8); @@ -448,7 +565,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_6); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_6_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_6_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -459,7 +576,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyApa4_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=apa"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_apa4.txt"), StandardCharsets.UTF_8); @@ -471,7 +588,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1_WITH_DOI); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -479,10 +596,10 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser + @WithMockUser(username = USER_4_USERNAME) public void find_bibliographyIeee0_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=ieee"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_ieee0.txt"), StandardCharsets.UTF_8); @@ -494,7 +611,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_7); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept, USER_4_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -505,7 +622,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyIeee1_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=ieee"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_ieee1.txt"), StandardCharsets.UTF_8); @@ -517,7 +634,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -525,10 +642,10 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser + @WithMockUser(username = USER_2_USERNAME) public void find_bibliographyIeee2_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=ieee"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_ieee2.txt"), StandardCharsets.UTF_8); @@ -540,7 +657,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_5); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept, USER_2_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -551,7 +668,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyIeee3_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=ieee"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_ieee3.txt"), StandardCharsets.UTF_8); @@ -563,7 +680,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1_WITH_DOI); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -571,10 +688,10 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser + @WithMockUser(username = USER_4_USERNAME) public void find_bibliographyBibtex0_succeeds() throws IOException, MalformedException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=bibtex"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_bibtex0.txt"), StandardCharsets.UTF_8); @@ -586,7 +703,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_7); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_7_ID, accept, USER_4_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -597,7 +714,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyBibtex1_succeeds() throws MalformedException, IOException, DataServiceException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=bibtex"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_bibtex1.txt"), StandardCharsets.UTF_8); @@ -609,7 +726,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -617,10 +734,10 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } @Test - @WithAnonymousUser + @WithMockUser(username = USER_2_USERNAME) public void find_bibliographyBibtex2_succeeds() throws MalformedException, DataServiceException, IOException, DataServiceConnectionException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=bibtex"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_bibtex2.txt"), StandardCharsets.UTF_8); @@ -632,7 +749,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_5); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_5_ID, accept, USER_2_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -643,7 +760,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_bibliographyBibtex3_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, IOException, QueryNotFoundException, IdentifierNotFoundException, - FormatNotAvailableException { + FormatNotAvailableException, NotAllowedException { final String accept = "text/bibliography; style=bibtex"; final String compare = FileUtils.readFileToString(new File("src/test/resources/bibliography/style_bibtex3.txt"), StandardCharsets.UTF_8); @@ -655,7 +772,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1_WITH_DOI); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final String body = (String) response.getBody(); assertNotNull(body); @@ -665,7 +782,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void find_jsonLd_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, - QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException { + QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException, NotAllowedException { final String accept = "application/ld+json"; /* mock */ @@ -673,7 +790,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final LdDatasetDto body = (LdDatasetDto) response.getBody(); assertNotNull(body); @@ -689,22 +806,22 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_7); /* test */ - assertThrows(FormatNotAvailableException.class, () -> { - identifierEndpoint.find(IDENTIFIER_7_ID, accept); + assertThrows(NotAllowedException.class, () -> { + identifierEndpoint.find(IDENTIFIER_7_ID, accept, null); }); } @Test @WithAnonymousUser public void find_move_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, - QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException { + QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException, NotAllowedException { /* mock */ when(identifierService.find(IDENTIFIER_1_ID)) .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, null); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, null, null); assertEquals(HttpStatus.MOVED_PERMANENTLY, response.getStatusCode()); } @@ -848,7 +965,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void find_json_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, - FormatNotAvailableException, QueryNotFoundException, IdentifierNotFoundException { + FormatNotAvailableException, QueryNotFoundException, IdentifierNotFoundException, NotAllowedException { final String accept = "application/json"; /* mock */ @@ -856,7 +973,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { .thenReturn(IDENTIFIER_1); /* test */ - final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept); + final ResponseEntity<?> response = identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); assertEquals(HttpStatus.OK, response.getStatusCode()); final IdentifierDto body = (IdentifierDto) response.getBody(); assertNotNull(body); @@ -875,7 +992,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void find_xml_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, - IOException, QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException { + IOException, QueryNotFoundException, IdentifierNotFoundException, FormatNotAvailableException, + NotAllowedException { final InputStreamResource resource = new InputStreamResource(FileUtils.openInputStream( new File("src/test/resources/xml/datacite-example-dataset-v4.xml"))); @@ -892,7 +1010,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void find_httpRedirect_succeeds() throws MalformedException, DataServiceException, DataServiceConnectionException, FormatNotAvailableException, QueryNotFoundException, - IdentifierNotFoundException { + IdentifierNotFoundException, NotAllowedException { /* test */ final ResponseEntity<?> response = generic_find(null, null); @@ -1291,7 +1409,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { protected ResponseEntity<?> generic_find(String accept, InputStreamResource resource) throws MalformedException, DataServiceException, DataServiceConnectionException, FormatNotAvailableException, - QueryNotFoundException, IdentifierNotFoundException { + QueryNotFoundException, IdentifierNotFoundException, NotAllowedException { /* mock */ when(identifierService.find(IDENTIFIER_1_ID)) @@ -1304,7 +1422,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } /* test */ - return identifierEndpoint.find(IDENTIFIER_1_ID, accept); + return identifierEndpoint.find(IDENTIFIER_1_ID, accept, null); } protected static String inputStreamToString(InputStream inputStream) throws IOException { 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 632affcf91..e22a7a4a05 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 @@ -6,6 +6,7 @@ import at.tuwien.api.database.DatabaseModifyImageDto; import at.tuwien.api.database.DatabaseModifyVisibilityDto; import at.tuwien.api.database.DatabaseTransferDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; +import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.MetricsConfig; import at.tuwien.endpoints.*; import at.tuwien.test.AbstractUnitTest; @@ -278,7 +279,7 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { /* ignore */ } try { - identifierEndpoint.findAll(DATABASE_1_ID, null, null, null, MediaType.APPLICATION_JSON_VALUE); + identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, null, MediaType.APPLICATION_JSON_VALUE, null); } catch (Exception e) { /* ignore */ } diff --git a/dbrepo-ui/components/ResourceStatus.vue b/dbrepo-ui/components/ResourceStatus.vue index d766f37660..6db6d25385 100644 --- a/dbrepo-ui/components/ResourceStatus.vue +++ b/dbrepo-ui/components/ResourceStatus.vue @@ -5,7 +5,7 @@ v-if="!inline" :size="size" :color="color" - variant="outlined"> + :variant="chipVariant"> {{ status }} </v-chip> <span @@ -39,6 +39,9 @@ export default { if (!this.resource) { return null } + if (this.hasIdentifier) { + return 'pid' + } if (!this.resource.is_public && !this.resource.is_schema_public) { return 'draft' } else if(!this.resource.is_public && this.resource.is_schema_public) { @@ -54,7 +57,19 @@ export default { } return this.$t(`pages.database.status.${this.mode}`) }, + hasIdentifier () { + return this.resource.identifiers?.length > 0 + }, + chipVariant () { + if (this.hasIdentifier) { + return 'tonal' + } + return 'outlined' + }, color () { + if (this.hasIdentifier) { + return 'info' + } switch (this.mode) { case 'schema': case 'data': diff --git a/dbrepo-ui/components/identifier/Banner.vue b/dbrepo-ui/components/identifier/Banner.vue index 7c77a1b28b..63c2a7153a 100644 --- a/dbrepo-ui/components/identifier/Banner.vue +++ b/dbrepo-ui/components/identifier/Banner.vue @@ -24,7 +24,7 @@ export default { return identifierService.identifierToDisplayName(this.identifier) }, href () { - if (!this.identifier || (this.identifier.status && this.identifier.status !== 'published')) { + if (!this.identifier) { return null } const identifierService = useIdentifierService() diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index b02ff09b76..f37c5c6d7d 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -12,6 +12,7 @@ <v-spacer /> <v-btn v-if="canSave" + class="mr-2" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-content-save-outline' : null" color="secondary" variant="flat" @@ -22,7 +23,7 @@ @click="createOrSave"/> <v-btn v-if="canRemove" - class="ml-2" + class="mr-2" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-delete' : null" color="error" variant="flat" @@ -32,7 +33,7 @@ @click="remove" /> <v-btn v-if="canPublish" - class="ml-2" + class="mr-2" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-content-save-outline' : null" color="primary" variant="flat" @@ -138,14 +139,6 @@ :color="canShiftUp(creator, i) ? 'tertiary' : ''" :variant="buttonVariant" @click="shiftDown(i)" /> - <v-btn - v-if="canInsertSelf" - class="mr-2" - size="small" - color="secondary" - variant="flat" - :text="$t('pages.identifier.subpages.create.creators.insert.text')" - @click="insertSelf(creator)" /> <v-btn v-if="i > 0" size="small" @@ -1043,12 +1036,6 @@ export default { } } }, - canInsertSelf () { - if (!this.cacheUser) { - return false - } - return this.cacheUser.given_name || this.cacheUser.family_name || this.cacheUser.attributes.affiliation || this.cacheUser.attributes.orcid - }, isCreator () { if (!this.cacheUser || !this.identifier) { return false diff --git a/dbrepo-ui/components/identifier/Select.vue b/dbrepo-ui/components/identifier/Select.vue index 4ef13b2ca7..e557286614 100644 --- a/dbrepo-ui/components/identifier/Select.vue +++ b/dbrepo-ui/components/identifier/Select.vue @@ -8,7 +8,7 @@ :color="color(identifier)" :variant="listVariant" :href="href(identifier)" - :title="formatTimestampUTCLabel(identifier.created)" + :title="title(identifier)" lines="two"> <v-list-item-subtitle> <Banner @@ -59,7 +59,7 @@ export default { identifier: { type: Object, default () { - return {} + return null } } }, @@ -71,11 +71,14 @@ export default { }, computed: { cacheUser () { - return this.cacheUser.getUser + return this.cacheStore.getUser }, displayIdentifiers () { - if (!this.identifiers) { - return [] + if (!this.identifiers || this.identifiers.length === 0) { + if (!this.identifier) { + return [] + } + return [this.identifier] } if (!this.cacheUser) { return this.identifiers.filter(i => i.status === 'published') @@ -100,6 +103,9 @@ export default { }, methods: { href (identifier) { + if (!identifier) { + return null + } if (identifier.status === 'published') { return `/pid/${identifier.id}` } @@ -114,6 +120,13 @@ export default { return `/database/${identifier.database_id}/view/${identifier.view_id}/persist/${identifier.id}` } }, + title (identifier) { + if (!identifier) { + return null + } + const identifierService = useIdentifierService() + return identifierService.identifierPreferEnglishTitle(identifier) + }, isActive (identifier) { if (!identifier) { return false diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index 4261b098b6..f19c595aad 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -1,6 +1,5 @@ <template> - <div - v-if="loggedIn"> + <div> <v-toolbar flat> <v-btn size="small" @@ -75,7 +74,7 @@ required clearable :rules="[ - v => !!v || $t('validation.required') + v => v !== null || $t('validation.required') ]" :label="$t('pages.database.resource.data.label')" :hint="$t('pages.database.resource.data.hint')" /> @@ -90,7 +89,7 @@ required clearable :rules="[ - v => !!v || $t('validation.required') + v => v !== null || $t('validation.required') ]" :label="$t('pages.database.resource.schema.label')" :hint="$t('pages.database.resource.schema.hint', { resource: 'subset', schema: 'query' })" /> @@ -445,7 +444,7 @@ export default { if (this.isView) { return this.view.name !== null && this.view.is_public !== null && this.view.query !== null } - return this.sql !== null && !this.sql.includes(';') + return this.sql !== null && this.sql !== '' && !this.sql.includes(';') }, inputVariant () { const runtimeConfig = useRuntimeConfig() diff --git a/dbrepo-ui/components/subset/SubsetList.vue b/dbrepo-ui/components/subset/SubsetList.vue index eb6a27aacd..fa44454af8 100644 --- a/dbrepo-ui/components/subset/SubsetList.vue +++ b/dbrepo-ui/components/subset/SubsetList.vue @@ -6,6 +6,7 @@ rounded="0" :text="$t('pages.database.subpages.subsets.empty')" /> <v-card + v-if="subsets.length > 0" variant="flat" rounded="0"> <v-list-item @@ -14,28 +15,20 @@ <Loading /> </v-list-item> <div - v-for="(item, i) in subsets" + v-for="(subset, i) in subsets" :key="`q-${i}`"> <v-divider v-if="i !== 0" class="mx-4" /> <v-list> <v-list-item lines="two" - :title="title(item)" - :subtitle="subtitle(item)" - :class="clazz(item)" - :to="link(item)" - :href="link(item)"> + :title="title(subset)" + :subtitle="subtitle(subset)" + :class="clazz(subset)" + :to="link(subset)" + :href="link(subset)"> <template v-slot:append> - <v-tooltip - v-if="hasPublishedIdentifier(item)" - :text="$t('pages.identifier.pid.title')" - left> - <template v-slot:activator="{ props }"> - <v-icon - color="primary" - v-bind="props">mdi-identifier</v-icon> - </template> - </v-tooltip> + <ResourceStatus + :resource="subset" /> </template> </v-list-item> </v-list> diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index 61e26e9967..e602609097 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -112,9 +112,7 @@ export default { if (this.pid) { const filter = this.identifiers.filter(i => i.id === Number(this.pid)) if (filter.length > 0) { - const identifier = filter[0] - console.debug('identifier set according to route pid', identifier) - return identifier + return filter[0] } } return this.identifiers[0] diff --git a/dbrepo-ui/components/table/TableList.vue b/dbrepo-ui/components/table/TableList.vue index 71106f7c65..5f87090b85 100644 --- a/dbrepo-ui/components/table/TableList.vue +++ b/dbrepo-ui/components/table/TableList.vue @@ -21,16 +21,6 @@ <template v-slot:append> <ResourceStatus :resource="table" /> - <v-tooltip - v-if="hasPublishedIdentifier(table)" - :text="$t('pages.identifier.pid.title')" - left> - <template v-slot:activator="{ props }"> - <v-icon - color="primary" - v-bind="props">mdi-identifier</v-icon> - </template> - </v-tooltip> </template> </v-list-item> </v-list> diff --git a/dbrepo-ui/components/view/ViewList.vue b/dbrepo-ui/components/view/ViewList.vue index 58038b7a82..afa3067921 100644 --- a/dbrepo-ui/components/view/ViewList.vue +++ b/dbrepo-ui/components/view/ViewList.vue @@ -16,16 +16,6 @@ <template v-slot:append> <ResourceStatus :resource="view" /> - <v-tooltip - v-if="hasPublishedIdentifier(view)" - :text="$t('pages.identifier.pid.title')" - left> - <template v-slot:activator="{ props }"> - <v-icon - color="primary" - v-bind="props">mdi-identifier</v-icon> - </template> - </v-tooltip> </template> </v-list-item> </v-list> diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts index 3ae194ff2f..6875a7cb7b 100644 --- a/dbrepo-ui/composables/identifier-service.ts +++ b/dbrepo-ui/composables/identifier-service.ts @@ -24,7 +24,7 @@ export const useIdentifierService = (): any => { } async function create(data: IdentifierSaveDto): Promise<IdentifierDto> { - const axios= useAxiosInstance() + const axios = useAxiosInstance() console.debug('create identifier') return new Promise<IdentifierDto>((resolve, reject) => { axios.post<IdentifierDto>('/api/identifier', data) @@ -40,7 +40,7 @@ export const useIdentifierService = (): any => { } async function save(data: IdentifierSaveDto): Promise<IdentifierDto> { - const axios= useAxiosInstance() + const axios = useAxiosInstance() console.debug('save identifier', data.id) return new Promise<IdentifierDto>((resolve, reject) => { axios.put<IdentifierDto>(`/api/identifier/${data.id}`, data) @@ -241,13 +241,28 @@ export const useIdentifierService = (): any => { if (!data || !data.titles || data.titles.length === 0) { return null } - const filtered = data.titles.filter(d => d.language && d.language === 'en') + const filtered = data.titles.filter((d) => d.language && d.language === 'en') if (filtered.length === 0) { - return data.titles[0].title + const title = data.titles[0] + return title.title } return filtered[0].title } + function identifierToResourceUrl(identifier: IdentifierDto): string | null { + const config = useRuntimeConfig() + switch (identifier.type) { + case 1: + return `${config.public.api.client}/api/database/${identifier.database_id}/subset/${identifier.subset_id}/data` + case 2: + return `${config.public.api.client}/api/database/${identifier.database_id}/table/${identifier.table_id}/data` + case 3: + return `${config.public.api.client}/api/database/${identifier.database_id}/view/${identifier.view_id}/data` + default: + return null + } + } + function identifierToUrl(data: IdentifierDto): string | null { if (!data) { return null @@ -315,244 +330,48 @@ export const useIdentifierService = (): any => { return jsonLd } - function identifierToHasPartJsonLd(identifier: IdentifierDto) { - return { - '@type': 'Dataset', - name: identifierPreferEnglishTitle(identifier), - description: identifierPreferEnglishDescription(identifier), - identifier: identifierToUrl(identifier), - citation: identifierToUrl(identifier), - temporalCoverage: identifier.publication_year, - version: identifier.created - } - } - - function databaseToServerHead(database: DatabaseDto) { - if (!database) { - return + function identifiersToServerHead(identifiers: IdentifierBriefDto[]): any { + if (!identifiers || !identifiers[0]) { + return null } - const config = useRuntimeConfig() + const identifier = identifiers[0] /* Google Rich Results */ const json: any = { '@context': 'https://schema.org/', '@type': 'Dataset', - url: `${config.public.api.client}/database/${database.id}/info`, - citation: `${config.public.api.client}/database/${database.id}/info`, + url: identifierToUrl(identifier), + citation: identifierToUrl(identifier), hasPart: [], - version: database.created + identifier: identifiers.map(i => identifierToUrl(i)), + creator: identifier.creators.map((c) => creatorToCreatorJsonLd(c)), + temporalCoverage: identifier.publication_year } - /* FAIR Signposting */ - const meta: any [] = [] - if (database.identifiers.length > 0) { - const identifier = database.identifiers[0] - const partIdentifiers: IdentifierDto[] = [] - if (database.subsets.length > 0) { - database.subsets.forEach((s) => { - partIdentifiers.push(s) - }) - } - if (database.tables.length > 0) { - database.tables.forEach((t) => { - if (t.identifiers.length > 0) { - t.identifiers.forEach(i => partIdentifiers.push(i)) - } - }) - } - if (database.views.length > 0) { - database.views.forEach((v) => { - if (v.identifiers.length > 0) { - v.identifiers.forEach(i => partIdentifiers.push(i)) - } - }) - } + if (identifier.titles.length > 0) { json['name'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['identifier'] = database.identifiers.map(i => identifierToUrl(i)) - json['license'] = identifierToPreferFirstLicenseUri(identifier) - json['creator'] = identifier.creators.map(c => creatorToCreatorJsonLd(c)) - json['citation'] = identifierToUrl(identifier) - json['hasPart'] = partIdentifiers.map(i => identifierToHasPartJsonLd(i)) - json['temporalCoverage'] = identifier.publication_year - meta.push({rel: 'cite-as', href: identifierToUrl(identifier)}) - identifier.creators.forEach((c: CreatorDto) => { - if (c.name_identifier) { - meta.push({rel: 'author', href: c.name_identifier}) - } - }) - meta.push({rel: 'describedby', type: 'application/x-bibtex', href: identifierToUrl(identifier)}) - meta.push({rel: 'describedby', type: 'application/vnd.datacite.datacite+json', href: identifierToUrl(identifier)}) - if (identifier.licenses) { - identifier.licenses.forEach((l: LicenseDto) => meta.push({rel: 'license', href: l.uri})) - } - } - return { - script: [ - { - type: 'application/ld+json', - innerHTML: json - } - ], - link: meta } - } - - function subsetToServerHead(subset: QueryDto) { - const config = useRuntimeConfig() - /* Google Rich Results */ - const json: any = { - '@context': 'https://schema.org/', - '@type': 'Dataset', - description: subset.query, - url: `${config.public.api.client}/database/${subset.database_id}/info`, - citation: `${config.public.api.client}/database/${subset.database_id}/info`, - hasPart: [], - version: subset.created - } - /* FAIR Signposting */ - const meta: any[] = [] - if (subset.identifiers.length > 0) { - const identifier = subset.identifiers[0] - json['name'] = identifierPreferEnglishTitle(identifier) + if (identifier.descriptions.length > 0) { json['description'] = identifierPreferEnglishDescription(identifier) - json['identifier'] = subset.identifiers.map(i => identifierToUrl(i)) - json['license'] = identifierToPreferFirstLicenseUri(identifier) - json['creator'] = identifier.creators.map(c => creatorToCreatorJsonLd(c)) - json['citation'] = identifierToUrl(identifier) - json['temporalCoverage'] = identifier.publication_year - meta.push({rel: 'cite-as', href: identifierToUrl(identifier)}) - identifier.creators.forEach((c: CreatorDto) => { - if (c.name_identifier) { - meta.push({rel: 'author', href: c.name_identifier}) - } - }) - meta.push({rel: 'describedby', type: 'application/x-bibtex', href: identifierToUrl(identifier)}) - meta.push({rel: 'describedby', type: 'application/vnd.datacite.datacite+json', href: identifierToUrl(identifier)}) - if (identifier.licenses) { - identifier.licenses.forEach((l: LicenseDto) => meta.push({rel: 'license', href: l.uri})) - } - meta.push({ - rel: 'item', - type: 'application/json', - href: `${config.public.api.client}/api/database/${subset.database_id}/subset/${subset.id}/data` - }) - meta.push({ - rel: 'item', - type: 'text/csv', - href: `${config.public.api.client}/api/database/${subset.database_id}/subset/${subset.id}/data` - }) - } - return { - script: [ - { - type: 'application/ld+json', - innerHTML: json - } - ], - link: meta - } - } - - function tableToServerHead(table: TableDto) { - const config = useRuntimeConfig() - /* Google Rich Results */ - const json: any = { - '@context': 'https://schema.org/', - '@type': 'Dataset', - description: table.description, - url: `${config.public.api.client}/database/${table.database_id}/table/${table.id}/info`, - citation: `${config.public.api.client}/database/${table.database_id}/table/${table.id}/info`, - hasPart: [], - version: table.created } /* FAIR Signposting */ const meta: any[] = [] - if (table.identifiers.length > 0) { - const identifier: IdentifierDto = table.identifiers[0] - json['name'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['identifier'] = table.identifiers.map((i: IdentifierDto) => identifierToUrl(i)) - json['license'] = identifierToPreferFirstLicenseUri(identifier) - json['creator'] = identifier.creators.map((c: CreatorDto) => creatorToCreatorJsonLd(c)) - json['citation'] = identifierToUrl(identifier) - json['temporalCoverage'] = identifier.publication_year - meta.push({rel: 'cite-as', href: identifierToUrl(identifier)}) - identifier.creators.forEach((c: CreatorDto): void => { - if (c.name_identifier) { - meta.push({rel: 'author', href: c.name_identifier}) - } - }) - meta.push({rel: 'describedby', type: 'application/x-bibtex', href: identifierToUrl(identifier)}) - meta.push({rel: 'describedby', type: 'application/vnd.datacite.datacite+json', href: identifierToUrl(identifier)}) - if (identifier.licenses) { - identifier.licenses.forEach((l: LicenseDto) => meta.push({rel: 'license', href: l.uri})) + meta.push({rel: 'cite-as', href: identifierToUrl(identifier)}) + identifier.creators.forEach((c: CreatorDto) => { + if (c.name_identifier) { + meta.push({rel: 'author', href: c.name_identifier}) } - meta.push({ - rel: 'item', - type: 'application/json', - href: `${config.public.api.client}/api/database/${table.database_id}/table/${table.id}/data` - }) - meta.push({ - rel: 'item', - type: 'text/csv', - href: `${config.public.api.client}/api/database/${table.database_id}/table/${table.id}/data` - }) - } - return { - script: [ - { - type: 'application/ld+json', - innerHTML: json - } - ], - link: meta - } - } - - function viewToServerHead(view: ViewDto) { - const config = useRuntimeConfig() - /* Google Rich Results */ - const json: any = { - '@context': 'https://schema.org/', - '@type': 'Dataset', - description: view.query, - url: `${config.public.api.client}/database/${view.database_id}/table/${view.id}/info`, - citation: `${config.public.api.client}/database/${view.database_id}/table/${view.id}/info`, - hasPart: [], - version: view.created - } - /* FAIR Signposting */ - const meta: any[] = [] - if (view.identifiers.length > 0) { - const identifier = view.identifiers[0] - json['name'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['identifier'] = view.identifiers.map(i => identifierToUrl(i)) - json['license'] = identifierToPreferFirstLicenseUri(identifier) - json['creator'] = identifier.creators.map(c => creatorToCreatorJsonLd(c)) - json['citation'] = identifierToUrl(identifier) - json['temporalCoverage'] = identifier.publication_year - meta.push({rel: 'cite-as', href: identifierToUrl(identifier)}) - identifier.creators.forEach((c: CreatorDto) => { - if (c.name_identifier) { - meta.push({rel: 'author', href: c.name_identifier}) - } - }) - meta.push({rel: 'describedby', type: 'application/x-bibtex', href: identifierToUrl(identifier)}) - meta.push({rel: 'describedby', type: 'application/vnd.datacite.datacite+json', href: identifierToUrl(identifier)}) - if (identifier.licenses) { - identifier.licenses.forEach((l: LicenseDto) => meta.push({rel: 'license', href: l.uri})) - } - meta.push({ - rel: 'item', - type: 'application/json', - href: `${config.public.api.client}/api/database/${view.database_id}/view/${view.id}/data` - }) - meta.push({ - rel: 'item', - type: 'text/csv', - href: `${config.public.api.client}/api/database/${view.database_id}/view/${view.id}/data` - }) - } + }) + meta.push({rel: 'describedby', type: 'application/x-bibtex', href: identifierToUrl(identifier)}) + meta.push({rel: 'describedby', type: 'application/vnd.datacite.datacite+json', href: identifierToUrl(identifier)}) + meta.push({ + rel: 'item', + type: 'application/json', + href: identifierToResourceUrl(identifier) + }) + meta.push({ + rel: 'item', + type: 'text/csv', + href: identifierToResourceUrl(identifier) + }) return { script: [ { @@ -564,56 +383,15 @@ export const useIdentifierService = (): any => { } } - function databaseToServerSeoMeta(database: DatabaseDto) { - const json: any = { - ogTitle: database.name - } - if (database.identifiers.length > 0) { - const identifier = database.identifiers[0] - json['ogTitle'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['ogDescription'] = identifierPreferEnglishDescription(identifier) - } - return json - } - - function subsetToServerSeoMeta(subset: QueryDto) { - const json: any = { - description: subset.query - } - if (subset.identifiers.length > 0) { - const identifier = subset.identifiers[0] - json['ogTitle'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['ogDescription'] = identifierPreferEnglishDescription(identifier) - } - return json - } - - function tableToServerSeoMeta(table: TableDto) { - const json: any = { - ogTitle: table.name, - description: table.description - } - if (table.identifiers.length > 0) { - const identifier = table.identifiers[0] - json['ogTitle'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['ogDescription'] = identifierPreferEnglishDescription(identifier) + function identifiersToServerSeoMeta(identifiers: IdentifierBriefDto[]): any | null { + if (!identifiers|| !identifiers[0]) { + return null } - return json - } - - function viewToServerSeoMeta(view: ViewDto) { + const identifier = identifiers[0] const json: any = { - ogTitle: view.name, - description: view.query - } - if (view.identifiers.length > 0) { - const identifier = view.identifiers[0] - json['ogTitle'] = identifierPreferEnglishTitle(identifier) - json['description'] = identifierPreferEnglishDescription(identifier) - json['ogDescription'] = identifierPreferEnglishDescription(identifier) + ogTitle: identifierPreferEnglishTitle(identifier), + ogDescription: identifierPreferEnglishDescription(identifier), + description: identifierPreferEnglishDescription(identifier) } return json } @@ -633,13 +411,7 @@ export const useIdentifierService = (): any => { identifierToUrl, identifierToDisplayName, identifierToDisplayAcronym, - databaseToServerHead, - subsetToServerHead, - tableToServerHead, - viewToServerHead, - databaseToServerSeoMeta, - subsetToServerSeoMeta, - tableToServerSeoMeta, - viewToServerSeoMeta, + identifiersToServerHead, + identifiersToServerSeoMeta } } diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index 9171734aa3..605a7c0db9 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -224,7 +224,11 @@ interface IdentifierFunderSaveDto { interface IdentifierDto { id: number; - type: string; + database_id: number | null; + query_id: number | null; + table_id: number | null; + view_id: number | null; + type: IdentifierTypeDto; titles: IdentifierTitleDto[] | []; descriptions: IdentifierDescriptionDto[] | []; funders: IdentifierFunderDto[] | []; @@ -236,23 +240,43 @@ interface IdentifierDto { licenses: LicenseDto[] | []; creators: CreatorDto[] | []; created: Date; - database_id: number | null; - query_id: number | null; - table_id: number | null; - view_id: number | null; query_normalized: string | null; related_identifiers: RelatedIdentifierDto[] | []; query_hash: string | null; result_hash: string | null; - /** - * @deprecated - */ result_number: number | null; publication_day: number | null; publication_month: number | null; - value: string | null; publication_year: number; - last_modified: Date; +} + +enum IdentifierTypeDto { + database, + subset, + table, + view +} + +enum IdentifierStatusTypeDto { + draft, + published +} + +interface IdentifierBriefDto { + id: number; + database_id: number | null; + query_id: number | null; + table_id: number | null; + view_id: number | null; + type: IdentifierTypeDto; + creators: CreatorBriefDto[] | []; + titles: IdentifierTitleDto[] | []; + description: IdentifierDescriptionDto[] | []; + doi: string | null; + publisher: string; + publication_year: number; + status: IdentifierStatusTypeDto; + owned_by: string; } interface IdentifierTitleDto { @@ -279,19 +303,35 @@ interface IdentifierFunderDto { award_title: string; } +enum NameTypeDto { + Personal, + Organizational +} + interface CreatorDto { id: number; firstname: string; lastname: string; affiliation: string; creator_name: string; - name_type: string; - name_identifier: string; - name_identifier_scheme: string; - name_identifier_scheme_uri: string; - affiliation_identifier: string; - affiliation_identifier_scheme: string; - affiliation_identifier_scheme_uri: string; + name_type: NameTypeDto | null; + name_identifier: string | null; + name_identifier_scheme: string | null; + name_identifier_scheme_uri: string | null; + affiliation_identifier: string | null; + affiliation_identifier_scheme: string | null; + affiliation_identifier_scheme_uri: string | null; +} + +interface CreatorBriefDto { + id: number; + affiliation: string; + creator_name: string; + name_type: NameTypeDto | null; + name_identifier: string | null; + name_identifier_scheme: string | null; + affiliation_identifier: string | null; + affiliation_identifier_scheme: string | null; } interface RelatedIdentifierDto { @@ -342,7 +382,6 @@ interface ColumnDto { database_id: number; table_id: number; internal_name: string; - date_format: ImageDateDto; is_primary_key: boolean; index_length: number; length: number; diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 9351783574..50aa155d86 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -214,9 +214,15 @@ export default { access () { return this.cacheStore.getAccess }, + roles () { + return this.cacheStore.getRoles + }, cacheUser () { return this.cacheStore.getUser }, + identifier () { + return this.cacheStore.getIdentifier + }, resource () { if (!this.$route.params.database_id) { return null @@ -245,6 +251,9 @@ export default { return this.$config.public.commit.substr(0, 8) }, error () { + if (this.identifier) { + return null + } if (this.databaseError) { return this.databaseError } @@ -254,13 +263,13 @@ export default { if (!this.cacheUser) { return null } - if (this.table && !this.table.is_public && !this.table.is_schema_public && this.table.owner.id !== this.cacheUser.uid) { + if (this.table && !this.table.is_public && !this.table.is_schema_public && !this.access) { return makeError(403, null, null) } - if (this.view && !this.view.is_public && !this.view.is_schema_public && this.view.owner.id !== this.cacheUser.uid) { + if (this.view && !this.view.is_public && !this.view.is_schema_public && !this.access) { return makeError(403, null, null) } - if (this.subset && !this.subset.is_public && !this.subset.is_schema_public && this.subset.owner.id !== this.cacheUser.uid) { + if (this.subset && !this.subset.is_public && !this.subset.is_schema_public && !this.access) { return makeError(403, null, null) } return null @@ -288,6 +297,9 @@ export default { watch: { '$route.params': { handler (newObj, oldObj) { + if (import.meta.server) { + return + } if (!newObj.database_id) { this.databaseError = null this.accessError = null @@ -295,10 +307,20 @@ export default { this.cacheStore.setView(null) this.cacheStore.setSubset(null) this.cacheStore.setAccess(null) + this.cacheStore.setIdentifier(null) return } - if (import.meta.server) { - return + if (this.identifier) { + if (newObj.query_id && this.identifier.query_id !== Number(newObj.query_id)) { + this.cacheStore.setIdentifier(null) + } else if (newObj.table_id && this.identifier.table_id !== Number(newObj.table_id)) { + this.cacheStore.setIdentifier(null) + } else if (newObj.view_id && this.identifier.view_id !== Number(newObj.view_id)) { + this.cacheStore.setIdentifier(null) + } + if (this.$route.query.pid && this.identifier.id !== Number(this.$route.query.pid)) { + this.cacheStore.setIdentifier(null) + } } /* load database and optional access */ this.cacheStore.setRouteAccess(newObj.database_id, this.cacheUser?.uid) diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index 2e94f572ec..07ac0163ef 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -606,10 +606,10 @@ }, "status": { "title": "Status", - "public": "Public", + "public": "Visible", "data": "Data-only", "schema": "Schema-only", - "draft": "Draft" + "draft": "Hidden" }, "resource": { "data": { diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 8340dfe955..025cc9c4c4 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -1,26 +1,27 @@ <template> <div - v-if="canViewSchema"> + v-if="identifier || canViewInfo"> <DatabaseToolbar /> <v-window v-model="tab"> <v-window-item value="1"> <Summary - v-if="hasIdentifier" + v-if="identifier" :identifier="identifier" /> <v-card - v-if="hasIdentifier" + v-if="identifier" variant="flat" rounded="0"> <v-card-text> <Select - :identifiers="filteredIdentifiers" + :identifiers="identifiers" :identifier="identifier" /> </v-card-text> </v-card> <v-divider - v-if="hasIdentifier" /> + v-if="identifier" /> <v-card + v-if="canViewInfo" :title="$t('pages.database.title')" variant="flat" rounded="0"> @@ -94,7 +95,7 @@ <div> <UserBadge :user="database.owner" - :other-user="user" /> + :other-user="cacheUser" /> </div> </v-list-item> <v-list-item @@ -104,7 +105,7 @@ <div> <UserBadge :user="database.contact" - :other-user="user" /> + :other-user="cacheUser" /> </div> </v-list-item> </v-list> @@ -166,7 +167,20 @@ <script setup> import { ref } from 'vue' -const { loggedIn, user, login, logout } = useOidcAuth() +const config = useRuntimeConfig() +const { pid } = useRoute().query +const { database_id } = useRoute().params +const { data } = await useFetch(`${config.public.api.client}/api/identifier?dbid=${database_id}&type=database&status=published`) + +if (data.value && data.value.length > 0) { + const identifierService = useIdentifierService() + 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 cacheStore = useCacheStore() +cacheStore.setIdentifier(identifier) </script> <script> import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue' @@ -209,7 +223,7 @@ export default { return 0 }, description () { - if (!this.hasIdentifier) { + if (!this.identifier) { return '' } return this.database.identifier.description @@ -221,7 +235,7 @@ export default { return this.$config.public.database.image.height }, publisher () { - if (!this.hasIdentifier) { + if (!this.identifier) { return '' } return this.database.identifier.publisher @@ -232,32 +246,14 @@ export default { cacheUser () { return this.cacheStore.getUser }, - identifiers () { - if (!this.database) { - return [] - } - return this.database.identifiers + access () { + return this.cacheStore.getAccess }, - filteredIdentifiers () { - if (!this.identifiers) { + identifiers () { + if (!this.database || !this.database.identifiers) { return [] } - if (!this.cacheUser) { - return this.identifiers.filter(i => i.status === 'published') - } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid) - }, - identifier () { - if (this.pid) { - const filter = this.filteredIdentifiers.filter(i => i.id === Number(this.pid)) - if (filter.length > 0) { - return filter[0] - } - } - return this.filteredIdentifiers[0] - }, - access () { - return this.cacheStore.getAccess + return this.database.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) }, pid () { return this.$route.query.pid @@ -300,9 +296,6 @@ export default { const databaseService = useDatabaseService() return databaseService.databaseToOwner(this.database) }, - hasIdentifier () { - return this.identifier - }, accessDescription () { if (!this.access) { return @@ -335,19 +328,19 @@ export default { } return this.database.preview_image }, - canViewSchema () { - if (this.error) { - return false - } + canViewInfo () { if (!this.database) { return false } - if (this.database.is_schema_public) { + if (this.database.is_public || this.database.is_schema_public) { return true } + if (!this.access) { + return false + } const userService = useUserService() return userService.hasReadAccess(this.access) - } + }, } } </script> 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 61d34fb5c2..505a765123 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 @@ -1,6 +1,6 @@ <template> <div - v-if="canCreateIdentifier || canUpdateIdentifier"> + v-if="canPersistIdentifier || canUpdateIdentifier"> <Persist type="database" :database="database" /> @@ -51,6 +51,9 @@ export default { cacheUser () { return this.cacheStore.getUser }, + access () { + return this.cacheStore.getAccess + }, identifier () { if (!this.database) { return false @@ -58,26 +61,30 @@ export default { const filter = this.database.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) return filter.length === 1 ? filter[0] : null }, - canCreateIdentifier () { - if (!this.roles) { + canPersistIdentifier () { + if (!this.database || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.database) { + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('create-identifier') && this.database.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.database.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { - if (!this.roles) { + if (!this.identifier || !this.roles) { return false } - if (!this.identifier) { + if (this.roles.includes('modify-identifier-metadata')) { + return true + } + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid + return this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/index.vue index 52e36cd0d5..4bbf0e8d2a 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canPersistDatabase"> + v-if="canPersistIdentifier"> <Persist type="database" :database="database" /> @@ -50,14 +50,14 @@ export default { } return this.database.owner.id === this.cacheUser.uid }, - canPersistDatabase () { - if (!this.database || !this.roles) { + canPersistIdentifier () { + if (!this.database || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { + if (!this.roles.includes('create-identifier')) { return false } const userService = useUserService() diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 26ddf9478c..1556dcc387 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -462,7 +462,7 @@ export default { .then((database) => { const toast = useToastInstance() toast.success(this.$t('success.database.visibility')) - this.cacheStore.setDatabase(database) + this.cacheStore.reloadDatabase() }) .catch(() => { this.loading = false diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue index 30bebeb2b8..682fc59b98 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue @@ -18,7 +18,7 @@ </v-toolbar-title> <v-spacer /> <v-btn - v-if="canDownload" + v-if="canViewSubsetData" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-download' : null" variant="flat" :loading="downloadLoading" @@ -97,34 +97,22 @@ export default { subset () { return this.cacheStore.getSubset }, + access () { + return this.cacheStore.getAccess + }, executionUTC () { if (!this.subset) { return null } return formatTimestampUTCLabel(this.subset.created) }, - canDownload () { - if (!this.result_visibility || !this.subset.id) { - return false - } - return this.subset.id - }, - result_visibility () { + canViewSubsetData () { if (!this.database || !this.subset) { return false } if (this.database.is_public) { return true } - return this.subset.owner.username === this.username - }, - canViewSubsetData () { - if (this.error || !this.subset) { - return false - } - if (this.subset.is_public) { - return true - } if (!this.access) { return false } 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 eeb0a70c3e..db5d45b461 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 @@ -1,36 +1,29 @@ <template> - <div> + <div + v-if="identifier || canViewInfo"> <SubsetToolbar /> <v-card variant="flat" rounded="0"> <Summary - v-if="hasIdentifier" + v-if="identifier" :identifier="identifier" /> <v-card-text - v-if="hasIdentifier"> + v-if="identifier"> <Select :identifiers="identifiers" :identifier="identifier" /> </v-card-text> </v-card> <v-divider - v-if="subset && identifier" /> + v-if="canViewInfo && identifier" /> <v-card + v-if="canViewInfo" variant="flat" rounded="0" :title="$t('pages.subset.title')"> <v-card-text> <v-list - v-if="!subset" - lines="two" - dense> - <v-skeleton-loader - type="list-item-three-line" - width="50%" /> - </v-list> - <v-list - v-else-if="subset" lines="two" dense> <v-list-item @@ -88,6 +81,24 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const config = useRuntimeConfig() +const { pid } = useRoute().query +const { database_id, subset_id } = useRoute().params +const { data } = await useFetch(`${config.public.api.client}/api/identifier?dbid=${database_id}&qid=${subset_id}&type=subset&status=published`) + +if (data.value && data.value.length > 0) { + const identifierService = useIdentifierService() + 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 cacheStore = useCacheStore() +cacheStore.setIdentifier(identifier) +</script> <script> import Summary from '@/components/identifier/Summary.vue' import SubsetToolbar from '@/components/subset/SubsetToolbar.vue' @@ -152,25 +163,26 @@ export default { return this.cacheStore.getSubset }, identifiers () { - if (!this.database || !this.database.subsets || this.database.subsets.length === 0) { + if (!this.database || !this.database.subsets) { return [] } - return this.database.subsets.filter(s => s.query_id === Number(this.$route.params.subset_id)) - }, - hasIdentifier () { - return this.identifiers.length > 0 + return this.database.subsets.filter(i => i.query_id === Number(this.$route.params.subset_id)) }, - identifier () { - if (this.pid) { - const filter = this.identifiers.filter(i => i.id === Number(this.pid)) - if (filter.length > 0) { - return filter[0] - } + canViewInfo () { + if (!this.database) { + return false + } + if (this.database.is_public || this.database.is_schema_public) { + return true + } + if (!this.access) { + return false } - return this.identifiers[0] + const userService = useUserService() + return userService.hasReadAccess(this.access) }, title () { - if (!this.hasIdentifier) { + if (!this.identifier) { return null } const enTitle = this.identifier.titles.filter(t => t.language).filter(t => t.language === 'en') 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 f50b9788c7..78878a0015 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 @@ -1,6 +1,6 @@ <template> <div - v-if="canCreateIdentifier || canUpdateIdentifier"> + v-if="canPersistIdentifier || canUpdateIdentifier"> <Persist type="subset" :database="database" /> @@ -59,6 +59,12 @@ export default { subset () { return this.cacheStore.getSubset }, + access () { + return this.cacheStore.getAccess + }, + cacheUser () { + return this.cacheStore.getUser + }, identifier () { if (!this.subset) { return false @@ -66,26 +72,30 @@ export default { const filter = this.subset.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) return filter.length === 1 ? filter[0] : null }, - canCreateIdentifier () { - if (!this.roles) { + canPersistIdentifier () { + if (!this.subset || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.subset) { + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('create-identifier') && this.subset.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.subset.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { - if (!this.roles) { + if (!this.identifier || !this.roles) { return false } - if (!this.identifier) { + if (this.roles.includes('modify-identifier-metadata')) { + return true + } + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid + return this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue index d8e7510787..88209f5018 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/index.vue @@ -1,10 +1,10 @@ <template> <div - v-if="canPersistSubset"> + v-if="canPersistIdentifier"> <Persist type="subset" :database="database" - :query="query" /> + :query="subset" /> <v-breadcrumbs :items="items" class="pa-0 mt-2" /> </div> </template> @@ -20,8 +20,6 @@ export default { data () { return { loading: false, - loadingQuery: false, - query: null, isAuthorizationError: false, items: [ { @@ -59,44 +57,25 @@ export default { subset () { return this.cacheStore.getSubset }, - canPersistSubset () { - if (!this.subset || !this.roles) { + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser + }, + canPersistIdentifier () { + if (!this.subset || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { + if (!this.roles.includes('create-identifier')) { return false } const userService = useUserService() return userService.hasReadAccess(this.access) && this.subset.owner.id === this.cacheUser.uid } - }, - mounted () { - this.loadQuery() - }, - methods: { - loadQuery () { - this.loadingQuery = true - return new Promise((resolve, reject) => { - const queryService = useQueryService() - queryService.findOne(this.$route.params.database_id, this.$route.params.subset_id) - .then((query) => { - this.query = query - resolve(query) - }) - .catch((error) => { - if (error.response.status === 405) { - this.isAuthorizationError = true - } - reject(error) - }) - .finally(() => { - this.loadingQuery = false - }) - }) - } } } </script> diff --git a/dbrepo-ui/pages/database/[database_id]/subset/create.vue b/dbrepo-ui/pages/database/[database_id]/subset/create.vue index 94fd8e8ec9..c3d07bba15 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/create.vue @@ -52,6 +52,9 @@ export default { if (this.database.is_public) { return true } + if (!this.access) { + return false + } const userService = useUserService() return userService.hasReadAccess(this.access) } diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue index 4811e5c47c..efbcd6accf 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue @@ -81,6 +81,9 @@ export default { cacheUser () { return this.cacheStore.getUser }, + access () { + return this.cacheStore.getAccess + }, title () { if (!this.table) { return this.$t('pages.table.import.title') diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue index dad79a6fa8..89e2714115 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 @@ -1,23 +1,23 @@ <template> <div - v-if="canViewInfo"> + v-if="identifier || canViewInfo"> <TableToolbar :selection="selection" /> <v-card + v-if="identifier" variant="flat"> <Summary - v-if="hasIdentifier" :identifier="identifier" /> - <v-card-text - v-if="hasIdentifier"> + <v-card-text> <Select :identifiers="identifiers" :identifier="identifier" /> </v-card-text> </v-card> <v-divider - v-if="identifier" /> + v-if="canViewInfo" /> <v-card + v-if="canViewInfo" variant="flat" rounded="0" :title="$t('pages.table.title')"> @@ -118,6 +118,24 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const config = useRuntimeConfig() +const { pid } = useRoute().query +const { database_id, table_id } = useRoute().params +const { data } = await useFetch(`${config.public.api.client}/api/identifier?dbid=${database_id}&tid=${table_id}&type=table&status=published`) + +if (data.value && data.value.length > 0) { + const identifierService = useIdentifierService() + 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 cacheStore = useCacheStore() +cacheStore.setIdentifier(identifier) +</script> <script> import TableToolbar from '@/components/table/TableToolbar.vue' import Select from '@/components/identifier/Select.vue' @@ -194,7 +212,7 @@ export default { return userService.hasReadAccess(this.access) }, canViewInfo () { - if (this.error || !this.table) { + if (!this.table) { return false } if (this.table.is_public || this.table.is_schema_public) { @@ -223,31 +241,10 @@ export default { return this.roles.includes('insert-table-data') }, identifiers () { - if (!this.table || !this.table.identifiers || this.table.identifiers.length === 0) { - return [] - } - return this.table.identifiers - }, - filteredIdentifiers () { - if (!this.identifiers) { + if (!this.table || !this.table.identifiers) { return [] } - if (!this.cacheUser) { - return this.identifiers.filter(i => i.status === 'published') - } - return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.cacheUser.uid) - }, - identifier () { - if (this.pid) { - const filter = this.filteredIdentifiers.filter(i => i.id === Number(this.pid)) - if (filter.length > 0) { - return filter[0] - } - } - return this.filteredIdentifiers[0] - }, - hasIdentifier () { - return this.identifier + return this.table.identifiers.filter(i => i.query_id === Number(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 39c0ea1aad..e2d16e8db4 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 @@ -1,6 +1,6 @@ <template> <div - v-if="canCreateIdentifier || canUpdateIdentifier"> + v-if="canPersistIdentifier || canUpdateIdentifier"> <Persist type="table" :database="database" /> <v-breadcrumbs :items="items" class="pa-0 mt-2" /> </div> @@ -57,6 +57,12 @@ export default { table () { return this.cacheStore.getTable }, + cacheUser () { + return this.cacheStore.getUser + }, + access () { + return this.cacheStore.getAccess + }, identifier () { if (!this.table) { return false @@ -64,26 +70,30 @@ export default { const filter = this.table.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) return filter.length === 1 ? filter[0] : null }, - canCreateIdentifier () { - if (!this.roles) { + canPersistIdentifier () { + if (!this.table || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.table) { + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('create-identifier') && this.table.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.table.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { - if (!this.roles) { + if (!this.identifier || !this.roles) { return false } - if (!this.identifier) { + if (this.roles.includes('modify-identifier-metadata')) { + return true + } + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid + return this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue index 9d75edae1b..6c26187fa2 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canPersistTable"> + v-if="canPersistIdentifier"> <Persist type="table" :database="database" @@ -60,14 +60,20 @@ export default { table () { return this.cacheStore.getTable }, - canPersistTable () { - if (!this.table || !this.roles) { + roles () { + return this.cacheStore.getRoles + }, + cacheUser () { + return this.cacheStore.getUser + }, + canPersistIdentifier () { + if (!this.table || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { + if (!this.roles.includes('create-identifier')) { return false } const userService = useUserService() diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue index 860d4819bb..4c5b046742 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue @@ -121,8 +121,6 @@ </template> <script setup> -import { ref } from 'vue' - const { loggedIn } = useOidcAuth() </script> <script> 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 d9c98f6111..0f0a8feab6 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 @@ -22,9 +22,6 @@ <v-textarea v-model="modify.description" rows="2" - :rules="[ - v => max(v, 180) || ($t('validation.max-length') + 180), - ]" clearable counter="180" persistent-counter @@ -125,7 +122,7 @@ export default { data () { return { tab: 0, - valid: false, + valid: true, loading: false, modify: { description: null, @@ -196,10 +193,10 @@ export default { if (!this.table) { return false } - if (this.table.is_public !== this.modify.is_public) { + if (this.table.is_public !== this.modify.is_public || this.table.is_schema_public !== this.modify.is_schema_public) { return true } - return this.table.is_schema_public !== this.modify.is_schema_public + return this.table.description !== this.modify.description }, canUpdateTable () { if (!this.cacheUser || !this.table || !this.access || !this.roles || !this.roles.includes('update-table')) { 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 a9ddd46929..24aed7f2ff 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -92,9 +92,6 @@ <v-textarea v-model="tableCreate.description" rows="2" - :rules="[ - v => (!!v || v.length <= 180) || ($t('validation.max-length') + 180), - ]" clearable counter="180" persistent-counter 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 d6bd4414df..804ae03c15 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -70,9 +70,6 @@ <v-textarea v-model="tableCreate.description" rows="2" - :rules="[ - v => (!v || v.length <= 180) || $t('validation.max-length') + 180 - ]" clearable counter="180" persistent-counter 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 b492476b97..2b0936cba5 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 @@ -34,12 +34,6 @@ </div> </template> -<script setup> -import { ref } from 'vue' - -const { loggedIn, user, login, logout } = useOidcAuth() -const cacheUser = ref(loggedIn ? user.value?.cacheUser : null) -</script> <script> import TimeDrift from '@/components/TimeDrift.vue' import QueryResults from '@/components/subset/Results.vue' 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 75eca0100f..3c0c40e33c 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 @@ -1,25 +1,25 @@ <template> <div - v-if="canViewView"> + v-if="identifier || canViewInfo"> <ViewToolbar /> <v-window v-model="tab"> - <v-window-item - v-if="view"> + <v-window-item> <v-card variant="flat"> <Summary - v-if="hasIdentifier" + v-if="identifier" :identifier="identifier" /> <v-card-text - v-if="hasIdentifier"> + v-if="identifier"> <Select :identifiers="identifiers" :identifier="identifier" /> </v-card-text> </v-card> <v-divider - v-if="hasIdentifier" /> + v-if="identifier" /> <v-card + v-if="canViewInfo" :title="$t('pages.view.title')" variant="flat"> <v-card-text> @@ -39,7 +39,7 @@ <UserBadge v-if="view" :user="view.owner" - :other-user="user" /> + :other-user="cacheUser" /> <v-skeleton-loader v-else type="subtitle" @@ -59,6 +59,24 @@ </div> </template> +<script setup> +import { ref } from 'vue' + +const config = useRuntimeConfig() +const { pid } = useRoute().query +const { database_id, view_id } = useRoute().params +const { data } = await useFetch(`${config.public.api.client}/api/identifier?dbid=${database_id}&vid=${view_id}&type=view&status=published`) + +if (data.value && data.value.length > 0) { + const identifierService = useIdentifierService() + 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 cacheStore = useCacheStore() +cacheStore.setIdentifier(identifier) +</script> <script> import ViewToolbar from '@/components/view/ViewToolbar.vue' import Summary from '@/components/identifier/Summary.vue' @@ -122,28 +140,10 @@ export default { return this.cacheStore.getUser }, identifiers () { - if (!this.view) { - return [] - } - return this.view.identifiers - }, - filteredIdentifiers () { - if (!this.identifiers) { + if (!this.view || !this.view.identifiers) { return [] } - if (!this.cacheUser) { - return this.identifiers.filter(i => i.status === 'published') - } - return this.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid) - }, - identifier () { - if (this.pid) { - const filter = this.filteredIdentifiers.filter(i => i.id === Number(this.pid)) - if (filter.length > 0) { - return filter[0] - } - } - return this.filteredIdentifiers[0] + return this.view.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) }, views () { if (!this.database) { @@ -154,9 +154,6 @@ export default { pid () { return this.$route.query.pid }, - hasIdentifier () { - return this.identifier - }, creator () { if (!this.view) { return null @@ -164,7 +161,7 @@ export default { const userService = useUserService() return userService.userToFullName(this.view.creator) }, - canViewView () { + canViewInfo () { if (!this.view) { return false } 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 c220a8aa9b..540bbbdb5e 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 @@ -1,6 +1,6 @@ <template> <div - v-if="canCreateIdentifier || canUpdateIdentifier"> + v-if="canPersistIdentifier || canUpdateIdentifier"> <Persist type="view" :database="database" /> @@ -59,6 +59,12 @@ export default { view () { return this.cacheStore.getView }, + access () { + return this.cacheStore.getAccess + }, + cacheUser () { + return this.cacheStore.getUser + }, identifier () { if (!this.view) { return false @@ -66,26 +72,30 @@ export default { const filter = this.view.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) return filter.length === 1 ? filter[0] : null }, - canCreateIdentifier () { - if (!this.roles) { + canPersistIdentifier () { + if (!this.view || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.view) { + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('create-identifier') && this.view.owner.id === this.cacheUser.uid + const userService = useUserService() + return userService.hasReadAccess(this.access) && this.view.owner.id === this.cacheUser.uid }, canUpdateIdentifier () { - if (!this.roles) { + if (!this.identifier || !this.roles) { return false } - if (!this.identifier) { + if (this.roles.includes('modify-identifier-metadata')) { + return true + } + if (!this.roles.includes('create-identifier')) { return false } - return this.roles.includes('modify-identifier-metadata') && this.identifier.owner.id === this.cacheUser.uid + return this.identifier.owner.id === this.cacheUser.uid } } } diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue index 2a8d010db0..ed8067d213 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/index.vue @@ -1,6 +1,6 @@ <template> <div - v-if="canPersistView"> + v-if="canPersistIdentifier"> <Persist type="view" :database="database" @@ -60,14 +60,17 @@ export default { view () { return this.cacheStore.getView }, - canPersistView () { - if (!this.view || !this.roles) { + roles () { + return this.cacheStore.getRoles + }, + canPersistIdentifier () { + if (!this.view || !this.roles || !this.cacheUser || !this.access) { return false } if (this.roles.includes('create-foreign-identifier')) { return true } - if (!this.roles.includes('create-identifier') || !this.cacheUser || !this.access) { + if (!this.roles.includes('create-identifier')) { return false } const userService = useUserService() diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue index c3a0e73f49..a834bdb5c9 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/create.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue @@ -8,6 +8,7 @@ <script> import Builder from '@/components/subset/Builder.vue' +import { useCacheStore } from '@/stores/cache.js' export default { components: { @@ -33,7 +34,8 @@ export default { to: `/database/${this.$route.params.database_id}/view/create`, disabled: true } - ] + ], + cacheStore: useCacheStore() } }, computed: { @@ -44,11 +46,11 @@ export default { return this.cacheStore.getRoles }, canCreateView () { - if (!this.roles) { + if (!this.roles || !this.roles.includes('create-database-view')) { return false } const userService = useUserService() - return userService.hasReadAccess(this.access) && this.roles.includes('create-database-view') + return userService.hasReadAccess(this.access) } } } diff --git a/dbrepo-ui/stores/cache.js b/dbrepo-ui/stores/cache.js index 8ba0d2702f..c2e34f48bb 100644 --- a/dbrepo-ui/stores/cache.js +++ b/dbrepo-ui/stores/cache.js @@ -10,6 +10,7 @@ export const useCacheStore = defineStore('cache', { access: null, subset: null, locale: null, + identifier: null, ontologies: [], messages: [], user: null, @@ -24,6 +25,7 @@ export const useCacheStore = defineStore('cache', { getAccess: (state) => state.access, getSubset: (state) => state.subset, getLocale: (state) => state.locale, + getIdentifier: (state) => state.identifier, getOntologies: (state) => state.ontologies, getMessages: (state) => state.messages, getUser: (state) => state.user, @@ -49,6 +51,9 @@ export const useCacheStore = defineStore('cache', { setLocale(locale) { this.locale = locale }, + setIdentifier(identifier) { + this.identifier = identifier + }, setOntologies(ontologies) { this.ontologies = ontologies }, diff --git a/docker-compose.yml b/docker-compose.yml index ef7e6a8a32..ed0f7e26c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -486,7 +486,7 @@ services: LDAP_ADMIN_PASSWORD: "${IDENTITY_SERVICE_ADMIN_PASSWORD:-admin}" LDAP_ROOT: "${IDENTITY_SERVICE_ROOT:-dc=dbrepo,dc=at}" healthcheck: - test: test -f /opt/bitnami/grafana/tmp/grafana.pid + test: curl -fsSL --head http://127.0.0.1:3000 interval: 10s timeout: 5s retries: 12 diff --git a/make/build.mk b/make/build.mk index bc6dfc56a7..800c879c97 100644 --- a/make/build.mk +++ b/make/build.mk @@ -14,6 +14,10 @@ build-data-service: ## Build the Data Service. build-metadata-service: ## Build the Metadata Service. mvn -f ./dbrepo-metadata-service/pom.xml clean package -DskipTests +.PHONY: build-auth-event-listener +build-auth-event-listener: ## Build the Auth Service Event Listener. + mvn -f ./dbrepo-auth-service/listeners/pom.xml clean package -DskipTests + .PHONY: build-ui build-ui: ## Build the UI. bun --cwd ./dbrepo-ui build diff --git a/make/dev.mk b/make/dev.mk index 0282dbbce2..d8da31086b 100644 --- a/make/dev.mk +++ b/make/dev.mk @@ -1,7 +1,7 @@ ##@ Development .PHONY: start-dev -start-dev: build-images ## Start the development deployment. +start-dev: build-images build-auth-event-listener ## Start the development deployment. docker container stop dbrepo-gateway-service || true docker container rm dbrepo-gateway-service || true docker compose up -d -- GitLab From 02ce9258300b8e4e826479e1421ce08635615bfd Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 29 Jan 2025 14:55:51 +0100 Subject: [PATCH 30/52] Bump lib Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-search-service/Pipfile.lock | 16 +++++------ dbrepo-search-service/init/Pipfile | 2 +- dbrepo-search-service/init/Pipfile.lock | 15 +++------- .../init/lib/dbrepo-1.6.2-py3-none-any.whl | Bin 30963 -> 0 bytes .../init/lib/dbrepo-1.6.2.tar.gz | Bin 40677 -> 0 bytes .../lib/dbrepo-1.6.2-py3-none-any.whl | Bin 30963 -> 0 bytes dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz | Bin 40677 -> 0 bytes .../test/test_opensearch_client.py | 27 ++++++++++++------ 8 files changed, 31 insertions(+), 29 deletions(-) delete mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl delete mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz delete mode 100644 dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl delete mode 100644 dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index c76e5a3609..d7ec90173d 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -216,7 +216,7 @@ "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" ], - "markers": "platform_python_implementation != 'PyPy'", + "markers": "python_version >= '3.8'", "version": "==1.17.1" }, "charset-normalizer": { @@ -602,7 +602,7 @@ "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f" ], - "markers": "python_version < '3.14' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))", + "markers": "python_version >= '3.7'", "version": "==3.1.1" }, "gunicorn": { @@ -739,11 +739,11 @@ }, "mistune": { "hashes": [ - "sha256:b05198cf6d671b3deba6c87ec6cf0d4eb7b72c524636eddb6dbf13823b52cee1", - "sha256:dbcac2f78292b9dc066cd03b7a3a26b62d85f8159f2ea5fd28e55df79908d667" + "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a", + "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c" ], "markers": "python_version >= '3.8'", - "version": "==3.1.0" + "version": "==3.1.1" }, "multidict": { "hashes": [ @@ -901,7 +901,7 @@ "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], - "markers": "python_version == '3.11'", + "markers": "python_version >= '3.10'", "version": "==2.2.2" }, "opensearch-py": { @@ -1585,7 +1585,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "werkzeug": { @@ -2009,7 +2009,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" } } diff --git a/dbrepo-search-service/init/Pipfile b/dbrepo-search-service/init/Pipfile index 8ded635ab7..b74ed7bc40 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.2.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.3.tar.gz"} rdflib = "*" [dev-packages] diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index ef08434670..583835bb68 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "39898ff53a7a701c750b2fc2bfe2d7f72704100e41a183feceb1d8bd09c71a00" + "sha256": "dac534d1eb6a0942c0e296c8a58491847c65d3ca23315039a3725591c86f694f" }, "pipfile-spec": 6, "requires": { @@ -254,9 +254,10 @@ }, "dbrepo": { "hashes": [ - "sha256:181e3da705d8f61ef26a743e0a445c5363b68c671c63f655791d340efdd7aac0" + "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" ], - "path": "./lib/dbrepo-1.6.2.tar.gz" + "path": "./lib/dbrepo-1.6.3.tar.gz", + "version": "==1.6.3" }, "docker": { "hashes": [ @@ -278,7 +279,6 @@ "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==2.3.3" }, "frozenlist": { @@ -643,7 +643,6 @@ "sha256:6598df0bc7a003294edd0ba88a331e0793acbb8c910c43edf398791e3b2eccda" ], "index": "pypi", - "markers": "python_version >= '3.8' and python_version < '4'", "version": "==2.8.0" }, "packaging": { @@ -934,7 +933,6 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==8.3.4" }, "python-dateutil": { @@ -951,7 +949,6 @@ "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==1.0.1" }, "pytz": { @@ -967,7 +964,6 @@ "sha256:f3dcb4c106a8cd9e060d92f43d593d09ebc3d07adc244f4c7315856a12e383ee" ], "index": "pypi", - "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", "version": "==7.1.3" }, "requests": { @@ -998,7 +994,6 @@ "sha256:0bdf270b5b7f53915832f7c31dd2bd3ffdc20b534ea6b32231cc7003049bd0e1" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.0.1rc1" }, "tinydb": { @@ -1290,7 +1285,6 @@ "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" ], "index": "pypi", - "markers": "python_version >= '3.9'", "version": "==7.6.10" }, "iniconfig": { @@ -1323,7 +1317,6 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==8.3.4" } } diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.2-py3-none-any.whl deleted file mode 100644 index 256d325e8bdbdacd8c967d852c98e39d8d3b9eb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30963 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.2.tar.gz deleted file mode 100644 index ad4d6f9c5590836360d1a919f4be84b5cc5f9ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40677 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 H0V@LlC1iD+ diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.2-py3-none-any.whl deleted file mode 100644 index 256d325e8bdbdacd8c967d852c98e39d8d3b9eb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30963 zcmWIWW@Zs#U|`^2u$hw=$)ez5xrLd5A&r}X0VJA|RFqnfukV;!Sm2zKnVMIkS5P@M zEVui%g}}de@rEp3G9IkqJLGhBOnA5K&Y{xDY1_m3_<EB3W$vDuq<u2;`~CSUw?CfN ze0VK>(U~5(v&Q*C+S)65JY+Yfg>Fp0wf5`j$Uptl7DX3Fiui~GmIQ2Ssad~aQcGCR zgY!JvhnHNqFl${_u}flv+uVw^Q$hl-yi>1U6<MZzv{Ce<<ElxsQvRtevoc<Dq_xd_ z<ASn}-=>%6o&DIdM{rO1fA1@^#IEJ-V_ENQb?0}x|LjzjMt|wnEj~K>i+uI6H+L-3 zcpQ=)G4=lH=yPi}o7cV0G5fsV-(BX#0>f?hoYYQl5}P+u;{m&|`-Yf@?;f9PV-B0Y zKPPePUUuc(5l^lJFlnD#xaia;gB2zzAqV6f7c-vP+Oq%eLUlLBqn(<XUgfVkwcNhT zd=;7?a%A@66WS-&T$0c2kIgrK`Rifc?w$1&N*|`LvE5;_Fi6M!eN0+#a>!iC*Z&W6 zKD%Jt`rxF>CpYst={Hkr+@{JcH8c0^u-fP6lJNL+LlIMX#RAjqVa9sKr{-3<F$L(k z2y3WwIsN_hZ+rP^hPKk%SEjVz$qEg>ll`jVP4wEpos(uals;m-P!OK#{iHqQ=M+Ef zdGB6n<%$H)R`Yn^$R+b?mcq^@>UJE?cW3-bsrOG=^rBW)V~^T#<|UfKXO?8HnJCYs zD_T%l=lA)~r#8+0)6*2gKC6W){t-Ce5ZUpS>0aH3?%A97Ci}9<tX+C#NiKiTg3jl9 zyH}pg`}O<T$CG}G8ow%aJa#`QI_GVg`GLY~wtUtx_r5>>`|joISN+HOSq*rdW^vA6 zsekxE+~>@m+BWBP|LrRrtor<?@5=70sf~Fr7dHR8nZw+lDyL%8*0)uB{qZAr^X|<W zbAK*c|8v#7;${85C!04-Z<+i4rSZNWNs+${=RMIeE))BIrY}UqLidb=W~uMHeYwR< zS^ZD*IJj7?7g{iX+q`4q_PB<xivk00+_tMOGqS$SnwGa<i}J17w<=PV@7pdibolhn zHSV3df90}Q^VS$!R^K{vkUP2L)E%)87T34=#LhWz&;9Y2tzCtcnx{<K?umR%{MKpI zx05@q_0(Q9hlk&#?p|52m^bd6$g|D+O4!O1AH_R7`6hGqZKU|_MZU|N6JNexnR4s# zL-rF>^KVF=T<TV3nw8dR_3m5Y#EK+l#+yZ_j^yfhxSy>28oB<r+t0W!J72usdHU$_ zZC8HJIZ}IwO*+?+>q*)51*%brf8;km`#Q7i?!BwUmvr6M&gZ#SW_J3IY9W8pr0c0m zldtPJGO0WcT5S6}9+Au0jawpl-{^M8Gcz!lbD-pM-@=j-crLFE&CR}T0LtZsEM77N zM|U}DHu7vTOZ|I6#oOpuLW0QeM;TL9!zW$-df$K2+arZ{pLwU;y<2>KZ`ae-5Vj?J z5v7;bAAcOL>stKG==6*ev(7iYQ$0DqSCKPagC~IZoiRt5*Ru(EqGFRSGztEho{%_0 zL@MicX6CnREvi>y&rg}8#gSFBY3VH0?LluM#NI7AwQ?qpzSAn<!$mTgJ2+Ukwx3>o z{@t064SRO&D7$Z&<!ij!yyw7aHQslJ|I`VxUif_3P4TR{S>7UFEpKD4CWVI~*%ey^ z@BaF6>|Tk1#E<`H<)V#NOwo<@NSQbNkh_{uMPeGiS=f%>+cv#yI4(b%*JnC^LdxXs zDN<eur*@uQv8hlZL`q02p?kr_WmB^`>-St{Ufl5Lz!Z_4pQ{#hUDS1#Wt`MgQ7V$D zI8(Ih`n9(?J3G=p?|%9yai8Lc=xK5>asist7O79aaY-Un?bxUMi7V#FIluVo!?fPy zTiS-uPn@B9rr+vWEn@m{mo^jkeYPpWI}Xe0?z}2hFf-uY5#~$GPlK*B7KQH(2sby6 zUu5RCGH~a$7YruXbth~KP4xb$6nd*PI=+1EtUinGyUT>t45l;P-lQcFKBrUtb*lO# z*~P;B(++qC-EovLKIkLUF7<QW^0n13c=}h$?aROL^v2?w$9K4|?f=iAxBu7SA1mJf zm@F2(TGMpp?B0}&Lkm|s=41=h$FDIjTNiz6ah!~Og!}^?@zr8|m)|`wQLJP6RBRi4 zc6q-s_mvgp0ke2&JW_YX{f}DnPRDDpomJ>gjqP(@)`q48l$qXKD`fw0wSU%=>Bm)4 zJ70R{T%Pf6`<jA)YVPf|8YyoYnBElK3!eBe^W5s+x5Ojjr*<5=_U-)S-J5?qB|K_d zAou^;mpO$c%vYF{VpH9hUHTNgVY=1rQm;c>_(k4qvN~U+D=~lTqD4N*_nU>^v3;LX z=o4$k74mK+W9xa<U7ZWl+5XMb^kHAlb$$K4BlcBGs@M;$`*FfbFD_~Kyu+IV7JX*8 zCvm-!Z@040-pp?t>+JU$J`WPxXcqGILzdL)&~+#Fe^b%@?9{$aZt-`4)I`Sr%!mxN ze5pm$yJtI;t27xH4E8W0SDQhp#fS{`);7ENwnx$ZzuE#}Zzp<boZ7u}Pl)5TJ)6v) zAIW|ndF!@HwVtF>o6<Rj14o^s=AQd+d-?OcgA6PVObb+2ol@iE*(Ggkd)L<XuI<4r zS@oI1$IQ(gOFk<tuzx(I-uwO0>pBq&#s9cB)twETwNzisb5GH=xF^*s55L>{&FKB_ zBZt?%JX?LgdsD)>{P=t8FKXY9PS>b(jQ(+*GwS%}`PUNP{7g@5Skz-4wm!3WZ>hoO z%`>+D{(Z>z%Wavpn-%(4V&wyN9kag}`DXEFmCng4KL>YB;s~z#7u^uw7Hbn<>9``c zQat_Ed;9$bAMSrIERy|U*LCBn{GI|qb?qmgm-`&3KNDC~Kk+E1d;Py?wjYPPf15aK z^Zr<E6Rq^ZjQ?Ka-9r-LacwIrOS?V4taCOwn(yk?v~`EW$y@{XU+XtpbX|x!Q2DWm z_xqb$-p!W#c5~#ZaWmbPtvCI6$+G8b;Hw(b#&ecd|9(mTkXsZja*6vt&;D=?-@Vdz z@@z^^*iJuO`}y7P@4=s>p2g2nJrTWg#@e*ZXU8kczC1eGUHM|ECXc@x`>!cBR#Lqu zo<9}R{4R4#BKY;0$5*xbJ@{SC&&5vAmA#XG?)7`S1i1pcIq@-8>+5Qai{n}qp9Lg% z+_}Bd_`A|`DND^$GWtHr&&@u_h}>oKlv&Hb`1XIaKIekw%PX7H%#AO}xc;-^D-dqt z7Klk?34i`R?*ET}XLp}oIoY_(Na{~X;lGD>SIeI>T#;i}{LlOxr{G6juSo~od6X~M z9se^^^{33|4zEoW=2QI~AHHF&{5Qo$p~GgW?C~ncn0c1(Pp<iJXy#`r-90u(blp$u zM9-f$=T3#>uFvoKgHM?&i|W;zGwbbNb0Bnn)Z>G@x`ppobj9mcYPo*4IXI*4Sa8D^ zn|Uv|Z6apeT`0ceL*bzZRv#x--?6XgSS<0K)2r#IZRV4YoFXaT{q_{Rdu&svcRy}U zOw1n9HJ0w4Vmb}20k3>ET$o{5-eBzCxHL#aukZ2$HK%>oK6$*{<v-oC&+e>A-&E%Y z_REDEe{=}!RQ!EmhvM#&I}TPqvg&iLn|tTO#X~!HaV=8Vy=xZ3!f8L#E*YjBmN{0e zA9F0zY@1EW;)|EgxNTfI)6u@<+Qi~N@=Jcc<i4pDbLPmKqK*G%8v4z@yCBC%&&O1! zu;R0_Y}bq?(SRQ{GN&c89UkU~vpzi@E-r4r|NjRm=Z9xirz8aadvNsUO@H}w$KCxV z2raw%+v$SC?sZ*Ej3<sJbH`eX1qjU32{m{rezAc&Pd@g!x$xVaM<r(Hd^q%AeT9@t z#l1v99~HxiUNsVT*mDK;pIBEa|HHgyqThwpCcF<B7d$-u!{gzL-AAI=2Rd2aI`}AG zGFa^Jhe;D^m7SDqOY3GHIKQ}m&fgEc)du1*zp^`R<h{=aALoA-Y1y3=YUCcSpvN-1 z&OenmH0)RCp}jE-XLooOuHxIn@*-jPiJ32II@x786t|beC71VoDfHf>;A&Q!ut}n} ze=UQJMugQPJ7(5%n$}Yv_1ieCW9R(jKFPJP{?YWPp5Dgl1K0QWcv~bJK6C!$u>Zh| zsivyTZU-}koB84`zt1lCQDA>TpUuR|<LknYj<pNoSH(4OuV+tvCviiv|EjzGj8BcV z!Hi<*y6x|U)aJ>A9_mZFD5vea`SQst8tPNb3x00D$#whW!>RMvU*n29bgirD(c*yl z$KSq?e7L`-;qqgZAKDLZ3!Zs<^o8{kRgJ{Q2NG)~L(7iMnX$FvNKKN?u||9Qoy!Uy z$Zm<-zL!CL^GWXw=PsuI38~*z#lgF(v+-TPO_irB+5UBh*uP8hyr%4a>a?oH>B$~m zI^R;Amaq4=?<gq!xL@<&(?j(!VY|6L-_EW2`d&X%W@k@h3rpEe_33x?{?6#S%J4Jb z3PV_Nc>T`P9XzS44rEP>SSz5k@c(N)X17U)59b>HsIH$|$rvYIb*}zzjVHVAzJJ_t zik2yYC)c{S&peng^)PdS(4?&lnFjM8KjjzOJAdO&4xLF0Si}0ft6FD1`H*fppLOv= zeV01zM^c`}@k<Y7?cla(`ru!*@{4Dz-x;5#lG8CCzD;A{v@qqEBoe50)M?|j3ZKpc zCr>iyd<tM@Ib~!T_GtOJ*{qC*T<^@C{^%hS%a7RgFN+%YhcHgtcS?Q3C5dIcktIUb z9MNg!Rq~vSVJ+zwpO`kDTHY1#R{Jk+!}CR^Jr#*Hrzc!tl#Tx^$(+#KQ6<h0EO7Ne zNWs;di>|NE9Pdfi(u{4=KF#iX>eZ?c^BX?4TGRMu-MODqKDXla1C|SO1vrhuR4m?d z|Cuo1QTCpS*&H){Tl6;a%el>YFj0grIQ>Yc#7W6tPdzsCTTF|bRT()i?rh=t!@C~M zo__zu`*PXe-&;hk$xV<h<GgI?!)9##NNl}AjgF5R!ve8a_xIOi8n=Eu*;~47OVh@C z41!I)+Kk4|`%~M_hV{Ld&;3!tm~fo^S%Y}nN7+x=kA6Li&z}9$tR>>_5zBeZ4HBmh ze2~-GSM%0q#=`ktc60RizF@1Z4(Z=eZ*+XNP}+3;vRh)0gr0@Ix8e!%y)uDwwcr0; zEs^f-Q$1&&X!JJFbYPn*;Ls>`q+fQ^jF}FLPnB@JjNh@<;#$Y{zq-dNHd#&%Pfvet zA2)Bm-KLEj4JOXmnK;YykI_WMBU-m|_-YrNUr@)Z)O^YN(RJ<0N0v9)*P2*<mNmch zEcWG%xi7ZwaoL+0V{CPG=L^kMCU)w-Lb9dK9b2__FWbcrc?(@%aTM}ipV0ItPqKP- zLr1>Sszk-#=7-mXEWh5*`QwCfs$k~SDX+99bGb~Jdh5v2bNq+5uwI#b^hAL}&zj() zd3MDD?~^jKl28513;7W7B3kx=U;}&5&A|L-li#dn1^d03w*1I=zxKb%?ixkMX;Ic( z2M+ub$lMrNx@F=l330WL)AEaEniMr^sw@dLoAgiQU*WTTk`L=7Ip6#GzWlyv?U&%P zcj|8M<<IUg*b{X>`I3^e+O?UJx)naXG$=7rj<=fp{eP^jIOlX%$FK)RHEYGDAKZNI zxyC+WD+&H7?YoZ_KiHqGzx90B!4`%D{uu(3KUT~L;5qkhhCo|lfSS)yIf<IRTs4`e z4=-7r;JoXQ;^8{sJCpY2M11@)HENOhwAZJyt|^zaxcc9_+b<}q#G;#Z>cM38Yaipk zl`1jF=OlKRnR2z3<UM{{@v~amtoFjH4Z4qPK1oMaaCIcAeX?;>=<3<2V`kWMw|ix? z!aJY&&t2BtRR1m6$d~<%<F4R|t>&^xR+dMK&+%J^*<a^)A{W<i^{$q|!5RG<zc;3z zxPG=``=kI_{Z}jHXCHe#bNB0MU(E`F1txYzvgC7Go3wRwXxZ#gluP|zXYkWA@<zJV zQSYZIYn~rBch(HeyYZ#VKgByae45>kKTC^l?h)2*N?fskVcP5t-ISe1BGt$La8GvD z`?-Ie^V8S4QzQh7Y<God1RGzyFxlJn@J+v-lBHRum$q=O_x<)v?)Uxuf6S#d#U6(H z^_!&eUW}OBvi|>3w<gVLuO7G`@4E8pmhiHR8{~g$s;X=}ef#Z-j1ATX*Y=gErOTg- z&;4@rY4-i3jUTUybJ~d=i+<s1zO(#ry<U^b*)B${h3Px9mfnokX);h~a$px!|GYrr z!KQ;&e>(SgM&(;-^tygpbw}Xf+8rm|>e9URi!Y_lX}2@H#lf{d;oC;PT~qoMh2-P} z4;PEDnR^GMDBt(CJFLF5fG66kb9$HcCnv_nH<gXe@kJgP#@mZn{6qvdtl;pLG-K-7 zC;VC~I%c<9``e4H+qn+?_C24qc&**KI|u&qpGp*LSQ*3Bxv`z=@!$5%=Ig!Z-AfnV zUCw{N>>Tf{o3T~G*LG%o&`dn4ccjXE1H(!K1u=!0J$gUmy9}n+2OgQBz3-|+%FoA> z4?m4xrj@<>RJq#2m{0Z3tt*@*=1d9wWojWh=hUyg?B{#GZQ3Py^Mcj|1>T*m%V)5L z@6liTt?}7~jZb#oFeypf5yE!i#;*GIY{A~rc@vE)l<L|UOKx*MpLSQ%vYYSs#PbK5 zUN2huDZqSAw$1*jf5M;LG7e&4OA3~JlfxM+@O$>loBc<>s@=Nr_iflsEun25(m|^a z*{O4@=o~AZ^HI8V+g;Tur_Pq%%=sZ(=6HJFJ3X;&H+uzd-i+HVGgZ<24y)*yb;A2Q zYgsdo9hkL<f7Q49M;EW+4d3+tUYqIZZCNb0^ul(pt@!=K@$Ip_cRj=x?>ahZ!^)x- ziK2^^Z@=&0H8^}$UhZznsgKv+RLL6ZC4~5iUd*acJm+~c{FvT}f?AU@wL?cIykTXJ zn|MazWILn2MsnX%$&(9io~hh2_f(bIb6cik%_4VlE&Df$x_szLkI2$r>0|io?Tjyf zU%c38EV!BJhyPiQ2a{KvVw*50D2qAZdUqS+9{oQ~p-1HMFE_8<pqzf9RH**gjjF=- zoI_WyKe4F{U@On>l|OgZ_LkkPlJ_^10~)uVI~D(YY2LMeOH%^<%InSst~)Yu@|5jC zyQI2rH#RHtHm+uI7Yj>>xV1F=wG982nAPf``|Mk9FaN9>Rk`hW)`=o1%cY&g9}e6I zulTgc_uT2)BvYo~XDkwDzfRwO#icBu<bk#<b8ddK$qqiJupd3jvjh#@yH}>}U_Qbd zW%pLfQpByopRwf|7k}14<GC!0*T0=|!L4cTS{KROTNk%)eOJ@+Tl(wQU4dPj*j)D? z60XR4<Zfjw9P~u>^Sm-&vxm2wrSEYt-c?d+@G{f;>oL`Tdfuhgla7bhYdpFxdjHl@ zwgdAu^<zFeJzu!odP7Z=+dQwkxAVWO%quS4^Edc_W^1r>_j;ASD*}mEPjEAKcUdrZ zE?D~FtH|BR+agD=mu6ngY)N-r&KhW`$ot5~daLd0V^v1XS4#e9i)n;-q{cT-EpJ|; zIE&40R`toLmzv_6ye@AEwcPqzWyjIjqUJx^#>yV|3@0_S#0ZMdVi&4UP0{>$c&)EM z={6I)1=2Qq7pBe2YILipSY+9fw7Al5m43CWw#2R+HX){q79wlRf-|R|*_o?5Z^DuI z=QD-f11=xi%{trqvDNMgKHNT~XIHIg6g&1d<LC34i6+Y>H3fSn%-@tAv1GTyEZxZ# z`y($ksm=dW!N<KurT<0uoV0tr#c%3YZF(ch=)UPwZ(GTRFKq>9Z$%i*N&IuT^tO;g zy65AkFZUMZSbe@F-&TF}grc<i>+`48N}flC>1wnuWmlPcc+y2rHJ#Jl6Qn*|SDD*5 zbM^&!(TQ7=nr<FH^Rc-^w(7gb6Q_;0oGNzd?3whd;>M{HCqKOxZqU?Qe8gnyg?nuG z)#ukK2iP+vS?Qmi=3ZoG_x|feYh&y8XBX}Gpf1$Afyp~5`KBUs-cG(9vjk?j#QHHz z-~D0!m4$l$FV%fq;AtKHccFGt_}`7JR^2m-b+4B-JGN~VT_0$D;O?i=841NVpHK0Y zonBkE@5`;DebuM8PTv%L@BO3GH{QNa|GHG+?$=MR?>-Z;v;MYdPtNwP7iRAkCZ3vc z<JCmD^OJ0kG)Y%SJzBo*;exQ_6Rn<We#eMLM;3-ne`9p*=42D8@~2hzxc`6JT%y!{ z@m*&AkB!!~+3crpo45I^@bgcU{^tCKz5BPl=gQR2pWdB|zHODC&5*C#J$)O;wSCRs z*Q$IGKNR0pcfp}fJM{NM&$aFgd0yqe38}rfEMF?pvr3_U>QUkQp6@d+-q4()pPhJ7 zfTvc%IFz$AU~7j!(FQKQFvss<jEP(MKD}76uipPz&V$`OkNIEi7UN|9nyXN6^{Sd( z#a^)1@9nQ|f)~O>`I<fZFYV&ppd{-3UT;cOXVtUHx9p~SolSk&Hj1mp_GWU3o}Kxl z#o+t7lG59EdWvN4yhu%`>sz~Ed)@qH?^)_ieR#Yc@0%eRQp1;)RPcp)hPc+NzXrM% zuD@T3Y6M+xXFa&lY>Qlm$9~m@E{^?|p6(aA9a4OI@sV=N{=+p#KReVfv_3bz;aAU{ z9~P<U+)1iTOK)#wdsM}lBfs>sO2q7?-#gYiJ6zG&V%~H3(7dn%-4&A-R;F2-u?b2A zZ(tCwTNqc)d2F%&Wcjc2uH5MAS+XageZx*a`ONKGpGw&z9lk0z)A_nM@8TjpGlQr5 zd)+HTCHs1N@5{E!3No&3li7OvK$fK6VxP?LpLS0t9ZH=)tEy<~`?<$&d9Yrq-@yB@ zcOP@E#HD{tIU+54Tdo?^ggi0T>)cy<i^+Na&1GRrLzhc(vvys1t+YFN^%T~&qyrAh z8vYI|JXXgPAF-MiT<3gLlq;Y8pK08jR;D{S^WV%4H1zRpIJT?!#w$av=v*z?&A~hQ zT>CVVzbah~Eoo}prg`B=BX9V%B~`tC@3MkgdP+iTg^%9R)5+|dKELx`?)B}HOg8?g zOi}8%bZ4@8+?xLC$ljb|W=kS$D<7QMynSo<36s~qIkx{hlPnxt?;4jid&S<X<(dIY zM9Tx!ulK#$U6Q`x+6BuQ3op7|F9>`)McljIm*L&?N0n>lZM)Z9Z=3dC;^C9Gf0N%% z5uEFGJ6|;V_1yBuKNhNdfAizw#BU33c5zf+%(c4p_r?{S#htPDw<Wdk?PJaj+Z|(h zIrA%*YyPE_OxL+DE=}UxqyNPuS7X`(;{^rW+#8?F<8*1<TEX@6*e?#wsH59C`kF(y zl~(v4$xeT{^t6A-d%cMwnn$ml?AoTg>Z$M2bMvMidmG{Uc7f6N$5%c7rvDQY{Jwm4 zSwPGlj!ciA+J7R#V`k(AFA?9*x8v(pix3@#%fC&WS3i!PvZTW8V{K*Fw~Jz@HinkG zlCxUG_UXo(P>s~}k-Tr`K5VM2{?;X3vHf$G_5rrC{`kab?e58+w$z@DXDoI5*HvM< zc76Q5HIY&==Um$QraU<~MfE1<<n14&QiSK->NS7Xb1c=4XR&0hppf&l_3JY4%yMd8 zyGo$$zIx&e)1q_lSGF%=uK&sT_-uZo=^geT`?vD{H9YlX8QU^}^qQdWX^Bw=-&b;% ztm&;$IJ<{Otf%zU_Sx1UxmTwgv6?ffX;07Dh4S@>)}Cs%3z}3r_1nx+(M`FLO+Pqg z@<NrIzOI>Rdppg9*^*;&j_9F_S=tjeI8-kVY&CpiqGKxfaG9C<!sV+UX?Pf=%)O}* ztiJu;Eg_dn1%H@4a(^BAySH;`g-FnYCyk{a?zPD>1b>q)WvIOrf1&Znwy6swz0Pgu zd2?&gvI)_uDgLgHF74w~SUmBQn~{9Sytjs`m#5mzxTb%rOd$17_3}k$KAd>@yqwwp zmR3(`T)m4=n;fhB={;|JzleU=Dp)5qLGkZjoxNLvIJ9mqePYv|HglP@j!EG!;i)F6 z)(o|(#Z02D?l+<j8-H==w&Iud>t0nGHRV?Sd8^l-{%q&TifI>5Y4%~?#Kd}_hk2g= zi5r6ZjSl51i#)&kG~Vu8P~zX+@?~?IJ+JJV)a1!_U-kd{4>wjk?C-f%^z@2R_oP>k z>LzPc8%J^dn6)IJF1gmadySU+$(C?|iHuLVwuYwX&yDodyw$&BpU|WSF7sk#nXk_5 zjWl06sr8F#@yn~6Z&&9UetUVXdX1Ua-=#&d%B}8aWP7IAF+Ys17Lm(8k+^<V^x>QF z3litgigwP-$Sdpjc{z{i<9E;a=@YgH*RDM%XT>&!V?x&l|I4QP+AjZ&m~+kBILF&1 zw|0KR=cQKy^^#n^du)~NeNi1Z>1)cYcF7nHrB&h?3Dd7Ke%hoYw}yk`-Bg#B&|h~? zzP5E`=c?T)dsB7B!kHH`5@y)E4avKkp|Ey|kK&(MNfP^OLR??Xl9}k~&a$S|NVu{1 zYWJ>!r4!NtI$>|s1I<5b_`#iyn*l=~d*y0j^?N2c}FrT%TK39dh+1=EZ@RQ7pY zu<`p-l4N0S#nU2udGB=v3)XCZ#saouZ?)}njp}%oC|D#s3XHvfEA^rcpZ`KfQAyJ` z3wo~|NZQlfVcWXz-M06ySzedUT;cTi$2^CqQ}^;)ri&c2OIbGM>|REp;GB%x&z8>E z(B|j8GUk<prRLP^xtDyW>qImjiCf$0;Qpcb*!~quCrGcIY!p|${+`py$D3r`Hb1=X zrFOT7<4K&|FW$4otE>|}vc%ZyHhHi8H@Wm%S!jsIjY^%@N<OU#Uw=g$RhC%rqb?%% z<d-S;rblbtiWBaO(%o?@UHa`uBX`vT329ebhD8%+9;z~(k$)?&)>$Yy^Z#S@$F<wF zUvw8HJmGarPLB1<UUk7GepBYbZLG#y^K6?!nd}P>9F<ZM4{Vs3-e#7+^4MI?m9Ia2 z`&%v%FZZj(wBg8AD>k8izN&jS{mx%L_|E5KzU&j#q#b&nOFPsU?zaAqatkcoIoE4< z5l3qJ!8^_Sv=8n|o*I6ES=u9G1>5#3g<?!>Jfe$|Hny&de(-%~(~1+TEfo3VbcN)$ zzWd`VH6c`Sq9)VVNsU()E*I`yrp&Ra$5>_EpUM_}-HFeg=gM{D9T(sK{m>Sn0tuHF zT&_FrZxEQgV9`ajy*^dUSu>VyU&5`RHd{pR>k01s)obR4PoMt$z25yj_39smCwhH+ zB)H7#lSK4w4MxT}i!^wRc)q^RxU<dax|Y9jI_K{PE`J>}Z0(P=A3r^zpqk-n#mX>q z-Ooaa*<X{LrhGcB8u)s_xfQci{`#ys^6=e*sN0=4r4!Q{ugc9|Ti7(ex8_e7!z2ft zUq&j^Kk6;{tMYz@9mnI$W4&AIq$|75)b8*peOuFcJJERw7svDXHPKf?*1Jx4pvaQ; z^j*?929;o?xmJdG)9y3|7~W#nJe{`T=)cK71AY7q(vGTXu5z#ccusx8$K7jYY(CEQ z|4p;;Ps@%!KlE&^X5{%FEt%cUs3doF{xt)?^e4|*T>n`e3pyX$BiCVhOut4^Eza-O zyaRK5-FI0(sq0l!o&1ku#(_trt@fWdPB80j6JLDOb6b?Wy+FF+A9KrJMwjM&6kjeR zW0T~bZDV};k+u$xS_6+%+;i^mg!zy5eY%*h7iyZrbUFT$Y2b{!C3Vc21@?<VE;G)! zs5h6xW0G3uj;%9mot|G(&=d{X>368Y&*JXW^>$N>ZiwEWA^Bj^|Jln!H+)<qAFTCL zWaG1}MH^Blr7h=X&Jy6+XrPhwE;%vb_^&-;Y)9=RjMOe3_WEzPw3|ub*&erky+_O1 z1nrNix$YC1W;Nqh=w@-L_|(D^<)1yO+q)bXTi$4Y?zK{QDypdK5iRvGVbbR9#Y_pC zTBI}zy*_Dj25O2*U2<q@4`H5A;(4(otSVjl@V2Rf*>=wEPUm%&K0e(2!1CoJiKrVV zcAX5I<rJBcS>$H8w<~`Cp>0#0J>LAcIC5aIW#P}x<E2X`KTzuu{vf7zf_GV%c0oa# z!F|^fZOOQc-<3kA*@ahVS4FB_S=4eW@%eeF)tf$@7uzA}J^$$IzV7-dRxyb>1+B{@ z!|cPjrB>+Qefvf5YKTPJlPz)PcHV0eE?q8<({eR#|I&4KS$C||YPs1@%Zg1S3f5gX zmNPv}=g-#7=ijs?E{Rxv;ohe8D{YM>KQBKP%=jQ9Ym4CL`ZXsWIcd*GPqzBG_Im=` z=HDMe_jTRLyxQY;?3ucg^_KOEZ=_w{RJxZZxb@47uct!$=3H6ZyKC9Ask~daq<h3F zJiBKk8t5#2tSv*nXU6##`_}ypN~`%}zU%#scM<9bxxQU7*!Vj)!p5|8&%%hdMH4n= zevT}huBrU&jG>j1GvBUTb0pbg&)&+pbX9tauE$3AMd_lMmQ%V~?@75G4mzXC^{t8X zNw@magq5=e1s?t5e3r^u>&>6KSHS<)RPD)8Uo;dp&ER<!=dsQAgNy%nL$mEJvoEl1 zS}wP9Tg4RhJ!OF&3!+%3>CJmp@lJJfNlew&tvk%0ePB?!KPPOj_dg{@r^AzTuBWVi zQrq0%<zHs$y1O{zy@A%&IWfw2<L}(E`nX@_>4aTVrXIhm_O9eqPQR4liY*12{f>97 z-)1&OiZ*)vURTSos<H2z(t_rtbDMZyPy9J4dz#8V;f-djEV8a{6Rz90xR(gYInK;D zaN^pjD_+VQrk;zJyyvxiANT*a58KSN_gf!m+s0a4Z`$2{=fbuL7v8sRYi&@xy1J^O zTKQ{K^wLe2@5pz0-8GgizYuq>>{j-7_g&^!<E6Q8Now_+n|{*nweHtB@9MrzV=X?f ze!xC_Z|ckDh24iem$n8z4ZN27kmXnS_8KO(?F$Q-6f5Opx43Pd_Egwzug<Ys+qD*a zc$v+;<nEM!gpea%rRH(R{>&5$u@G7R`jlTr_#{Sw|I7*h#N^84AN<$fzj@x3sP(s; ztc^s1j_tp!T3NU}BKObR8~?1Dg1$S}<OZoqB;D9<>)c!Ua^sR|sxlclHCBgTr5gR4 z|JZoK#mDQstO9rq8bm`~?zq3L*S_>l`=#i|Z(%;`FD=r(balOB_!0Y<kJ^FH%9|C# zSDe3p;>@l2S^KVj>rnXlGFr90YZr6am0G{3ZU3FNvhLaY^2WXHt6~@4O>WDLKUk*D zwQV}n*4bZHPvDfhC>N@l6+cm|psV7j=cXmT{a#yL;*G2n9=$KPrv2w?Am^6L-@fj6 zb-gF#RNJ))D<yl%&5eGyMfSFQ%y9o2_UT;L_T1RpOdA@zj_F?fQ!M<F`KPKX`xd4Z zUlgkN7A>Fpms2|TZ3<iMyp+dfDO(uR-{<|B-XQJ4aADQNuPO|3nK_vg<5gbrs9j%~ zG~vo7{~wO$a_WwmE@e)*SGQIFMSC05l8YVtrYX9VDQC#dXLk6KHs=E0YRRGvxf!)z zvudaBYux*VJ7AqvWdhIbBVXfoUs9RdS+dWsp+5G<`c#X<0b(hqgKM}SZNJZ4+rA-j zb%1%-l#C+3_^-eAw=6oV{eM#Ef4;}R%`cl>7l{;@Dj0fNP2=D;_Qt=qv)D{5W~80o znAciT+^;pSd1ZltDBrR}dA_Z)7XB_tvNQHpoW9b{If5(o#cyxs8_M1bdluDh5HY)a zEb7gXAdSP@*e$toby}l#a#rUG%7}b-EEJdAo_ut#VR~YIu~1vk^3)f<Py5|aE{$@# zXt(0>*)1EztOJ*)-mnT-Udq2cLGP!@e!sxVC9<6hlDgl9{S>mcO8+$H$d_crSC-=S zHK&<(f3e-K>h&U!;j@jW!!#k)&0jt^&lFbDKU+|reD#Fem31f57nFr^a!#xWIFb9# zbqRyCZ>WP^t=#>S4rP-QvIHG^#d&Xj%6Rriv4N}j;G9;4AP$FWhpk4{zg!n?-e#hB zW5vlS90}@MnpVZ9T|PeHn&RV|A06)LHvbIDir(bMZ6x%xefQ<A$M-FrIUN3P)chvY zTy<)n@HFnw+d{vU3j{@;KWghf74>6P&BdPk8}=!iO*cqgpSLlA<&OxTs3XrDi`U9s ziyxcBZ*J<HfAO#EoJ~J?-kRUCwN0B~pklho!{osJ&8o!-uG4f*>=aqN{@?c>tFL|x z|MxV!-s118_RH(_{^ge}NzhfBuw}u++ix>6_Pji*6mhp*(4zm^%@<cBAF3Z}kb7Lf z<hT6dbhhUX2Da|cZo7EoPCwH-EqzPt$Fsa4n(TGQ-A+obW<QlC`|yfG_t_Nvucu$s z_uc=oxPR4JAM4B?!2vhj*lOGNm0z{E_Rs8cNRRKKiv9n@rR|(&gez|8swmpHE;LV0 z;>7P87g$1FasoJI+eE_!wkGmAFB1(^kD0dp_NvD(*kUvs9vG-D-etg%9jw21SKrzH zjIzp^-=cm06~)VB?^|o^SE+e4q*CYQ#b^gD!~RHihv~Mtzh`{%clLk!*u-h(zT=-i zJ@n>2{pE?H&!l^k=gxNR^Q!KxwR@NRK(qT-t(x)7jOwmV^T4tio;_XbvTgGpN$Xj9 zT>L0~DSvkMuS<XK%zaVuNxAP(^{nivMhn@c&KGfA4ZimO{GF9wd!~F7zIfhWY3mQS zk8w#h%o)jT+rvxOJb2?OZ(I|rk<z=s>rL+!<M6#@zR|&Zh5mZRm_6;>F~y~9&ZW3D zecmF0XPLyR*IDF9OY*3k*P8CSLU_wDAE&bUAO2dLzxLBn+_cB}rRmohXSV9{WoBp{ zJ;`Wc`)dmK4=K^MAJ4`9#qchka{sl;KHeHBo{h_XPfXe*(Du%4@sxneXFvHlo87t9 zcT6T^S<L>UcRq1H{M&!Ei|z2rm04vIl6gZMr<ptNDPQ$?!wrqw%kJqf<h$vxz9xTe zB9n-p{j5UH`mOtpr?}4Lt~z$&uV)o+Vtd=JzBS@IPaT@mCb(KBf9*tF`_|9a!8Q?J zSg!gm`^zfxM%m}`)af<P+!uc;dUozevva7kkEc_UYTvht_MZK}q)(q*F-4*-O><7h zk=3Oa9>>poviRW#!MfY6=I*ZoR|=h&&#m0kE@#ExeC1c4_`CBPTNc#uCrt3_xviHY zx4wAo;sC?XAv4pL=|!(=pQU=`VuF&{-<WSVE5q(?JH29BWr>gam)W+*Cw!Z3yj<ap znViS*^ts2jcrN$M=c&E!*4meQBE(#5PJj6EKrtOAo3GyIO%zr>%y&8LJ?ZOQ*2s<< zpI(X^C{JN4c%2;T@yJR&w)@Az_boFl9zMumSjbZ0mR~>T5_{&8$5(AX33(;4s)0td z6lO=3CB>g+laJiyAi9Tj9+$?(=3n#f2nWdcXdbFPFTH=M{p$qIy)V?%Z`bDEG-nJk z|9&KOYuv^iGgdASyyCF>+q(C6Umv(Kd$q->X{8I*IC|XU6HT}Nw!5%<leqmVOX*KV zrMzluI$gbw`|okRcIMd=(+SUYN<y7hub9Gcf0oUOG@i5O4exp7!qRwb^y|zR6xDC4 z)-!l7|FS|;^wt;QBNtZl#pE&s%%7JM@MLP%ttrmtJPVTg;)HI`{*%G&eJ+vVSlw1O zwPmJ^$Cj5#2c%{%(n^rOu)cDFL)=9n{c9dyo4e=l+ikHwB;3-`#b+hgm2FOsc`yEZ zdG_b|vlG&;DW^y++FSGW?(NTM72HY}Qz~jUUS)_nvXXOFOdjhUt)k2sZW#_M&z@F2 z9dz@D=6c_mdP_sk-As9HdA#QG!k5469IPMe9XPn->@rcW={q)UG-<ZHy`wKv-%lj; zz1IDey06o^7++uNUwLK4x*uW6D~}0AU40tg<+dt2Zbnws`Ox|+hfbEvI&HUf>B~?0 z!3$$!{<#{;#(rEYW~KHa_M7Hguj%zOXBAyCt-F3GSfDfS;i)TXw_;A4rbcetY}EW_ zb8KHo?e?}OkL7BmbtGNBCEVBa*LwEv(mbCv&C~cpI#)jKxUjTjxus{>r30OOT8pPl zV9WH-YGVwZ_+V<6pJ1iqF4rt8FRzui-#BExRnt70Sw8>G4bMyM-6;a>p5pH&>djS7 zDL&u5B9<#{<|Adrqf2ghuJ?W#p{Rd)&(BHc&K!8;Vwl#nk7>i(ld^mC*w>#v_`2xB zE*U8EQ^a09b^ck8{ug~XB(ulB`rDx^JQkVHS~6v$jXH$e)-C^Ceo*AYw+9UyAITj1 z8>EmLKSy7*W#iV{+s;jAYEyI$nsH+N<GPhw|NWhK$aoR+l#0;klvmGK-yKx3o{>_W zF=_6Gmzy^$oL66&6sgX;Fg15Yb-<R?jP{FL&9c6^-VM9FO}RJQ*=Wh7);qTQ;uK$n zEqhg%UsJg$?nKdZ3x;#2r*@VVm8Pullos>-u~A*#mrdgR0bk36($zmaw!bK-oL7<L zq__5@cKVl3<(>^<rV?$=g?8>A=U#Y|B;FJ)J+<aYqRDgRZ%-CKR9;(Le$;2r@3s`R zqoDypb@$Su*VmlBy6LWZWW?Rn-_kid^3sx9>vHT^6`!0iY_@gOPK!ErX6EaPlfHag z%Vvl5WbKn*cr8Ck?&p=COB8;x#4uzQtcX~DciZI+q7J|HoQx-k7CA___-e18^psau z;6T@R!7z8mH{lj(D^qRQzjQDB&tI^2x{zG7>Lk(W(wU3Dx~&o|4LY{cPf}f8`sli8 z^OiXZ*TnFx?zkMcVs`ib_~INNu9NP|)Jg<pIu$0U&UqVhqUmMNqAQ!Yey;zZw{4A; zkMeAr+CA*<S3l|IJ=B%p`78UQ=IvuumUYweCmxJ0P_Wjx{nKDs>b2v`&)t~w`?3Ds z>^fKV+)$4NzPx(5(#8vuIYRGl{v9wSPx;yHu-4d~tyNDSZFHEbw=LW<jAKSTm(gv# zP0>>>n(RtBu!v#G)8~aV)-U>W#`fyHnO0l2{+b=p5MC)Xfnl@M&X|f<u8t2mlbq)Y zz6gE(@X^d2p9=n;HT9Pc^OiH_(r8o=d-IjWg@Nf$Lhtr<dI3puXPljKPPx%WsCwbT zORKkN?tJj)%R}E*P4(ZR^BUuyF{{?4dz}paVp*OrMK<QbZUZiFF1`zM8CUlDYh=%} z>DamXFc*vT)0KgX8oHKu8d=9a{T*_~etP}OJvEF=SN#9QT4M4`FTr8Mx5xtyjyGnm z-YxU?88gT44;j-hZkc?bR<`2srlqUur5^vS4?x-CU>(A-<17;c0}~qqgBSw?19Xc+ zXhBYXVhViub8kp&_H6@^+VAUkuyo1J(s(P!#$7SNRFh?!ipk5v8D0T%vfX{A^{6bL za_PTa<R|w{-xBLKF8N(}Zm)Z|j{Xv(1F6#tC$gT&Uz!)jHG68^RmW8+e9NwY7C&DR z+t1x(#d$OM>?CW=plPlvLo7`TD?|h5N=!?RKOCyEB9<qAe@J$p`jdYTvbUZO%$^mw zzkuPKn0e*%?%z)p8vN~YMK0NF6X`T#kDOH}z{0sa>TvQwRogq3UCH8iUVpt)UwnjH z`v=2m389(KmnLwUiiyX~ux#3R@3K69gh$1UwdMwqXE}W=+MBez?=84AA%L-(rI$_P zx{zNFQ<rdX&=b)E*B;JWkyLU%ke|WRZH{%9v*OIs!U(bSZBg&ix?g5l#^<mFWQBxw z>z(O;ee-bAr|h)LGg=PhM_Ms`YVq30Y;{b|aN?n|6+S(>Z+r5huUj6UCd(P~<_7B) zmgDPkec5j%Go3zUpsAs5aCFMFJ5}HMj)^?JsIizW{>AGHVueYZeHjPcmS+FaNEKUI zuISyKV(HAot$88XGJ$KitnisPWfR@z@!46l|L2tamiXiDQn~Hot4?`DDJEI7EXm_J zdBG(y^vk=#uf>)#w_R$HZLM>^q<mFGdrz$6*^7lGJHFjNXjU42{|@gIwpWYRn0ZZ` zdHuxwkci(+2bjFd_ibBrt1y#iYgYQHxevoH?L2Z-Y)Jv<4j+y7Icn}|dWS@31##N8 zRZBn0i<kY#|AZleYnP9Z^^VMwCznq(HLf{On;G9aFF!DLna$;oZ=Kq{$L;q`ygxVg z?}sB_XFHoM{dQP-YS(e`g|Q2cA9__+V(C#VwUxK)_SNGzZrQ%l+3CA{LdFs;OSgw* z)?M>n80?j-tKRo6fBW@sStSR%${RB;pOYw>6xrJSV%h%^Yq@)N^%>&AD|;?o=<YAw ze=lm@`_T6#y6&~t|3>^jczt8}ng#a`^W8grYZJ#mCPW5sQ3#J@U|?Wi0uc-h3_^$u z5FekJmst`YuUAmX%z#@5QkF?9$kfN73$!S@GP<<>nlJ-HT`U8GAi^Gyu9T8|y@JZO zGTFtq%|7j}Z&fp&xvaR<%KWAJ`7g|>!D89AGMz=UQjBD}T2!voXs~3u|NP3XBc}30 zz*99Z|6SETCE<vK``if|pO|$XZhV}x*~Gi!F;7NC$K;X+Zh>=lY4$3Y6*lJXn>}et z+mj^iV;|J7bH^Ox2yWgsg=OCx)j+XTX_No!M_+#2=w^M@ZmG`S%ncSCI(Z*1ADCd# zS+BT|-~E1X&@0U!3s0ZW`Nqk<mpevkt%uXyhC0=gM_bRnOj;=|$F^VWbIl%!5B9F# zvcLN0{#bp0*L<IK#U3e}eQBASL<82>Rs8(-DYfF~rS0*4>*CI>i(41B|IWV;kB_fD zZ9bpvzs#Qx58LOnaXw7ymN_T>b1MIzkB=@NJ<95l`r&qPR?5qNp?+Wc!yWowSGE|c z_sV;em_BG;V5)e#Wkc=OnZK@zeR}F(xx~3ry7$th2g~gAxYC`s8HT@8<Xcg$vulR9 zyoaH2xXR;M1v4hZUgY`F=zMe8kIhcy?pb#N<JGf|o6eEx-l=4MC9O`S(;>p-M~wUt z@2zbuMGEW!Vr%PvNT28Q+|^&pJ0<6?j)!cbCM)M5kH#{)m>IW^XWvWs{M`SJ-+`F; zm5tHYy&pgMk$vD`oldc(kH*byn{FM9=uI;HtDzWkqiF^2{Jm|9Y}SgqYi^I$6Oc7c zJ*RlP;A|YPS)t4dvuAHTUrgIAa_y_*jzhMp{-w(zJ_~rh@Cdx%_|h(Ime|S(iJi}w zuWR$3==<S!%p*u{O{tv4tK}9KugnQ__gi=9nEO5DDVF`pixigdJ`s?~=3KON_nCLI zObepaXPlnNCiPc!(P^XnIfhSXU0TL{Cu4eHr>Ji9tPLTLY)+cFUt)cfx7}ocz?J9) zkB$hh%6fBt=EIyhWnD4hrk<q&H`=1U)Ss)^^DOSQwXE>liW?of8n)$mG$%`k<ngMX z{a3>CU~SXy1DT(DiZ(FW@0_IgJhEr6+y9-7KFc|dZQD34CGbdid9RqDqt}ynvD@BH zDV@-Iac9df2}ke1Hgnde(}bs-KI)q!*4_L??48z{=7{Ko7t6Lz+{MM*Qpss+@*_?9 zp-t4|DCa*#Ki=<FX}E3s@!`2=5u6css(Vd*U#NL=zUGRGU3Xiyx@1p!o2a?^=T%PM z>Q!<|Tz38HO5l#%=DEY}37`1PTPvPjJ>KBEe8b!DJwMfNOnTfPt{-<`eTEWeMutFs z@$932U%eK3bID|#rM3PKt(W@)Z0B%aID4RYapQ}JdLjpG)*rQCsNTLM=W^tp+1(fY zIej}1uU%is^+If#{O7fq8}_moPxU+d<L8n5<B2}YS^4;`^f52XoWDzC{<(=NKBvv| zlVr}Ye_W<?@#2vPuByFzXP=l>oxD;?{_c_t`KaRLpK&Jn8Bf%X%j|mb;6v5?+_U%j zmv=9G;gwl(hvnn47aPys&%HW%lD_7*71#E-o(<@kH}m?ns$~k!k1p%zJV;$HrCQy+ z@$%6>ZoNE@GQxX=ZL_Al&^$Kd^H-lOU7MHYM9%a+&0uS6ab{&$w3+59-RLfD-5uMW zSzf+#NFZ-x!%mlkBQw+P^axC8y(3o?aZ<L-^Vui69NlMI^EPBUmsh^7*k!PwQ2L18 zwpjgZhgWJ!{hi^S*|hfAiCLazwU0iUO0L{(mcw~E+38|Z^yWRGbCN~R8yBZaZ?-;Z zDmSg$?y64oz1f#O^tnXLHTtWW=kr@?->nm2K6e?e?phIYxItZf{;>~RjxLX`sB%c% z!)jV{%+7#SoY!&E>X;)9A08#e%xv&~b5XKK^owE5uJ+~bHB5#(G+3CA?aaEvUh%6- zi}j845jz$+vlGob*_6+2;D2`K!5rrWIn7ge)jw<rPgC+`ncr}Z_mU;cKQk?sI|nZF z`3k<^nRrg{!Xri9?GDeKS2XqT82(_HQt5G1Catqz8b8C&P)8<rxgry$nUxxwZ<jYb z<oqpmLHzM#o=lIgEc3qoFk$*<vy3NvmW~}Go4nzfgP)XBzbs(?znY8FNa2BSf_g`+ z8>1+T&x2_S+mjpaC_VXMUh#{0z5{>smBSJ%?kQbO-f&*`)^lE+ChHic{DyO~mn>Oj zSywEMe(>J$qq?j}=1$fc{*Lo4ksRlWxc&KmlrZ0UH{rJQg;RW6jTrO3pLomi;jQ3( z2%)mWozsuux7<d52fgYkr&$c%2sX1yEnZ>Bt)S@?bwJlOPj>>h>&^%VZr3QC1+7ZD zVhIbln15Ki*6(jDv^MoS7V_l1`HSDozw4N*e>z91c)Vm>TEhLS+TrhACVu`ChjkxR zJJfh@c*3IlQ|wtyKrvH2zt`*oznMSPabNq~aIKhI##X_7`-4z^_pMt_y7JC%XlJOL z!L*OzqwmvC%f-Ae1U6XBVyb8SWIok<MU)L=b;FJH1MwYy&Nj3MxbjYL>6kR5ac*ly zy7A6c59gRW+~m`o&8Vw*$%y%7o5o#9mtKLz$AotHPPi=@Aggq>_<^m{z2^;zLI3!! z2`~J5rtuZW%6ZLST{3L7E0VOD8252}JnPsb=vBaXL-|M^Bfm&xM9-1nHxGp~jNNke z8um;4jCL^THJqjA&}8WKf$y2kgE{2~?lb<}&3uB{sc&Ka>R%3@*r)uF_4wB?sh<1R zpPpMWOy5{G>NhTCv5aC$X_}zjkdif-MJPq%plCvRM=k3f<0rMOcZ{Btu}VlJMKp#< zWTis5Wyh{q>6)ixakEAxu9!OYj+bJ6@d0r~JK-fR0bbe<IyCzZm`nb8#-%W`iRE=- zhOJqGzu<1(f74g>8h9wVdfrgz6j4n){WoFX-&Xall}x++u3GWR<W5kQR++d+CFg~A zsQiVQN^{Ll7`s;9I#AuU=eEK@5!DRl?V3fq*;W}Zsp6d=>9j6!8c%wpbIN&xP4}7k z`%fIUz3{W6<R0_fevjwY6OIUbC9xQN4oFL`xb^6=wZ!+9$93#GYaDm(Vdrr_@<C3a zpW`Q^L5(Yqyu<eR%}LoSjUIfO6J^ik+_cQ%h|^+=Be9|@Pk6oC_TJ~|;;%aw>&$mq zc|upk%(wZMWZc`zh2d{Hf6kozEIE!ptcB;tN%kUZX8UhH{#kk%dT;W-%)I;8&-7`s zE`9G!V|ILe{OYyE&A(?7Z=PTE)JSEewwzvS*Yi&wr^o9#*Y%Yi?LGEXv6ElLQ#0{@ zMe$57uT#>Wg3kGrm_J?gIi$^sb;>2#AO}mH4Xf8hdU^Iw{q3=<<y-pYfCu~aHs!tL zw6V4RKDQ*(qS|9c@1gyZRy8du6#FSV^Mh_fNYT_A5fSy#eQUX1hn!f;$FN)7Z`y@z zGEXMY{=sLzI4^3Vw}Hu_Ydmq0q3SH3%LR{3sZz<>arjE*ncy8wTaI1XK5xsG&Cbpx z0)_9g9t7*_GM{3&$EGJIe`2C(?>;rgOo_V;d5(royha_i+uwBd$lP&pNqGCMeaF5D z&hx7N&pDd;daYb<$KmPi6WsO|Jy&3!xoAz`i=z|W`7+yMQv`FF184j=Qc}HVc~4%3 z!{y}Xu14Fo#(JN&6!%}Qck7k-^Me1E3dL)mrE*Lcl7IOr;F#$8L`l)N9O^A=PH}lP zELyyJ--5IsZ>J|+eQ8~hx939FCIx|+AAYPXiM--_bh9LX$2|7U`hE_JVpqkphP{6w z`PVCI*WYP&6XmYyzjJVG>M>%Pw2j&Hl->5msz?VH`}E40o|(J!tRGB!VY_0Y#`<-J z?JaG2MI{vtR{0B7uq@hrV&X(!<9i$5>`*<vZ>wQ(Uh&aS+nYk4&*>IS+<fa(!|Sli zZ%-syPO?<};l5P-!JEVNAyrv?>;fOVJG+<4sMK{YZVSBQQpf-CR%@EQ+`g%C7yRz* zd-zGkr*!hi@M*mrp1aJ{7%pd@4{n@tF>3y=DQ~~dSel(2vf+0BwP%c_lg>+BPv&$x z{6fz@V_V<<xUK(GrL@}rH!TZ(_v3r<!8+!D;d^pDnF51iB%D^Cw%z3zcDw)TvJ>0W zI$tn8y_PWTMyORuneb<Ip@6R)$CShON^omrIP~@f-|M;Z$9J0J$-BEk7VVgQP0P!b z|Mu&4AB!!kGNnKH&0lr<ep-aC@h4B~{_AG_z9$>vZrj`E6;EiZ@%uZ0L;by!YlYH# zSC;#`KiyTyy&W$8v_#!ePO~zroxx_U>b#~t4L>K1v-#SZ%JCi3OIwb(L~VZdvA1fq zWUc;8)t1h_X^Y%=S53=Y8LFDS?d|U4^Cl$9%(Zd9T3r4-TytJYbYO3&*Zyv|kFOk# zmHZIh@?`P3q6f=PEKqVhx%0Qxx1WB0>)ZdmFMhGV+qgdYZsBTo@zew7-=DLM*><(? zA6Iu+P+pz+vptjYzVuvDz7-y4dRN57|9aK+&ocylHQPmerWVbp$_x6?<ms8>Ts*hS z=-0BkCwglGz1BMYXj`+v;ggQ)x92Cmmel=dIZ>^(J1)(BQs>n?KJRih+2=?9%}g!) zsHfC)kg>1l+UHrk+a-2Zc2-a9pP;WDbas9LtM%)9kEY4^3kAd+^awc=t9|u`l2+m8 zC2^MxPjDW6Js}_^+GJ<^mt_-n1pd6a{HfTqUw!^^p~3UKZ32uvr8Y5Y6=_XuZP|E9 zJ64W;-JP<|8&iverXTiP`8=6x<C>il|1H-!)e<^qkEq-Q4RNI`8Ld65cmLXVGhFvE z*J-cdLsw_qdRCNo<J#VrH>T;nUe(Lc<lrUGsStY9?XXPJ)Z9ypj>k!TzItWD+1E*Y z)`iM!)jYXft+s}W2X}k?T=o4?$-M_MW`)~>leV9G@s&yF<R5oYR!3fu|AFU=f7-Yo z)LGcp@qfkh`?`_rbN~2l?8(aDb?1&;zH6a$;#!XdhX1ciU*!6qFnjBytw|sHb7o6? z&emMpDgD#S<619^$bKzuJ?}+F*Jo{X-*i-N<tO(!^-*W+V^7BH{BiWs&Y3xa`)@Qg z?a)>!WDou<uajP-eB5TQ;L%m;q0534&aXDhe%hmx7~!n3anp^CPma!^$ItFwP~)>@ zQ_YdA+H!N#^k;X<Qr6Bq8g}!cKtu4&LgqPb3mSAjaA=7Y-=4L;)a!@a6t|gfyiFcm z8@4Zabt|TK+O>e$j&d8!j`DD^qy_Btkvx5B=FDw{xhH1r={%hladFDxfWPM=?k$e6 zJP|Q9y({zG*{7$X&J<3o{#g`b$N9~wd*d9Y-{QArlJfSgc07ABSoT9+=Dq0d(%N&o zTWl^_WY740F5(vJjM+<8`3vY-P0YF&$`i%E^QQlfjJ1}1N7io57wyqKyK$$<b7fy< z?@g+l4`+ABuv!YdP<Vg+$_|OO+G@qUrkS&p1U<BbcF#=n*=(I1wQ1=G2j;s|7#MUp ze|25_e(aLbj@)9^^IW<+Iph0+*F6uI{47Z`ZnfdE)Ell!aT^Ppxi*xZ)!gPL6II#! zCGR}1$#Ow0)B96XG`3alVqs<I@-KO*x8Vu**{#NLr?e6uGCg|D`p+Ve_3$BG@z+mJ zoLL!rH1d&P@42Nv%W`$SMQYAvEDB~|@L>8PYNFG&`skG_SGV8T5FxVd$zxFtp9NJj z!#X0@G5>D+8gX0GWZkL5qVd7*39pa2#VoJ>sU7+)rI5Gf?1Ny=Rr{uUUwfi8huih@ z)0nF5KdRUh!?uXdY&9t_x-H??TBEo^Q@eHT)g<jlVTr4^S<X6hQ02%O2Dd%6Dn3qU zZtYuj_}w!Z#)FLuJmn58U<;V(z2Tnt{lF>8^J3a61^3PS@c(C;P3!A)ixXn{w)<jd zf4XZgaV=SCTCRkr_j<Fs+j2{5Ct9DJXVzo%wL~PoedVTO=IO6`?H26(ZerCfu=B?! zLzA#qZ!IkJzs>XE)mX+HEbYKq`EONRe<#DQmOI^FPMLee&$FC0Wx{&Jrl_eiKSpbu zOMH+TA=Nh1&9tK^v&T`j?or-tlS8cP3JG!_59!)3XE~VQ%=V|_sP0Gq?fd6>1^wT& zsp;G{soHtFj(#a(tL@4!VX5t6v(LAi^-}%tu{~3!%{#k)8;k7JJMBIO&jf?y<Y!+p z_VpB+*efWlK5bgp6|b8&izd1H>#m-+FZ0&65D9~O=JIOX`m<TP|AbtMdgbi$^>*+n zzQ*b`DJ!+U@0=RWYVy+2HS=k*!0aBjeH*gYMvB}xdBr1}cb?DGEzJuub{!D9b81Vi z!jbn1C*LnP{@$_Ye!tMirz>oGZ|&Qsq_dZI*_@?S|IW`mkS=GnFZa;Z`b8f;zga(z zA$9L6*ZqsDf}cJ5ly_o#C__roI#!nMP*Vxp(^0D<u0Hs5B=UdPrFGp)w>e#2x6!sc z)td3Z4C{qEvMv8A?6jGqQkRtbT}SKltwqaiL~k=qPLK0H@Zvhl`N!$cYgArrDKE9W z^nXUTP5aVmMi1{--@d$~b*0GL?CD8QH~sfo`@b?i{?YA8Jt6yhML*9C-ZJ^=t@~A< zOMadDeP;K&I>(q#7eoDT$a2oJ{;{Lqx^a{2hF?i9cgl-2=j(R)2TtSVSaa&)ez&ha z+q-H@wD+#Nf1A<eUUB=|R<-AMh0W>~eahj_nWFvk(c8Nj;ia>m3+Da1duH{i=^y6Z zT>B*Ob#;2B-Q9z$SnqFHHHk%Vo4DzOCu{h`vvb#9{B%39^v~1ld#imzH%<skjy=5F zV(qe7ryd7<WZXabb@P{9HSZpo&a`Q~_fIe9<G!;~&31Hs_WJ)pab9BRzk8WXntH1R z-t4J%mAUd`QP<8*)2E%e@Ts|ER>0JSvXZMOD(bV^POn@yzrOu&*|XQ0bsgHRx)a~b z)R#$K60|MwO~KY@E29iw-I9@hz4BMgbgMmkGbWT(Gps*6UvNcHrp8h87e9i#uV&23 zV(U;=Z)Rys+pfBIYE0Oao`bhn%)Rh5YmV5x(`9F`gsZ-8x$d&4XT90C^Uq%T?R#)- z=}9yDys{bp^go_7__XrXu~O}Wx+z~x?RcJF75~b0&Mx+kH0sdd+l#q#Z!s`16fiO{ zh@uVxrsgH*r=%9?6;!59IGuMyfyecGP3zQ9CD#>qd))4pU(}oBdW&D-V2KTvMC0Ze z`}I{muZZ%tX<1*pPEp>HbB;0l(wHRvGB1h9*&esJnBO+}f0}Xh$BHSl#3vi`2p;ZG zJG=b4!RDh^uBrX1m9bmLf493y$oF#2^XV6yiW>LcDP&q>#dTjnon@!sf`I$S82j3n zKiB%~*0msKilRc)7K2zbn>RJJ$8*HH*XeE6yOb6a!*4TpeO%TA?YSBvVKX-B?)+zX zS3k11Wz({N*QTlW_HLQ`Yx22loy-4!_sePRy=<<3we=SxYGCA^Ydmt0k%3_k8v}y` zT3}QprxuiC=I0gb6;v*r;+uEdK%n)z9qYr;-5LBBVg+{W7Rk6Hli<^rz@*}?+TK_C z`&>ZS1rb)&?YAT*$=^5MzlG7u@O*@u7pwfqhl=T^<oUw8m8-qv_rK|}`Tcj_-+va1 zPnvJtsARrR;(0rxv6`9lvWy6m3fYTBR?eLE`->%5cieuP!@OVQ45yOZx_t$a?$>9> ztrRe7n%(37>*gFa=FXP6vsW?Ox_n5~7PMb^tD$&O*-!m<+pUE}C9dXN+*4)e?b>?# z)3LIB?27y5Gd}XWWV`BQ>7M;Tc9qW!)>b!Pwciqx#iMv3TmO|h2lLa8yt_9Un|~d9 z>T&#A^-&wynV;HL?mPaSQ!?bgMz+G%V=2o^8+eW%y?sAS`CiPDy$8Hky1nem3EIys z81d^*!Nij-!3TUJxHG>k@1DN(X(dBeg6xx@Z_|%1YE0eZ%J}N$?Iqf;?b;rzJb&~} zC}P#YttGlgBPMS@kiU4H=&W4d%zbki<W{{9eqE`UC+F>Z)w_%B-rV;MeZ@~MeP}6@ z&h{*upywGlvnM3{*3;9Gm*Q%!&HV2qW%yd)|HbeK<$XPk35WTvEvw#b?zJ^c@A$&D zzVDx9j!ny6$vM5zHnXliwgc(7oxf8oqy7l+*yZpuFvRLGFv!89UDr_0OwUL!C9}9h zH#09SU*E^m+0`%D^=?#j@$F-xb>G+DC|VYr$+m2+Nv8Dk&W%sn);edp?95Y}+^)Jo zVLRJ~6M70=f4|yJ-`lt(rTkZz?=n-*H#avw|1|ggoTJ<yckXx9KRs9Ied$W8<#9Hj zpV&_+y;bt)_0QK%e|*apZ(;xV_4W1pHaj!SdH&80U;pj*-<V5g#mU>(OWixQx2lo* z{rdNHQQb#hdF|O78LRt#y7}s@73Ib1c5Bvi7navnmluD1s9P6%AvpZ>*S~i^we$br z<@}MQw=QI@wQWOD-oHcH#-G(^ac-aNs~n|jZFs<wJvCZACA{-eiRgNvts9d{RtbcC zy%v((8803uVi%oh9<f*QW3}Sk6$Rd*oo5}_gr0QT$Mo}B&+WNC{ANhmWmKG-lDvA? z!wCIke-Ulp`VCdPrCV;6pW+JO6nphh;fckYo~!?t{oOOCSi5bm3`@?gtwLgD(N!mI zD+W8{rYf)V{L(3u+|I7@cIpIGPtK?Y$p?}8#||*ZIj)t-=Vg;!lgXvHmP=kLXxD+u z54I<VAKY|l%i5QFRQ@lx@jCH%QN`h%73n%JFZORU7ce}z>f*zL?#BA5ZtjJToZ>$P zZ4TeY@ICT_kk&%$f8~m7%3hp)$Di*J`PZqF;HquCGxUYco$I|%&uNEs{Pnx|@!;<* z>s4;<O#LRcm~%-?#)XzUkIQzsdv0BKaMs>Us$Khjd;=X{V9oq2@i4pN;|FXTtbQ@v zNtwzm<oLv`G@&J^SzG;*vF+s3^=6NKVh%+8nLao6SzP=73u^qkqyndjR@PK7z7pJW zl~0s$Z}eLkR-2=e>Wn*|s$99YA(~T@<K<O3_o)2PwQE|Re#!O~``;41W!a?y6VFId znKipNNuCs$(6Y$5IiqBCVflx}#$Pua|4_6=(PAmn>-Ia!j&VHp0WE*le=Xbc#d^om zK*^drIsaG}7OdL!hVPH;j^rE-`>gD!9~<wS<lDl>$rO0evL>jlVNt%+|BYfn8!A0w z3~d)oFD&u#m>rkwBpGy0zL<L=Lwdt{b@p=?x&3|}c=0xX?|I&8E#0F9FFq&Nn|!;> zsqyBa_oW#H9Ll;&8{Qo<Ok&#b^3TSoNX7{^9(Pap3V*Ucyp-vp2=j(1c2iQ0v^L}= zuvJ(bl8)w*yOt7W$rBNM!pSjO{}B`40=d-NhtF*gSRi|7j`*X=-TT5fd{$NoPX0Fi zBv<&USL_=eH49}3m|OQT+<Cl*_s`3{D%%_bYLsQI)-MiOQ^4O-*CBUI>rU65)}0&f zzbu;G$Y_z>AjL2<^J=qNc#=qSX3abfRxvZP8YaPeXDiJr6C<8ZY4%Wj?S12n$rO<d zKKZ5WyXXA+Bht_8cXjd?{UaNH?)hpkYwvrHJ?o{ywgw&l6S8-Uh-QYkmD}nyS$q@N z@2VT!VOzxdc**3oyLkMrGq`M<rYhR0w0h#j73y9KOQ)=yeEq)Cl;2YI*B&3Y6bLrE ztuJ*!J!ZwyKz<RkkDNyfp3d}`kaELp3s+se*H0zyF2=z72d?=x<eKL(Sld*v+;hC> zI%{&3ooI&gp^w5*f_r?PzPp(<QCQR^^_JY@+QkQEn9g{V`RP;Y)wnZ{W~Rl7UH{E- zdV`1QgobMj65=mfdvi4UzKLBgb+J2kE;>Fz?1@|W$$*UI2bZQO{@(rQW{}86?fcCC zysa3OUa^UrJ7_vag>6z2En+ucaqX!9pJ{nWgp=2*iT^mu?8EHRv?pdib<;PJnCaq} zmb*o|;7(CV$kWW@(>`3fe4@XlVx`H-;|VP<Bb{vy1;(sDeX)mc()Ov}gq`O5zR?KK zd-`RY@|*Sm7x{^a=iQW=uI8|Qo2GRB>d!YOt^GerZOTp@I3G0cPD4lk+l$MR*iYq% z91#w1bM@f!dj5NfO3AD3f{&IT%=Kpe_N=J4#oXJTZPEJYkJfvvF1Wq@<B!J3&aWqq zUOoQmW}2G!W|^s?A)XT@Jrr6R&K-HwA<kgg63le?^;L#xoDbPATo0-4jah7b*Zb3+ zX5q)jryr<#BPOk0JmG9XMPxMVd=r7)?7>PC=7$vD|NpRU;q4~T3CXs{K5|}CwRnG= zcMYqy(}HikEe`$n8_vaK$<{vZbiKFzsfm4(;l!ttWzSD3J|tFlLEf1Ct{2PQ|IF`W z4j5hKpOJ8(h^JAhv8hjbk@v;Vk;d;CW7!j}e=g{F%G$c3->kIPhQF&Ji=pmkJ!4>x z><vRfcALO&YbGS9&EfGqV8^xl)V}-;cTHq1=C0|v@ibIhdgZ};e{#w!HYjnPTq|9; zx%o}0UzG37$Y_W87cOeZX2s9@A^uM2R>Eb?ctOU04HI3${7?6Zw=fsBzh14o;=D@! zsyX+Q`qy!6&C{D^`pf>C6W;``WGk!G3(;YYd8+?>6rM|e?+)3Zw0+yLozqhcY}_*4 zp7{Tfw9$7}{+@S*S#E1!v>sE!#sxKxSln0qkU0?On{ae){?^HJj4YoE^ojntC=|?U z=yP=0L<x=H47b{4EpEzBXXsZph8C6{5OICq8Zl8%U>nyyo`d3Rxi4+-Un9Y_Z)Ugk zRR6YTTS~S0IdAp_aufux=NTVdoE{;!lO<C*$BgMjpp4?;#{cFUmHcm~={@vUh@2Ru zXyn1QHcazdQLfaB&K>*M-&6^|dege+$>ctP%;+oPS0C3g-&ysrgColFYwumfe{*F* zf@&?^sq9;BB=zl1O7*7)YJr(=7H_D3zOe78K+`wJatZZ2w!3nwTXslX(h!dRt}E%h zan8$gsoOS(GOI)gRuo@56kN_AB`dFY+ahlU)1m`B-d8t%xEQOT6UJ2;JaHl?*G0vp zv+bq(70$gV=2`h;`V8sC=@T4Jg|>0%hDh3|&6;d{j&EhbM^8WRuU9gzsy2mv*`NRC z!qv@J&;I@N_AAe%_k{}8$+v#mPAE$M{p99U#{)BcEH~=>)D{+v^5?XhBKmcP=8G$l zo0T*?=X_2}vRNT$^uh53$I<CGOofZ@9ZG-eb&$<SN>z4S@Xsmt^gVBK9pNym6}~dX z@p#JXl!cxlJJU;l*s*{1oba^LR@Q+tR(;OFNjrT-KZNYtcy#5|)CW~Jr=0%ImcAxL zK9x(5;|0UbNQDbw`X48>znIPUy!e8F^2Pw6Sr>lGmM3<^FHbx7$M;EN^h=8;&2mbn z>rVtMd-dav(h)14w9gxJPOLgqAN{8MQ^%PlELZoo?o$!w+P06`{Ym<wI<Di=p-XpV z<uK>Yb@5>kd-uP|y5F#uN2X08p>6X?m&;l&X3k*0@zLVn4FmtX(Q`}#Uuku0yR=~* z=Yfk4w2N7}K0ZGYdTinxw`*33JJTg<q~6ZmX_RDmGj`(2^BKWQwyazkX=8J->&fMv zGrUyzx1U>9>Df5>_9{=&zBSV6Cta2r_NgV$ys=WIlu5X~#`|pFe$EGRrW+m1#pSJ5 zEb5!HOfGS8Q1WkYq0QWrEbd##Y(9}QV`}flc`~u8%lfV5_={$|%Kh~6bN%I6m9t#4 z(ijgb&Da(8@Y}@e>(4ZFKYGi1b$ai^WjvS5yx+=B6AU`r8^AYbl}J2GqEw3BM`^>| z4;VEg47a&Nzj&$ff#1$~g>rEJsxu1n8qB4RtXjLJW_`(>>L0rs>={Mam>vm;8Oy~= zI-P6OEH6`TY5Ojo<r9C%v@NGFPfU{6Z|{`a12gyi=dk)I@vPnX0$Z>1k|kzWSKW7e zo8P}-f%ON@X(dIPB6XJ^eKpBq4r99)c!+VYcGBg>$+sr|%sH{_fq6XdxhV|WuFQY_ z$jdrw?uSd;#N-?6n_~G4ITx*(&1}BmN@a5Q)P#mT9%sF0HHn@~wEG?#^p&af=)!}A z-Lvd_AD`|l)-PPgI>A1A&Cw!TVSAlxr%Mgq9e?__-(3FP(c?$&-c2gqzbCGH_U=DX z|DMf_SW_ofAHQy0!@G=qjCDs|uJBgB*rFY3rsgZ@QXC{%@QT4#Z)TU2QZ?7cgfqXN z{{8)$Y0bW>oiTfNN3Z)=_4o4ESNjC)WAE?%E4U@*&xV@)d;ZUKdU5wtUFqIu*V)D5 zj=g=vC-d#$-$#CT>UQkj8yR1`_37<HZ24ji|K-fCmb`W_H@+k4cbL^C-8bL#Qn6J5 z@5R>sfIq57&OTdelUu@PAt+~lU~5^+n{!jFww>g8^>5zPWgCCGzRom0z47~W%Njnl zqpt6_-g(iccYb<ACF_Oxc?z}>Y&BOeY!EJK@w1lR+A>>*V}YW)WJ%WTjD+~5yL2Aq zmK#bwJ$CYZ`s2S%olNJxNbgm2azB+@C@1({_s}%veT@%Zl>MoxGpO=A#m<-7bXv++ z`gbS8&aiDo)^i^|e)Yl2p~~{WSFZQhHs4P7&`{V`Gqr)GEqzyo;`3IvmSZ!eU-UlC zI$i!O;%M^PW6_TvyG>tX>DD9pQ~GXYdfJXz{yci~_6qYyJ=`dLm~pr1vRkj!=F8SK zEz0>7_h^cM<-v}w>p|v=pJu7du6iT1bD>hjGhcx{tOp*PeS1(^o4v8Qu!H4qg~0RF zBZ<4#$eF}Wy7uoY?+J$dmJdbE;^!ql+>O!kTEm&q+OTKGXC={BI+}LxChYRR{PoAC z4>w<LJK%JBuAvR<QqSj4HqA|2ci?uGYXwt)yVR+5AvGQIjxUh=%O_I4>g|WClS~AX zH=8+@Cz|!ncM{C6Y~9d&X8QW52R1YG_wB#L=$PF6aq-P$^&@LjOeAg^3(q;{p1-BU zw@g~da{GR<g^KI`OEsDt)OhLbqkeahii`i`MLIlxd?c#XVvX&R4;Am5ock(cw%64Q z>ppNL9J@O6;?6C)ih&B(FLr6pb<e(>J9EAavzl{w-&rmG!0yXCKR$bK(#`4uqwa(p zsgr-~x{vjkxy4#EtPc;52tU7<&3(UqUjD<0Pwnq7;LeO<=&1UzUjNDZcMtQIoU*&8 zdhq^VaXpPc*&>%SofceW+jPuH+OB1#+eE9MQLC2~F>$e|SU3M;%hwcjdG=;{e7fL| z45Npu?<%qgFI@Hh*CxLzJ-u~4-`juebC|Z+@yB~T*3#EkmRT(j7vOaGxL9tV^@&qu zW#-*GAMrIj@BgSYWmZ)fLjjYR8K3@&ADQ;*yc&Mzi|#l~QA~citve%4zN>IY)ZG<d zPI29xz~(EXH>a`4WQQBiyu`IL?$!L79v|S#VI%wg@!qG0_GZhRU!vH)<tbnO8cT^w zsgLy8fBX*p<5bl=&wcxv{g)owd8}HKKC8`t;(h@wy$_8)&OLqlT|?=MG6ze{zCS-~ zE>zt8X*Oknp<Boj3#HP(Y0j68EG2KYI!trs_<nwG(J#3jzq4xp3WY3FjX!i@{v)}6 zbB#qN_g?Y4UvS8~`A_3=i68$x_A`G}+q`z_tQ7)Hb2503@W`ya-6v4sz_~!D<aqwK zpP8PIUcdVi^Z7pmVt5ABPv7}t<qLZ;28IXD3=HzP`{}-}A&xGNA&z%r{ubT#DEdF& z-|(SYy3xaSmG`%H-?|!>;TiYYZ&}Hbl5^9tPs=ee7oAgJGiUC2wDeQR$~^~cBX?D& zF$gfE&OJZX{!r0cUx61dU!ITuZt`vIiHZ}(c7G;ca9j0c%G@45E8~5F%XMP1Ca&`P zc>3cD)<4@$m`krKU;gINRhhap^W8aXh00W?OX-#0ThS}AtcLac`pr6~%O8I%+bw(Y zM9-!gZC9g52RqV}XS&Rq?epAmT6W^GvW<po4Bz<_DXjFr8NJSU=7w@7sfT)eN83*S zm{PiWKktpVveoQccE4H98!Mmt@z?(F@IO0?RhcJBB&<0+@7K&FHWA#<=GB}k_KQ+D zwwUp^t$&dKm$jwUuWy_A7w?#}#X{FQsLHhO?WMFBn|RfdYRmfF36pQKTJN71>yy9y z`exSZTHEyU?$eC3<L{kWumA4c$4?FKcFoYsdww~*ykhCp2Om3PJ3Q2kntf*kzPA1F z(yFs$X5?p!H0guF(;Al;Ei`ZYsFKp?<>cM!>a|(sDvQ=NEtaW=pE~xc*a>@W;MjTQ zWBD;&?unv;o1XURx+HYU9=3{ly4v)2<4TTw9y|P5f4ZsMeEuVJ*TI4Xm*!4eU3%<_ zncytO)eatM*2hjhcoLuaS8DGz_06W|B@8xSlHpL%-gWZiOTlADx{kk@G%d$qy1E9( zt)&Sz3ajQ>3y9x|R$l(VZ9Ai8Pb#O##7t3siR*{zJ2Qis@94&zoh%^7eI;%2Bq`VL z47X3^<i3n#b9=M((vk34uR|JJr`^)vS+VZ%y2aO)>PlUkT<h(W+bY-a%QQoB=A_QQ z-y2f9SY>+H->(kbynRB8$?Xp;O?*;}pAtVMyp@pM@HT2f#DT7iTEFZqo_XE}Syp^i zDR9d&&7P@r)Wc2TYsd?R=`U)_zv$OSg*E<I)AWkv^O=+ds#hdeh$hWh&a-5?5~Cuk zP{{u6UajvBt9@R5YWEuUEg#}{-CiHX`^WL--O~o{w`PUDUG3&!b0BYtBU@s;bS96b z#Le}kRzc6xeJdDaSOmBZoHZ}y_S@Rga?PQyuGb@Ye!<CJF4c~P$>G;|UDX`tOn#vt zvB4!(XPR_pOrx!YXlk@cv@>^ekn@FE{fsUf+|J#z_)w@hX?4uy+6C7lY=oYzn_kZ* zoSoOJZe7iLW!CX0(<g>W|1gaB%u*Iw?z3Unkq5$eq;+CD?_TdHOgrk4!v33S#l=;f z%y-PDzPQjeqx4ZkW9vb=ho9yp+*+jP@#J2bZu6HMo|_#3MbqA1I)3D{-%J1A1zTIY zw<veb&$zji+v!-@?Hr2*qFZnOYik$y@J{jS=hQckgH`A88CWk^$bM(0R{jxP`MHiU z9|8pDtxb8T=$Z8(vTf%ym6to$PkeRo*b(OYOAc@fG>EXhOXYkZJlRC_z)5C{(ly)u z9=^0oAnIPT*gIC|gERB)E-H9i7HRqNibhoA&tBb~j>;YyCM`R}s$?UU_HNvvvQoOX zVE43xyHqn8FBzYx6foSfV|t3v3sVKB=gWN>+@^fH-!R2^`YQA59ZA>3*>omsIhI%` zI@$Qp<04hzh_#u<Xa5BCufG^qA+=#w#oUsM(R0paN=_FwWjg6LM?mv>N}-1Nt$S`6 zg6|L9pX9G{Lp4J7Ry32q&iB1;P6w_C@@sHji_P)>!K)Tn<>cDF_L)rZw8JiI#e%<Y zRVvx?A&}#a<(}hWto0rx{?nf*FLW*{?K*X8(!93ce7Si6h5L9m&t?*PRApuKQz&T` zcb44xiCZuAb;Ld|+M@7uIUCRFXwId7-8UzRzDO)nG`rA0jj2VpvBQr4-@LZAi0wC$ zx4T__v`}g7fx}8{?bo>`on+X$^@-ul$6=2@b2e_ZDU3>b5u1BTaH&FI-%QQ96ThUe z^)I{S=CgJkXT6u4<g`=|6*dn35bc#a8z!Ws8*R*dQe|R&KyK%ODG~x^1?5qj5BlU^ zjBSiueM)jm%SPMRD>GQ1a+$hKkan`&@~Q37&gR$eHJHqU*HwIQx;4FVd-jb*o~aX7 z-*MQ`AoWGKEh%=<DXS7uw{=3NViPW{2o7>s?V5by%{d4CIibl1SN#4tA#im$*TxF} zdZUmvTr!WpFFVE)%{<wgv5a#<Ou)0ovmw{Bt#%96pFGHyoT41CK%P5%!-W+)DytK0 zBsazjEK{<6-nzpkD7E`e6X$d0wXT`n(czmr8A1+dHKj<LO7L&#<5Xw-!KTSj<mbvJ zv}U$x%QK5RUPqETz1mV7*;Jb2+Z%+wa&aeZeO$Or+AZpUIj6(VIMx{re2XNn^E<HB znDY8J`7eK=-pg^v$31f&i<ClXL5s<=2LVS#Z*;ecw5_vP5W4pC?Nb|+$^$-Lda!`? zSU^v9_?ypNN%<CP-T#kAy*>C?>FkAr3q#J>EMaNu)y?^>v(;!thU_VIg<a3SHw6^U zb$qpXg@)4}o|8UDCYZgcSG=S-H?mc%@T903Uu^J?)$b)-Q%Ya&e2^)XT<xfuV6ud_ zXKmkAg=a!vlHTXuH1U|-5xO<t$WN9<?S?VlU0f5}R=m&-RD8X2uT(?Tvhx*dgdQ5% zwPZSExt6;2UzcBzf2GVqW>-UQ<b*xv*F<M^Ykl5Xb7Yy|E#Jj$rUIT9)45dBic%vV zY4_O&3zYHBjhopay|pLo7?0<M9eW*~c9_2{-ym@=X`kuNGXX3cBW|X!34NWNnY1YC zOPvlwaNcHV!*x$DEfJq`>dw!%Rey6iellBfM}F7c#iv>O`C#QD{XbsvWtw*v`^~;< zAhKZF>utw+*>@=ZdC|M$0#m@zU-mituJ`+H#DrK+QclV|T%P)5t-E{2<x9!?uUY)$ z@KOs^`qSoG%yB5CzvIV){HqQszuyXTr}DYna*W(G>A|dJy95tKc`r#?k*Is_qv6*t z0_R?Q+&9&OZ`z(ie-(ajlVdTSsKCXu>Z;J<z^{*&D+>7iTo?E7?+$k5S9^4{_uObp zj69Vf+fyrd+viHgqJVoRS>9eKV}F&_A<uKNRa-GP=j|GgjzgEK=PX`uXrh>;#h(M$ z^{0mMhvpy1jOEbf5$&16X713hfAQdf%Ige=t26}K`JxVp*Hwh=+CRB5H*xESat+f5 z%UzC{aaTkg$yu>tK|@a0ZTFA2ITmbATeQtO$7#m#R+(>xKg7O0<*GGV`0mZGvZ}h9 ztq(p-n7GeCX2;fzB3Y69U%j0=;p(G}yuK6WMSJ|Z#>_7LK=G@X*JH7@SqBnMeY~@{ zbq@DAk&|!OGP9ePzgXBBvpX&7tHUwwElCG?ryb8-p7`#fQ5VAj7BxTH+jl<4yjn6P zVfEBm?v=kb&RX-WXPfT1H|9<=drs}>xR4mC)bPy8YrACqM&0(M+Ogr`r?+|-T0NM^ zvSq=g?Wb4|S;;(lR^F;7{6_vbLoY)E=Q{T{Wx1=fdp5UU4csWq6uE6_kjdhO&$MTY zb-cKBvv{A6VCnYqZJ|qC<=TGa_m*Z~-4wmzr>-TZ-O<BrVcu*a*S3YPn!Hh0tWAmY zbFaSeH=T3r7SYeEzsh%QUBYqy50l|mEA3MEh2OSXcs_4`bA#*M%I8gMm2_7-Xo<hr zaGGgp6!SLMR*y4px9?KT5%pdp_H9+qv{S2YR^?e<+WJH*eTP=o!@LV6=R0Px>}FO? z*_s`*L+7HaSk$hws?NQ^Pi;+tLL4jFoK$&lC1>wmzrrAU>aE3HfBL$@$~UD|i>kgd zQ!bm%&}FbB=OY6Ti_mSwEly7zHeJ-eef47X(v?w}i{*0WnrRz7S#Zx_%Y~{)+uEO# zCfz<5p0qouV%ij4*+aj!H2ysk(#9{oe8m*~>8HeQOPGa)>`S&%3G?N9d8Q-aMssAz zcCpZ1t-7x^@zzf$3%s>%L7MvUTbBGwyrOM77O1)g9@1c0cC;(I`d;*UN&Yzt_cjQ; zYn*kkAZ}%`ldGWpX4Sx_En=ci`HtwGSuM~1iT7J6H%rIeh=uPz@|>w<jhowlWA@(Q zA9JthuFDC|_&7ag*X0-%6Sk7h32i=13=<ArRCvU<g~>vPfzjfsX_uQ#XT}`+iuYfC zmEBycI(4h}m!}=E9?nY*`HEfM$Udl@aDQFFwj}P;b8}My(%HOUq(vxYFG$+*<`SP* z>+Xn@Q@URY_-~|GU0JoluJ!E?TjiI@^F@Oq$~PrkcAdU=md>*7T}JnO^Y6#pzq_e? z^3NKh-E-sgZhYNi^{@EvEZ?;Ko9unk#TmGl&gG~)ux@|myMUlO+}g((mL9)k$?(0f z<oLF*DIpJD9bU=UQfIw)?=G2!ZE1&JzWG{X_510kw@=@c9k>^F?)-g*>yyJTuYUP< zeM;B*<=Z!(Zk3ImbtU7j&$9&|cCS7;=kA@e`Rl}|i{;+9{9nTVSwg&~f#S<6eSUVi z<_qq=ad;fHG%9JP3sdKTsE=Wro*M;+oMX<}en;X!pGI5Nu8D0%Qvw@xZmFAD?)=GR zRl0&N!eqA8+iidTa@2j-a!?ANq@U_@*gV)pf#*TeB*FS=YB60aJNfr$@6FD9`g3xs z!I3q$ioA|!O>2l_z9=seY}CA0xyNn!$Ibt)Y-Zp(e;{e6N`lXsbsOeiwfO&8C&l7r zO2)2bcmL;Xx$oV4<IC#RR@07jyjGc*`GGh7?fgnbQTwbAKG~Te4|4oYhj3Zwi3oht z;A5O`d-wozvHP8Lu{W%T?LPc)yDcg0V#vFu>9X=yH+D~3{iL|O^(T&K?ic!h+sbFJ zdwROfbdA1<NcIR#(Y(|<*Ixf)NpM+ean4eqXUgL?CB4Tnw{=cG*6{cG;O_Zv;z<)5 zTj%8~PMtPV;*pTMWi00Lm94NhtnkK>!_}V7{1c^>nfZ&IJ{=Cpn_0&HJMoAb<1@1< z)6R>WxVVHxOLTel_G3a>_C7LJZ|c8T+*$lPVeOQ+uY!;7E464pC&KXGt?7|;OVXnm z>Wv#_`{YL7cYQ8<bK?yai(l7ru0)w0sq^>IO}@^n8e@LUphL9H_EJmjBKuvtBCaXd z1~Tjmj9wFy+r2<Q<K+HL4m<N_9q^VCWLOjv_<F}<H>))T(+wX?e>m@lx=O@6KQrUN zn-kZ}m~72_Fe=>5Y<|LmjfHI~;-)F$T^y&peyfBiC7uoxx-Q+-v2TXvk~=)gJFh*> z+-7aqD5GSuYo)b}gvoi&Y1Zt!W=Y>&*y43l{OFZ!NmoUG#D2K;PGb6I?jwS^kB_eX z?w^<UVB*XAIg2y{%sGt?p6hiFbzkw(JgKz$LyoxJc7GLvg2&OnW0zM|E<TW5DwX_g zW9aV%Z@#z$9a)$-;fDgpO_gm&G+7wsF4X>yuJvJlpjoyhX4?JA<fUsKtorSho_eH8 zT&ptdjQrLkT>Ed>f0ZmPUg4X_P}kV%_%igv(^cEKYBFb@b%-~$KH<-Q^Z~PJt&X$6 z{sxDf4-anKdwY)gRb=P9jb)tIdPJLa7jvFlF4yy8V%Jg)_g5K8i_Xn-WQt9g#aCu9 zy~I%boxjx%McWi<o*1)d6?0nt-f_M7O?!4q414yRj7;-YMII0S^4aa*_<f814fotz zkG5YsKKEnm)ToO4I_y^u)?Yg;-6i?+Uw>%OzI8_qq+Z@(-S#PUnoo>%lT%INO5PPG zPU%gI3KF0Ge(SWohd;cTFuV5M)Mo7!ThqEvE9R`6dL&qDm9xaTvme4vhDIGc+v#t! zX7#-fJH1}Y>rAdm+@k)jRiIj@QeAlm$2QJrzc5P)3kNNacF)>PyRJ>ueyx4^&ifU` zi$&!g^1go-E)iya=+FlJy47j@_m0--|MBiz_T`g*?>CY5oj#r=s+(u%yT6=uI-uCd zuwg=#$9vh2GNq^59~O0l@SdCh?pWZ7_H~(w#||6zw$J<<DwenGclO##Kbvnj`f>Kw zZ_X@W^nVnfJ6pWJ<eZ_}qlt^!ZZmv7qP29xZU)b1ZFA>s%D*{buaM;Z-Cx6&Cde&6 zv2}LrdOM!$Z(j!oM7_6Vla9;WcXNSaY~}5y-FL0SKdgVg`0?Yt?(2frZ2r*5%6svl z@AU^N3Go)odWxH_-rlQuIW~As>NT$A+aK)aE?_<WPj$u4(sJW1F>^M}Ki|>aZDh}L zKKFK7#cuDTnyOn3zs+;v*!a(M&BN@D$^#9(hN@S&3qA#RX&y>>_I&f?i=Q9=TEFto z5$Wq?ie~Cfze)qVcV*w<S$D$sc@lf11KaXEmMwqweaqiiYIR?x;^Nw3*`4MVO%b== zS^jkhe7Lvv+4g(WEw61~{5)Bs-J(x-0%w`m>aE7BSbhoeaG$9z`?j0;&ff1$+SC2Y zSE`hIto_~dS9iyeYW;2Q@4j!p@K@!Wd)~79$N%yvwS8Z){5Z$q^N;^=r2OHPSkbsk z%H6|yZoj;J(pScU{h!aDX_GL!({L?VYSqD4_xH}`C@-_RV#b>Mx8>eLm*hRWE|~m3 ztM~DE4BPw%g>y@-_II2)yLV#G+miz6GvB63r7OHqKGtykLDQqhnjcelzP#{uTKh$r zl*&Bc1AP%2KY1;G-1B%%(MI;V8Cng_>9P7!-mfZDnryjWemnSQLg=|OZQFYHNcmit z@$`SsV%D2d-r{SwEfaRz&=*^<Md&8`t+VVk%bxSTZ00#1$M?qW<Nf33*;!7W>r+ra zy}!%&hn!pbb}R9}e2LrQBoxJeRQ?dq=$PQj<UC_hMi<j=N1=aGy>4&j9pAa(var@f z#ol?3s#P4GbZmSqzWBXgoXq}|H(M1_pLt)~U0Gej!tf*i|7NNDf8Xv;<FU46Q#pF$ z;>VX4FJ9aj`|<4Ua))O>-Yb3nBQSIF{_Zo~%qa~Qem_^K|8}6y-$A2rpXZtUYi7%@ zDS6~8_&m+cIX`R8O^eyiuetx9*U4#62vL@>d+p{`db@9@<c2gJwd0%LP0HTjwP}lq zjOaT@wz6;Y&(G<!vDS65PB_nH-FW)^tEReZ`;_YDEew2U>?eAjZAJJ0SG#rl*BH#p zde*Vg{(+mlhHrU&$Ar(uTk<c7wsf@i%1vO1=k{})`Im3g&XaBCH_k5hTzGE6-lc^l zlVl9|L(To3Y`ph7fc2So^1p6F|EE7@GjRR!;hFg5g5bOF-KvSE`&~ctub(cxz`|uo zmHyFf5x4XMBDY0MvEpHvP|x1;;J4$t?k}e0`?l{XmEWGNyl+y^+PgfmzELmch`Dch zH!E)Lre`hL@#(QGv8$KdcxW(HQMWGBUp&#%;|vGW{&PhEXCIhlUb**9DA;r6yA#%D zB&Oyc`=;j{SMV-wBFh)!gCC7nyv><B`<UzuukOQX8vh=yG`uxonngw8>(GgJyw?gb zZU4@YovB#9kF&nz_4?x_Aremw=lNXF)Z^>fbnbmIM^6CX*$}m9UbRLh7rUi4t<~*V zl2S8am3?2r+Wx$4tP1XHEVk}TO;gTEuiLrfuffilbvx$7-ih%~-#(we^Qm!p_vxQG zpT1pcJND_<*_4eH<+l4bJlwEn-wvDovk%{$VYhqk$=mk#E<82A-o0EW`c8eZZTs*2 z)gM1CDcX3<yYjQ0{?V`YzR$OpPuAYPBlgP1s`BDe+np7=Tu#jSB$8^q?BMZryfaKh zIA1mFx)b&%YirT_jSZn9?HL6#k4C&xC=p$JwWD^<xw!ax#YIKoccNs!n?IVX{bTus zz5h7G_8<CM_0K(K-TlTp7iZ}_teVOAY{N-jf5TJy9MQr`Tm2?Fa=j?|Cwh8Q#*use zlLU5e%;7uf^WsvZu}1j!r|pTXr=C2w-(&HsZp%5d!vE?AR@(3WpMBIn`43Zx{xXNH zzwEbFFrA(JK7OB#rKQK0dZeX+pt0w5eLo(@FfcGgGcYj7;2wJp_i%OfVLfQbb=ZK1 z^+N3O3paR-I2UgD!L&45Q*mbOk1dSKtdVj>zxQqb+n}Yr=k2nY%S|pZbLl6}+o||V zFm3C{r)9q1P58c;aaWpEmb%}ypLy6iL-YQb<CfjCoVw<@Af1%}a#dn9QynJ*0|Pq) z1A_`~SC!-!#OI`zrRM0BRFrsoYI*6Nc+P}2xZWj|-BiTHz+lY6z#xm;s32Eo{~(vO zmrhQamB7IA;I|F8#h*7aMGg*;DeR7VBB$RsY-(<>t5usi!^qTh`<?^gcVp)+XMS_5 zeBV3kg<6Tmxx1{5#5nyf+V}C*o;|-V_CfliGpF|5{p5YUvuPgd!Uq>FZWM7XjB)nd zsbs-^WBVWTW#2D<VYRmXGf_MD)b>-ab~G<{C`_&0uyW50c_D3)EdBZdDfKVuLI)Y$ zYz*1^;tkC%u}rQr2<ocdzS8W;(!l)NMZJC#o`%&X%=vncch18~8zzQ>41Z4kjJ>M% zQ+$GxxbxovcD}P4&KQ4xnLJPPs&VWVq2G+lB`o(?On0|u;$#&0xIIf|y07KYkKC?C zi&DzP!|v_kl&bcUT`)!Kz-->R*}jrh%h@i@)3|f{oco65lS`h~Z~e5gHnGe0eA+{u zggHBJ*w~o7Fc6TO`svk+_cGqoas+<ODi?ghbC9!7Azt%FN-kf!__-;|N(!HSvg2oA zvx=PKy8HcmuFKs09Xr+7MDl;`oD=Be$T90Ld$jQl-_+YZ`uC1_UY(o8^|8-Qe&sIK zK)yo>c40kRl`phBeR%cD)|=mjgcy1L`Ls9j?mcK;Y3Y}7bI$GW%}O3^+O{_jOz1B5 zv2<d}k1BYd-233!uE%8-)e&0@y?4b%>*uw|Z-`f4IOBax?5B!}|My&yzagu!_L75t zKBtgriJ#E&Ghse91!A=d&nM}XZ5NwT{I~Ge8E=Cx<pm1fmmaRv;@$qaM>NW0nd!aK z{RXF}t_yuV<@nCGaZ6V4ea>CS&2>si=11S0TYBpr@T@+&#m_%#(ZZnQq`S*C%QG3@ z8EdWySfrdiWy^v@+he-3rnZUAsd#c*RL0XlR?zWY9aDfeBa;X-=*m+LtQVm|&r4uf z(g<Qf&kRAi78Th9c4N#-7D4(zcuC_kX85TiC|52bn*cgM;oY+x%E-6MfpmlLl16iO zxCtnC%pscqy3Q5-tP_xK5MI*w*Z^(<+Q}!#W?(xm0;C^=moz>xhMR$O3<N&?pu;0T zdO>(eqnHU?e<JEp63AwNLIV9L36OpeUef4;Y6j$B31sacFQ6|%2WbW2C5?d|C{92u zNk=yVed#txI|wgnjPpb_0(l`fvMHeQ6n!Ny$OI5x(irLuGX>YWV05!~qRm!<%mLvg zjenzXngyG?L^lk*`T-dP!b=(}3vn6-u8h!4La#DFrhxF0M*bq4CZSXy=q94q93ay` fcuQjxZWAH(NPssh8%QZ110TaRW(EfKQV<USr6m?* diff --git a/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.2.tar.gz deleted file mode 100644 index ad4d6f9c5590836360d1a919f4be84b5cc5f9ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40677 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 H0V@LlC1iD+ diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index 9da77adfde..fb4aee94d0 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -2,7 +2,7 @@ import unittest import opensearchpy from dbrepo.api.dto import Database, Table, Column, ColumnType, Constraints, PrimaryKey, \ - TableMinimal, ColumnMinimal, ConceptBrief, UnitBrief, UserBrief, ContainerBrief, ImageBrief + ConceptBrief, UnitBrief, UserBrief, ContainerBrief, ImageBrief, TableBrief, ColumnBrief from opensearchpy import NotFoundError from app import app @@ -57,10 +57,6 @@ class OpenSearchClientTest(unittest.TestCase): def test_update_database_succeeds(self): with app.app_context(): - # mock - OpenSearchClient().update_database(database_id=req.id, data=req) - - # test req.tables = [Table(id=1, name="Test Table", internal_name="test_table", @@ -71,10 +67,19 @@ class OpenSearchClientTest(unittest.TestCase): database_id=req.id, constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[PrimaryKey(id=1, - table=TableMinimal(id=1, - database_id=req.id), - column=ColumnMinimal(id=1, table_id=1, - database_id=req.id))]), + 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), + column=ColumnBrief(id=1, + name="ID", + database_id=req.id, + table_id=1, + internal_name="id", + type=ColumnType.BIGINT))]), is_versioned=True, owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), columns=[Column(id=1, @@ -85,6 +90,10 @@ class OpenSearchClientTest(unittest.TestCase): internal_name="id", type=ColumnType.BIGINT, is_null_allowed=False)])] + # mock + OpenSearchClient().update_database(database_id=req.id, data=req) + + # test database = OpenSearchClient().update_database(database_id=req.id, data=req) self.assertEqual(1, database.id) self.assertEqual("Test", database.name) -- GitLab From 880755b4d82942d98e58dd1f2b9a6c02cb689912 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 29 Jan 2025 16:32:38 +0100 Subject: [PATCH 31/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 24 +++++++++--------- .../lib/dbrepo-1.6.3-py3-none-any.whl | Bin 30965 -> 30969 bytes .../lib/dbrepo-1.6.3.tar.gz | Bin 40624 -> 40594 bytes dbrepo-search-service/Pipfile.lock | 12 ++++----- dbrepo-search-service/init/Pipfile.lock | 13 +++++++--- .../init/lib/dbrepo-1.6.3-py3-none-any.whl | Bin 30965 -> 30969 bytes .../init/lib/dbrepo-1.6.3.tar.gz | Bin 40624 -> 40594 bytes .../lib/dbrepo-1.6.3-py3-none-any.whl | Bin 30965 -> 30969 bytes dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz | Bin 40624 -> 40594 bytes .../test/test_opensearch_client.py | 3 ++- lib/python/dbrepo/api/dto.py | 2 +- make/build.mk | 12 ++++----- 12 files changed, 37 insertions(+), 29 deletions(-) diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 3d7be35d24..5d2ace3655 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:ab501f75557863e2d2c9fa731e4fe25c45f35e0d92ea0ee11a4eaa63929d3ede", - "sha256:ae98634efa7b47ced1b0d7342e2940b32639eee913f33ab406590b8ed55ee94b" + "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9", + "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.7" + "version": "==1.36.8" }, "botocore": { "hashes": [ - "sha256:9abc64bde5e7d8f814ea91d6fc0a8142511fc96427c19fe9209677c20a0c9e6e", - "sha256:a6c6772d777af2957ac9975207fac1ccc4ce101408b85e9b5e3c5ba0bb949102" + "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2", + "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa" ], "markers": "python_version >= '3.8'", - "version": "==1.36.7" + "version": "==1.36.8" }, "certifi": { "hashes": [ @@ -412,7 +412,7 @@ }, "dbrepo": { "hashes": [ - "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" + "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" ], "path": "./lib/dbrepo-1.6.3.tar.gz" }, @@ -838,11 +838,11 @@ }, "mistune": { "hashes": [ - "sha256:b05198cf6d671b3deba6c87ec6cf0d4eb7b72c524636eddb6dbf13823b52cee1", - "sha256:dbcac2f78292b9dc066cd03b7a3a26b62d85f8159f2ea5fd28e55df79908d667" + "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a", + "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c" ], "markers": "python_version >= '3.8'", - "version": "==3.1.0" + "version": "==3.1.1" }, "multidict": { "hashes": [ @@ -1612,7 +1612,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" }, "werkzeug": { @@ -2236,7 +2236,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" }, "wrapt": { diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.3-py3-none-any.whl index 93e86252f8c62fbbd600ccad15fa4044446d2fe7..b7f45eecc067d496a9d39d189e619ac7524c66b1 100644 GIT binary patch delta 5998 zcmezRk@4q8#tmU6^|MQCqk4BtZ@MAOz|b1Yz#z!Lz>tzulv<FlpIDHopHh;qS5W!Z zCc5~x*|qooL}%4Z&a{f3d(Q9sN#oiDDW{Uwb}I+^P3~!To;aapmUyeeTaEp7jm^wL zdpec~ZMWVXyZ;0WU%@-}0|ynid&=<1q|aU&=_HfxaM*dy5@z$RNA*{HGi5e*bLV`% zJ7tN9ig>hPoBhtX2S#o)q_!+o`H-sLxhcSO_MiHjv*h?qZms;LnflVd`KV(;Ve@>p zwj-W@xH)Sre&tOG@;}HQ>z20B-{M8=gG(8%La*4qXnX4E<@kwv-~C|lW9y9Pmyb65 z*W7e}Rejds`z(1oKHfce`Raq0^}61Z*EUprKKz=0`ufACukZU?RrIy0>}%E6Z(qN) z%iG7s{`+L`<NrZ^`T8H369n|Oop@L?G5+TPd3`xOJv|4l=KJ%4mA${`7p<z_!&DS= zUb)9I^N+`()r|5iYdLSKwY*(@_R9Kg6ZF|nDaxL@oiSw^oB7wmKnv+jy*rEe3mx{> zCtp0e=Z8br%$-V-*IN#^yy;3iz%O&k?C5;aUDiR5`+iwPTCaQfB;t(d&V^>5g*{mg zEjsx8mqOesQ<W*qmJJ&+{vN(x;pcIw_D%MJl-FsFuQ<FlJp|miwtRkg=#E|NXSUh) z_663A#kGss@?!OSCqG`#$o_ldnWqK|Q*NKiVo$C&?YjD9aZ5oW_ad{JZ&F>Kw#3OS zy_2`oq2$UG%l4eZrq!l5jubAqHDkN_!svHF5!cxta($m-bA4vgS!b1n%C3&=OMlPE zj9TK<raFs1X1$4m^&@LZWzWhD*D4>ZnE%)%xY$kBawnJc{EGg7XEuEuO%u!}I2Wu@ z?U?q?Xm|Ft1NE766ZF!hGQLdj&^x`S@Ys}Wui1J9i(`+ehHc5oJQURVS>?8jr+CNi zyO$cA0`eQXg#A~n+GwBNwz=?@W>M@_m8*^k(peY(TR#3ct9tGG5}z%P6O~^v-P)zd z+m{=#({zr>@5_b_+qvE`FF$L1>LAyjCthuH#0|em{e8}6G*?NY{`Rq`Nv?wNcTJ;Q zSTrZ@F2A`i_?n}b+jF5;$t=3AlJ`WWMEeEkiJNyu>hN8P-m!WEUs7)4!r9l{UTN_N zJX8I0;o)rc7tbA~r^`H=9^SZ5o4Mk?vHZK7zNtHo&b{Grxg~GYlnv`{Tzz`*uA;~B z>a>!=Vx#q1DgUDvxw{`&t<O`xZ9?kome<bj3f8Xd&5CQ`xlzp}Tz`0WebZb^zKXA} zME`WDO=@Uk`)Fn!duQ7|-Gh3*k7sTE+@(M5pZ3+mI~nfs*qBRo$i4GqJo7oMhk3(y z@6%>;kN(~%@psOJDHeBr&05}&m-y50{zA6f-Uh)hZ}-Rt|0$C>Ruc8#fx}yigjx09 zR(dDClJPvWrG{Vq*uffsGA$ul-=3uluHW9>nX}V;+NzHyeY?IbG&P?l@AA3LEwAXz z!frmk_1|w^`*XNpmqgdPDQ?Go1@gP(ZvVL(W~=#gQc{1`+2|`gM_<gW%w3z#Wu#(v z_7GFtw^f0gwo6#Yp2@#*LZPqhsKv#_Zk_Xzdg?9X&%3O)NIErb>dq}Z7mS;Y=Von9 zoxJGIrlmVBHDzbdGd`=!^H7X?hBu4boXlfqIUFNTyj5(UdM9yuir)Lf*OKC1v&}Xu znZCVmIXAP^cE>kKx4$OY&Y897Vt?fnwHsM|Yi6cgR+o#PHE~z=;b|Le)I@Z*nVyb5 zS{U}x#yEVNVg2sOF^^~Nd=Y$h)6-^6-uE6YS2ZusfAnw5`iHCk<{Z7k8?d(9%ao_0 z=wl|2e{{{R*5&RY$E*Vmr@vtiF1RS5vh$QH4~M?qv8kLtj>yeD7~v>?czJb2)gg6( z=58m0ggL8^)wV2Ozar?sKF2rC4-%VgW@H;&;`yC$j`y4;%PBLD`kMtz{?(~!ms~z@ zzPO_>*ZD#IVy6SVHg7M8G@cW9DZ{8Mcd3ZG#I8;2#0i0Be}|dvQ_dz%<4FI>F(F=5 zrQnI8yYhsY?MAz6`6cFU%xA1Mv^zPWEyVvpX1~AkgY(I!3YMOHB%JU;@UV=IeUKY} z)rbA7CMYm7*)f(i-AEM)aI8PTlE+zO&2~c9sjt3yx%~&uFB@EKdm3Nq2HCRxzO$(I z-T|c@hgCnYy||+|H~2zegViq9e{!PrmmDWfi$3tZ<A=|T)(1M<KYZ!%H$U)}Z|7dd zwQmBng&&ml-|=I(FZa<GOgJ=EPkF$y;l1E*mM5Fsclt0KmNSf4VAv(Kxt?K?(h}A? zK~JtR?F^XG&AKIE$x)^#jY~<4Y^w|!_6L9YE-kS=_;HGl>%Y3@efAsPn{SwIKgG3a zid>-A_67UhuiV%D@S(%z4%0sOBimWL{Vq((Pdw*ts{Y~oiY=Ub?3LbcPq6LJu-$&( zqH<9Qcih*C5bxPBS3Yo7a7<{|e84SGe?LU8K5HY3EbEHJnjgd!>VtQ-tU4;ZfxV-a z?N958`#cpKp;s6@TQoW)Z$x&KnN40Tb*_?m%G(K>Brgal=^9VS>$o)6@d}4wmQLes zmYs7MuPO%FvfopFQp+cy^z?m#tzgu7nH7B#URg%?w_MxYq`pi^;z75-eHj&rg)Gk- zZ0nugh<$LF*nZT*=BS)qqgnEmXG}l3C+=r;xh%2xC6kK8VwU#_=a|n`vj35tu;04D zM&XIXuWhUNRq7p1-fw)uuko{d!P)aG&Z;K(3;Y(c@S3n#)j^G8CzHoAGfxG_HlY~C zvbG!H2dtg%g&)v$&I@m7RBRK?Xk8c<2IeNzr~9nET;#lLTfhR*wy4OHYehbpv)2ed zGIsQ0S-OR(Z^k2zn#l|E*D*}e^w=QRb}gCto5;r759(Lm;%HV0n$p5M$s<r`+a3OA zx8o~<W~*;_9kTZFfs1UGn;eBSy$-eQ3;D`8SMyS4vrX`n<-B{ApV-YS<P+FrRxn#> zd-eh==T-IB8D=UzkxDyRFwNBE8;|mD+YcXFZ0<16_4jygd*NqG$v$>Zo5d<_3da1Y zW^K!L?e?}8p0{{cKH;?Zl+)}73S4;P89sGPkY_v`e&mB-$!}BbZPT;__0F&Sy4c`J zW|y;$Ntg4T(1{b*EGhVXF2pWszV)e3o>RK+I3-;+Suy|N)%tnjRY&K|m~WYB_v~$g z>xqW>H458}KP30RpTAgSv&wH1+YPJd*QecdT=MJQp}o@f>-P0dzI$F~+TS%%dd`z} zJ$e|ltU_=8zn|w%Pne$^Tez{X(&G`cXOP#8|9^{Sa(SJS{uK1er^I~elFuP+R;*Jl z$p$%C@@!b07wzTQKlQiEE{B$H>6Zf@?AM!=|F+V`*7N(^l1z(gj}^U#_D@>Xw5U+* zr!413-G-2&sW&1b>ZAMCa=i{Yv6hcvx4Pf73)^I#Y@W<$C*ynSO68g09Zg$~@$8tl zWy@w~=MsU!cUcdD^>vv~G2CO*laoI=(X@A;8e^u!U4}eIUngFp4%_W-I(ua9xVR*| z73$crZ-Vo@s{eD2X1;zpIm=F`zSd~l*1LYEEyd3-e|P)U_vZz?mkU*EpQUn47m|PZ zDd3ps`b0_5w;bv%YgTc4H7r`Z`pkl~A8*T(ufDXd$lG(hYm<V&%nv_ymPB58&-BW* zhu!6T^G$Jeg^PMu^I2Ahf9<JL)xBHiJ>P@>_4o1x3XX1)jGng}rBdhLcGzpBuxNh$ z<~_HTn8Z$(E%5##chzG``1KjiPR{0*RyGcE%>zVOF2+7NablU|`-rkTlalWX&9vOU zGwEma!BxfQj&^K_%&k07y82~V%0`)!bA<jZzQkSd?V-Jvt!X=R$B&~&jt21w?LQiL zSR+qqe|yDSr_J*G_r3Hp)bs8aR0=KIb@GSyYWMmhDzVbS4KKGoU+HivW37Mfsc%(h zE^Rf`y7AUM`*VZU$@JdW8(9`7mV_&sL?5qT7xiC=ck1DK$IF`Ke}3;w*w6T1_ue*@ z#uYkxJPWTrop(oJ_1oiF!B3($yL@RV$~N$Rqa|y#yYr_o=ZY$q#}ik_O=cA_S>SeD zGv6)i-#3MF+xiXB)4fE>FGnS=e34lFcLHa7m}#!_y_XAj{mpH=YNX76t8&k_${a7Y zFSq{vES%kJ@}&4xyNgBTb&W&9mHJ9Q?oEBKmU(;Mt`)1SIX}6aEVgEOkh%7YNQq0K zkW*`2w5Q}xr#)+wRn#ucGVRa55`FeX^+_E?pOP(C%(4Qu`gpIcw}{-Fd*Ak33(w;h zPb^o>+ikr+;^UIrU0G{_e#M$}nR6H|JG_2@s(k4*W^-3IQBJROcdu_eU;gU9<(K+- z&i`ZQ{FFZ3A8or!gSoD<{N2M%Yx_QjM{Jo?^jX{Jd1%?<^eJ)|_kCLRa+yNau4}vJ z9q-BTvRsm|YRcg&#gm)FeY}+FrDweknR3zmt8#f}Z%~%#A@h`0)=A<kx7fR{TmJd5 zy34)bn_rE7PxM(+RvfX*_@#yZxAQvP-Q|LUJbVQyTjpKQ*>Uv5S?@dDHBB{<6SL|L zh`w1<-5p(I<LOYysvO8!zBVMed&QBnldF7>E2xX)yE;wGz4)Z=;%ui!Zco$aPpglP zcx7!@8RT23_tD|3O6Cc+6(?4@hzT9@$}g*w*->;`H7Wd@XDpxk(s})wM>aik`}Ka4 zhHzNnC%+1Z#W5W#3Riqs_wLp2wD_$(+B(|4oZ-n?vrq3#jQ+kXIeOcg)n-f_Oq#Vy z4I!e^yu}@%+dRAFsx!}o2Ol<D-);HkNUucw8^bM{V&9Imu)J4#y87Pg%azT=H;&x( z>%42V_&T?T%4hjd5f;;cKkl~YpMI8M-P|Ij^l$OJ`t2#QC7-O18m(GrDx;e+_f=b7 z%T}evV}IoLcZB_5zrAMa8qwzZl-oyU#CvD@-Z>HOv?)(z!H>|$f=D6Vy3lUhNxI)W zrrJOHbGbh0-%GD&r;h4RJ9jpv`^Ql+kt4B+oz^pE{ZFvGtY38Iv;LxpuS-saa6L)A znznY%L{*+_4%IL*=|H=T6|Z(wicjh944c*;vG)DDWzWvcx!t$Mbn^`@YZ;~jE$h67 z%K{=3Smhj#Cgnwc-s;DBzvGg|<rR(so`T=RLSkpHzIaJ0tKRqo^R;C&92*btteUQw z9BFBM*=!we<Ye>0n>^aHibPi3mpol9qRlS3`je00*}XesBD*cm73s(KomM{>mu@&M zIN^WNZ09p)zniYGtX#)@Pxowf_QrMRE2mFTmrCa?zAx#$o1u7e$XCuouIfR$ySf}- zE1Li26klt4eBzF+-_|zOZ(M3=HvL)6lFS6pZ7Pa2#S>R6urtX%`8!KWd~xZ~lyw`` ze1lb(JYAE_FZX1YrTcns6OqeUFk6UWfvRJ?;jeoUQEc0D*FA|`sA~T3bm6J5GFg{m zbdF}59^1mR+vA9~SzZ9+wsn?AuXQ+Uub+7D?asz$CQeJA{hq{g)XabS0)~2rkDYpV zS*O)3+*x+aJ5p6A#-ZlO0eSUR2@yM<Che7(X}NW^g}2S3i#tv3uU(tk*>qmgw}gv< z!LwmsQ`^yktutor`XweU)_rJN%^s#k&Jg{}T!yDh6Yg)2%eHPk7FxOEQT8j2oVzzV zUYF?CFFiF+XI<k4$r?k)tKW-G&WdR*u3wn3Z;tnSG5L=QXS%j2ZJzMVFHidL$_e@` zrm0IeY>mosy`z<L)y#de<&2gYk_S4r_qTX<MBWZBy>WMrvVw(x$w_C4D-2r2oY#Io zvhFH6viY=u{-Nu_|LpJgEHC)W!+!J8(&OdX!TWx*AFlE_vWZtY^X1iJ`L`Eu(JxZJ zdATjHe%ZXfN6Lnw*M2<n*?W=Q<oi6gbU`KYc)PY^UVCNPpC7$9c_rh~l7uW~4aM{E zS6>?nI?SI?Ju&Vl+so6&?vsT+nYsk5HZrc`K5EIchsXP{!Q~ZffqK1$D~|Zz$(`-C z;{glH8RfVgPoGawkjOdFAir^k>c5xYt_OR*iVq9Ba5Joa@%iBGGvdxI@c-D`x4{46 zgXd@6jsK?Hm@)m*rOiLxr!QDM>GuTAV>V8w9w!G^Ez|T=+GLpY_{gQ8iBX!?(SDm= ztW3Rn+1&T`G%n_2zn>jWd6>F6Vd8wRDDT?-6?N5KHx&!|r|N`0wcGw_RfC%C3XQcj zJV}!;9uN;(Yue3ZJyWVabM3*&D<_o+i1>;}G)2$c_P*tZtjbT>FF$NMKK>3=vQyZ) zJn*)AM9b3c2d8Wf(f=PR{Ns%Cadp2Pzx+k&=KcLBykJfE))(a=`KMxH?(zQI#?|0+ zZfirr##L;K(<8G*S4+jrvv?gJc&l{dm9UIkrrXjt=BP7B6swDr>n@j9nO@&M`N;V- zZ|AwD#zlXbvOFm|;nSJdoDzR$JxKlYW==lq+;8jj+<)m8Pn^EtN|4&0>ilY{?FLg9 z)xHf{6Z0*8<yZUnuf1!cCrx~%zA0&6aaY-<nBUR)^Zeo~=T~08tKZ>mx9b(>ZsmjC z?DF3;)dRLMhsEpIe&3z+;iT(F*HfDq8|y<Ye_dY@_aba#f8NsTU#qPfPE^0!u=m1~ zJ=KSf>4(mH+t^#A8oy_+^xIW=pN$TkwVz)Z`cvT^_wK1SS+(zV^p{&lY<)00EOe5> zp>K=WCe69}Flp^u)2KS@HGTX4>?&WsQcLVo)|%`J@#R-Tf-7aT_B}2ys+|xw{e0{m zwaMxiZr9&$)xEcU=OwoA!nl|B?T;9*Id$LKSK(-?Xw%&C^&QPp@gauc-!4s(jH;X9 zC%npNi*mB5(UYYMo*SM2`uTmqjdL}&NBIkvZcv?M`?)o_C*+h_m+ZQ0Hlf;Xv9ptt zZA0h34r<>X&U-13|3T>wW2R6&-lad-WbL;^^e$VO)?iWOXXGJ}Q5JnE`edr>Nr^qZ zw>V?h9m{;UH|P4HR6l_@;ZCD{w{F<aUT*!fDSEov?LRwiCjQ!gME&py=c~Q1!<wQ` zyvnYTIJa8=mFOJXm_OW`13mbdnH#HYHz#>7<p(pkqN~I}jLGeVlfkrXkq2jEm2K4P z3DI_?lk<wS>Q7Eu<iNmkp}L;iLL~ZNBHt;cjzu|(VmLOO61&;u>awq{D(M!dy45c; z`wvRS%7M3%g8t8#&Kuap6aKfyX2rWn8=8I;zwffNsy^3hTbzE9V@_3_x=X0p@(&Ak zByBk#68iR7bJ{ZzZRVG}e-E1Z-mgE{7kuI5Ol6kcYi_*$Au+3d-o{K>#@K1EQ_2Ip z<b5}(YM-6CJmNrs|CytA!+pARQnmd8yd(c#o4&1Zeb{zaGdFjglaH6RzWbrDHs|-h zIZO@B4Yfs#ny*-D8Ciejt-rT7Y?=R=llS#5XG*k8-T(E4Q*KmP!?B02;+8LCmSSaj zmw(mb+^RMGkHx#%S3R4sI;CD`PfK6zW}eK%r4ME|-`ykfhBvbH;-uXb=C%uFET25# z&Hktr>*FPUeee@v?m6`D;fLulF}cDjI@%H8A6HZcxCsY-zdGxKuJgt@XPU#g!k0@u z{MLFqtG24V{f*%k8Rm|Ke5)>-@C%!r5;<tIabuP9^PB~ilOMUfl+UqAyp&#gwSI5K z-Zi593wN#Hx2p0F=N3>b;ApR9EVpu3za;bg_5mp-`-hqgk^h939Q2t}XgsCVc5dkN zU&n8SnB2ZRFDFBKda=$9ucrL49~nvAliMequ+m=ZzB>AY+{)9t#W!X@`|io|WA5&Y ze|B2^-*HJjCghi3+^20(-fp60f@{BR-*I_)y}+?v)tA3NxQInBcz?+1$BEO9AFVA+ zOmhE*ob|d^TYbcO;zlj|_<Ij+#ZO;-*OBz3B3xICKcmsC%hP)b&pzefvyQOJ6&Sug z{?9X8$;{hLcecsY^`;5TGafZP<A}fXhwt|8mC+ZLpV@Zk@tj{}tl`1i)_Dcy?`H_` zW@Hj!7Gc;dSUQQ3cQ*3)^yCd?0gS<u8OxoR5<DkYc}h)=FXsWL-n?>Yrf~1ch29F2 zS3`w%l}j`IkD6TQEjjr^xrhQNZLjP5@i>NofgzfKfkB1=0hTn@6oM75FJ$G1+0Veh z!O&P`J2|jInn|b#EZtrq2{s3uN0=BGj9C~MWD&+NY-x;zD4bBlHu-*q02^;9NEQG; C&{C)X delta 6049 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 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.3.tar.gz index d11ce1f61e95fc31351dbfdc9abfef9124187f64..2aa4f75ed8dd08245bd29d34c151dbe9b7eb2253 100644 GIT binary patch delta 40221 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 CmUAKi delta 40172 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 diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index d7ec90173d..6c62e03b92 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -216,7 +216,7 @@ "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" ], - "markers": "python_version >= '3.8'", + "markers": "platform_python_implementation != 'PyPy'", "version": "==1.17.1" }, "charset-normalizer": { @@ -360,7 +360,7 @@ }, "dbrepo": { "hashes": [ - "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" + "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" ], "path": "./lib/dbrepo-1.6.3.tar.gz" }, @@ -602,7 +602,7 @@ "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f" ], - "markers": "python_version >= '3.7'", + "markers": "python_version < '3.14' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))", "version": "==3.1.1" }, "gunicorn": { @@ -901,7 +901,7 @@ "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df", "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f" ], - "markers": "python_version >= '3.10'", + "markers": "python_version == '3.11'", "version": "==2.2.2" }, "opensearch-py": { @@ -1585,7 +1585,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" }, "werkzeug": { @@ -2009,7 +2009,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.9'", + "markers": "python_version >= '3.10'", "version": "==2.3.0" } } diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 583835bb68..039873e7c5 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -254,10 +254,9 @@ }, "dbrepo": { "hashes": [ - "sha256:5626cbba65f39a016c0eeff905005dd10b854f47edc09de293c62b164d65635a" + "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" ], - "path": "./lib/dbrepo-1.6.3.tar.gz", - "version": "==1.6.3" + "path": "./lib/dbrepo-1.6.3.tar.gz" }, "docker": { "hashes": [ @@ -279,6 +278,7 @@ "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==2.3.3" }, "frozenlist": { @@ -643,6 +643,7 @@ "sha256:6598df0bc7a003294edd0ba88a331e0793acbb8c910c43edf398791e3b2eccda" ], "index": "pypi", + "markers": "python_version >= '3.8' and python_version < '4'", "version": "==2.8.0" }, "packaging": { @@ -933,6 +934,7 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==8.3.4" }, "python-dateutil": { @@ -949,6 +951,7 @@ "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.0.1" }, "pytz": { @@ -964,6 +967,7 @@ "sha256:f3dcb4c106a8cd9e060d92f43d593d09ebc3d07adc244f4c7315856a12e383ee" ], "index": "pypi", + "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", "version": "==7.1.3" }, "requests": { @@ -994,6 +998,7 @@ "sha256:0bdf270b5b7f53915832f7c31dd2bd3ffdc20b534ea6b32231cc7003049bd0e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.0.1rc1" }, "tinydb": { @@ -1285,6 +1290,7 @@ "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" ], "index": "pypi", + "markers": "python_version >= '3.9'", "version": "==7.6.10" }, "iniconfig": { @@ -1317,6 +1323,7 @@ "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==8.3.4" } } diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.3-py3-none-any.whl index 93e86252f8c62fbbd600ccad15fa4044446d2fe7..b7f45eecc067d496a9d39d189e619ac7524c66b1 100644 GIT binary patch delta 5998 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 C&{C)X delta 6049 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.3.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.3.tar.gz index d11ce1f61e95fc31351dbfdc9abfef9124187f64..2aa4f75ed8dd08245bd29d34c151dbe9b7eb2253 100644 GIT binary patch delta 40221 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 CmUAKi delta 40172 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.3-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.3-py3-none-any.whl index 93e86252f8c62fbbd600ccad15fa4044446d2fe7..b7f45eecc067d496a9d39d189e619ac7524c66b1 100644 GIT binary patch delta 5998 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 C&{C)X delta 6049 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.3.tar.gz index d11ce1f61e95fc31351dbfdc9abfef9124187f64..2aa4f75ed8dd08245bd29d34c151dbe9b7eb2253 100644 GIT binary patch delta 40221 zcmdn6mub>oCU*I54h{wPSrge6>))O1`o-%StE+zN>6=SJvc-#TcZAqT_S;J;IS3hY z7%*te{P=9;x$?LN-&2;a`qgx7ssd-=Cf~YFSEkyP>(;G{4lli4{>u7)@zVOL<X3Gk zYrkvEkNtM?*Y4fb1rl|~pI7hxUH$uh=KOup2h$(1?_$4O|2?<vTm1#MMpGl{YJL9t zx*OJ3EPt-oTiE>g_~5v>^!>H=@qdr+_<UyL?!DpmtK{F*e6M)@|7o}QkMj3VyJNqu zkNI5PuFv1k$Is8l|2^UFd-->=HOu!#JpCnaJ7ZdY+Vt69|8f7lGN1YXeS5D@|C>$! z$8-L_KmAYr|Kp3r-K&4Qf4yt^{J+`H|B=6!lwQoNw>|cY{ocHT|G)Qt<BL=Hf8X|2 z?auliLKO$^9ejB3UiqzeTG#)ZpZagUC360=i1)m{Z_m7%*_Z!p>i?r(YEGAK`THx+ z_xJ2~J|+39-oAe)mlh_)cJN0<`tyem7p@C7FTF1P=EfTB`gCUPvgqs2W!F{~u9_PY zH)q@Kx2L=NzWw?XRlob?maJQ)uV4N8^yL|g{Ph)AGIw9zo40@0LG>#K;$p2$e@{zh zWtbCx|G|ZjA01k=?62fTOV8Z3nAPCYfiG_RmRYx5E0%4(dg<4?<-RqWmmMtn7?XVI z@Nv_7BGXKD>_4p8&1rYNB;I&~_vH)kmPH+Zv(fF_g4*+QdD?FE&$`_%FIGRLxO(!$ zmn?-lV)Pj!&dd7SW*hLBd_QPt%j?k86=rbti>E<}?Q8y5{o5ypDNDR+WSh%pBdcY_ ztaaq$0)_;>lIZNf%bW^oe0&oYn49i(U(2Dvz#A~l{IL@w--6U%YqA|O9_%dhy=)u& zX9MR8sXn&(eli!FAKcA&Vzoy#E}*)8Lz7~5duhb=xZQFG4d+!Pi)*MISv9A?&|UPN zS8Lm&?9lA)&{BDy^=y})AJkD4n09#I^(_akR$2L2O?$j{LwF0Lzx2yKJA=Yc8{+FP zNf#Z+x^?)%l81-i1n;-nx;E+AL8q*yuvKCXPM06^uQl9uW&5v&vm0N2-SF~N_uco~ zS6J7JUpOqFFExwhz+Q&98O$@(&VO<3zVKx3O9r7TF`v{WrL5-)PSuyHi>~D={Wv@P zW>C89Kj%4jqK~oM{$w)Mu7dfQdc(C(f&vZIDL?H5Z7xbivzX{|2EBI3w~c7pu*a>? zOS(Gk{ui4Se)+#!KK9=@dcsskVwT@(FP{xhzr5jGSkEN3@Y#;Wv}k4S>h{Vnck4bh zJb4=2ZlKAQ5WmJYtHb;-*Oeo`-bXigy1!41$_Y-CpI*M7QB%e7`drOww#$YaGi$%t zmb2(rJKtqoag>R1RY8r;O75mb>Sq6MUN7lg*gk8uEBlGt9lXNR&fYl0`c$Z(W(M;D z771pXKAwoDaR&95s*mlh&1qkIcVcG5E-|0uuQuG@b?-P!a79Bqi{VGbC0hzOBl;xT zVi<TzYa)~lY)t;fZO{38PV9C3LvPb3%RCxv=T4ra_p|9iUIUwk&Q0mVA|l&3)>a8D z$Wi3s%%~I&m1y|sDc`#=eFeuF*%Na@k4!rI@kYx$`-4fF?zXQLsOMh3Ed4IC*n3}I z!AIebL>g+BJZ|WpxBW<g0>l2xwR3FRr!8u%Rrt#M)gZ1l_F~Dys0xXwy$cWVBy3`u zz_`K4_Vc|(D_ykMu6!t6G_xV`y72x5oOWklWj*R$IK{YjfykkKd~<i2>2j?|<JDoW z@;p~LNuJy8YQN6^Sz_+;$K`_Rjptiu&GY6xFY|I*%=~8&-#dZ?^i6suzMT0@<XYqB zi2~*9SDH#5y-+Up_SwbSbK>=DTOlD+S2wREY7I_rX5`t=`6`_9H0Idya}_nbCsbE| zQ5QTRK4-#GA-)_PBXyU<Y}Z{}y!8(AUTyjwdEojKS3!mA<qNZ;H{{kAvF~X%=C5B^ zE>J4?ghei%>x$sVk1bJ(X)}++uG<nID*EKq728X{=W?ES!>qMw>hz>bajQ=lhE_!T z-1FYXGu200Y{7FT<8=>p?z}X+c(J+tt4xrc8sG7KZL1wzcS$O7eH8ieFiG*x@2xR` zDwWf3vHuZ2#3FNX)5cA_TB=)?b?B_*`Wb9*Q18C))FH=bem)|Kwv#6AVVPYwrN$?E z;;w03UuGS0Qwmv-ApMceDlh-h<SEPL+>hw*l=?Z%B2Hu08Gk0uiyOJBS{D9DUTt2e zZl`l^;=5XxYtLJ6O$^xSb6?8h$nQpx!ak0TE2ngvSyjaN<C<yd+H2Y;Rb?)(f4bo) z*PNA~R&codtGDPXUB$~d!&>+SXNcQm3rmKz--Pv??*FM}`jVWy-B$d=*(0V}dro~y z?#bA{?r%$$Xj!#VyS|C`TI0k+Q!i(&GF+@<JXL$Pf~qO2qtqsWhM8L|E^#|pwgfh{ znVT^m=uxmwsNME4Vd1)mJI<M%-NUbZZ2s*9Un`hR=G<AC$9}o~?Y{Iw`rIPBtGBoJ z*eIUe`L|t`E1Ns(fRwbdthz<)iF3y%Td&}bU~!VYZ6&a)hRMJ<@bzWkbrCDdX0LkY z9p`hZXwh+zLccw&z84ye9K)@Q?ygTLTNQ9thJD9@15Y?wx>y)~ol&@T=~&L1Q*Rn~ z@%8e4t)9HahEd?=#k~FfRrPWljF;KIo&Lw#_o#|-w!}&H9gEIvbxJZ$O6g!Sb6*r* zYqRa*of6p@C5MbY>G4IKzovV@TzfSS-v*D~6*s2VTyDJj`uDE%i?7~PAE<3{O^$N< zwvv1QtNcdEH&$xXI}ZGFP@WiN8`>Q%z?>weH+>s}UGS$x2R`b_6==1rS)Kj1-tOG~ zEv+>VLOd=P1u<nGaJay3wNFj$IPdo?jSWlk-tOGD-<RWX;+H#|ul(PbpV_nS=C5Y^ zjZ8ADa`|QmF!XRfaGtAhO!Tva%t;ou9p`=DZkQWqVHs?wV<@kDDP*DKvMyK6z!g4+ zB%W%!N=QAFdaUH15$a?0K<MaA;Vp}PJ0;c|KUk<>*BP6^`_`p-W7FYXWx1>7Ewn1N zy|i30y}MZPLG!c=xk`UD+)ppoblfUvHJf3wvXxUW+rM2wO73UV)D9V2MCzKfawsZh z_WDddTXcWxLA9h$u^-kw=FJSx-8j*&;Sw8%e$(+cyfebM+d6!_Lu;3ocFaHGP&$df z(EE{ny=PCC-TNtaGasvkEWOz0^n0#lsf~)FfxHg;%a+LgeV1%ES$JN$p*HIsvs2s2 zTb<wT1Xq1K!yp#n`{HaDr~frZ2NC%>mo~mJQ0b6bw;{mlnnmgL3A$2huY65iXDSHs z9(sE0_^}uP%@0Q+vqFlK?*wmgJRqs3xkVwhU`B`Ewnwsi6hva2n)~@px=fO}XHJ__ zpZDWoNVuNf?zfY}SSN4cv}DYh{EkzW@%UsOF6qd>6V5L<A=4scaC6`5tCJ$GwXR!U zv2#c6gr=o+IZG!nF^Vb7*2%bFysdCTu%$WQujdC6+>Rc)a**RK-%QcAKiZvXsrx)D z6P9f$`P9fOD7AjYLYIRNv%4*>nM`ir5*IRj^V>l1)r=GKoW8du&ge6g<ea>cOODZV z@(C^zF8{`5VtTXfB)cz9X5-eVkDIXZa5>YAwNhD)b+Nk(9lCy*WIj`Wu_ArpPj6i< zX_ZU+4STaEb{TsYCa3ON=j1D2-D6!eV^#U`s`<|i&+eGznxMsUcvixy)rw{Ek$<_( z4|o-QZ+mij?&%(*m~G5P?*n=SGXAj~Y0Q^WyUlSZb%77(`;JWUGmcylQ`9ap<kVX! z{n3n9Oqn=y{+W4)9(8{7YN>eU@cqWVpgZ3lR5Q9C;A&-hq#PacCF8K_IZ1=5(KiL1 zj(p}dUAC_ym#4O+&Uod;1=ml1d3SO7`FbXwIc<@Nj$4=>MZG9}l(s7UpWVhE?*zF@ z<e#y)TKQ^n)Rni~zRba!Ao-<Fj%R{@tBKWx`rz3g&Ual^dDiRQEFyTo;OnM!bEE8L z`t8WPef?h3KhBDor(6{r_s%wAo~Dy;veC)RVYA0E?-#7ATZNBZ-zVP`<r;A@Q@}j% z>ZKR^dVJoA{o2~_G<=rq+Pf<=*3X(-=C1HPclYmSpO&rOn;REzuD|PTnEUQMVcVbT z$7i4Ij^8?;`L_7-$?JHe>Vpl6I73qeDm}%xPrTW-JAJKG!r!FbwI6@&s{I)JdQa)a zwVBV?zMgE(kor0F_nNzZr+U07-Cce0)rJp^YWa^>Rq_g#6<^zPZC&2F^?KI2YPmP_ z7WP_mGyIpZ+M02_u`F#ysD!Hc49oMf)ncojn>?@!5EoPY#cjFnk$&nuxBKk%b2-|z zZ)|-koc{gpJk_%)$FBUe)2>Xu+Iww@;pvR`?N)!pG>&?uPpeD6xux=++sW09zaF!& zuxB&N-F)(fMdIM4uo&GWb#4xgfLOLZ%MH30_EkL#^L<x#U1?p+%bznn--j;KSm1wu z+dGei$`9CH^iTLLw&*m2vOvu(S^s$Xp6bcRcm?=8<XviiL`1i+v>asocVqGsUR`TH zmHwF<)TbR*4}Q3M)$s+hcB|_xIFxu>Px(gUYbpL|Yk%?CHwBa(PnO-=vO?HL;KRPW zo5KB`%6H%S&zbDQr%=CRd&cA~=MS4FuokFvJYc(L6U}IUZEG5TDpQhULEM|2l3ZD- zfqP^Zy^@Pv_wnqZJ8#Vvwtj0{cY4o)Cog+)woN`S`eoZb&p#{?vW_dPZ71_4ow>7M z&Trq&cV{LxFH~LV+_Uhi*oN$PbI<M#ShD?%!fnU1({r~Ts3_Q5@cYy!<=gDG2?=`& z<u6SB#Ai}}{)e$%#kPB#=Cz&Dhu<{sJe1Xtma}BXxzc=>IUX9<g}NUW&8vvp5q-?| z_<_j>wcL}ZS_Wo&?*DjqinjE_hGiX%0?UJD)(5Nz43t*Y>1l`-U#<~;`Ot$GwVz*c zb#3`y*c0q=kLkgRV7Yw@+TK01W_s%QPBpP2_8^z3oSWcRwR(=Nw^~CVH%iKJtasDh z^5pllOzC}WOiW_d$-l~XcxN)DhTYq{zQv8JN^QrM*<49V>rSn;J347y_SN9)H>Z4L zIwd9A`~UVdw`*22SK6%*ci>#`$lGE^>4J{j)O@k)UG}VX|2*?rCIy~nV6bBp&6PJ_ z5s~>$T{LFSDWhGCTF$-oQ)k95N$YDh5Q|=2o+h!$$$ANski2#ngGEt{GXJ^-YdYT5 ze0m_xBFu4q((jKl#Yy)=ccnY2x4-+^wj=p$hvFTd8uQlk)o*1F@)jH`i@YCP=%><_ zWbAr!`7*YatWX_=WWDYGgl7wU<1k`U+qdI)%!-fG4xbH3>YcP`N!Q|tzxD5AD^Gvv zIPE8}NsgmvzG%@Y=LOptQ&t7JIG?{{TXE)Q+pDEL54;=N6?wcGb$Dw$zea1^YuVP9 z>E<Bd;+MsHfrsa;q))>G2UUiR4~{7R-mzWf%JsibcD#E1;aBOu^H%?h=l<XMuSW8x zeYpMq7QZQ{r#|~H^KP$A&+~e@JvXeQ>Yx8#^QbtFZP!BfUuM^@_Blr0zQ2Rv==+G| zEgKc@3rx%@QB(dhM=pE$`gIStmYMRl>9JjCy!Y1E{N4`bVrkQ>$w6Cd)@4W5?w9kC z)49Cz_1;}_ZxUX#_06`~o4~|%itlv}`>z`}GlHhP*jUCFrIitqFZlV-L$hN{w~t4; z)`nlM-(`L)I%D^uzt=nFUC-S1&;9Mk_0loAme<nMZO_jCv!y~P<YJ0OpkHpr$|ozf zusuE*l$m<UciyDm)k{?ZpB~;_5;Rrnu0ecJs9M5OmFSbYw=YdvcVzjLC)$>`f+lS^ zbfI5p(nh5j+RB>VW;;rX!o*JM%w8jU?B|*3Tc)!5cY4OuUksSDbn?y=o9k<qtXs2C zckUBaNjJ`uab69_FL}mmU7tJm&(zj=Mw1R6S-xb+h6(w)b7j=*KC5-6Ca&JH#PFl0 zex=W*7Nf~0jx4{EvdQB}sHbP@B>yQhW0t+*Vx4qm(~7j0ON>SPiYA>;>0YX`(DTXk znLW#nY?wN2%CyCQbmz=btG9cqy3$o``J9xk6P8b#xn)_`f=QFEA6dRdWm}5Jm!gw7 zL8ZE?D|6LOM_8To)myx2(%mUX<4j)a=1xgfJJ@=9*OU@%$><ojTcJU-BP}fbj!m6D zRYl#7TmAG>-<-^o#qo#MOq&^^ZnsqRx@*!CZ;wsF^Pf(B3-XJ#>EZ=FPj=T|Xp1%D z^k4U{Xwt_kJN_9>`ZVR+G{1Ag^NS{ZnKGv_>10*rniXrF?B$prW7X-e)sw37x%F0h zUQm47yp1`N?mL~Vi`+0}`XBRrp#(9PrK+scX30c^O-fjKvT5^Vw#^e_{DdAVs|Zh< z6B1EWlz7s!ZK=BSv{@w)b)OPfdUiZjSFWEnYf403QPNA#E>(5yX>+z%SXUZ0Z=5>q zjD~BCrDt!~>zzGM+_vsioh%cYU#xkuFR=XnnI*@!bn2LL8hx2QbqdeQh?J!&uFGcM z`K<2V<zMMJ=~c+Ii8_*olH6*(%PzXF^qewj>$GV;D_>MBRSj+XQ}y!6DU+UQlXEnu z-`eCky`D4t=%bU<FZJlCat5zj{!}$tE9&?q&zX;cql%WzxwvVP$<iH~>XF91)4aX! zg_xWXnq;wb`NkzFekZqkdA$;u|7nu7X!N={D(3^jHC1mKKT3?Udl~$(RDb>-$zGpm zJ<bp}FTF`Tv$h>N<;~}t^G$!UiWKKLO~uHNjT5~*rF!$~H|x!}S@p(f+9a1%9*dSv z_B<?md+B5^QL~_+qLoG$j!yQuEanz>DKqM)>*N6AHTQ!i1ud-%b}Cwx6r(qP$*NCX zODBh3z0spOIc%w6oZqKaUl!|6KB9H~jLgY3nJ%X8McGkbg(k%wUEZ_g`i|)tVV|;( z8O>IgG+Wy_X;QNAz3-{@lTy5mCM%uX^e8y!QqGD6&s5Ln#Z>C$J<PoyGhZ=UcBT(+ zw8d(*OZPIbi0{i-ob2_lbL-t>33~Q9B?+wC>cZvuOHY3&Q8Elr+?#vK`jWcE@?YBu zxA(67B~fp6_oehNv+}4P*0-%i<es@#zx*)c-KMIWKW@%x@-eKLcr(PhbymGZ$m-bB zTGHw#gbTedHYY9keB<4W8+q&omLIo1PJSD3`&!)0Mmfz}rN<rQj&qpy$A)VkE}mw` zx~z1G6i>y2mx~33F3nt^t8un?-GkeXwfXu%Pm6lW#KK+#2*`@<YH?-y(wcZmLVbmp z_!6I`w<J!#*(tG?b-!ivWPxs#71`VF)c?(8JG$}PbvDOBsZ;H5g`aJ^`Ofe7Gegd; zvR`Z^4<xxtUHg{(ppt>%v0>us<r_})cP^h%_u&85jq&z3y7$XQ%YQwxd1d3d&bU98 zKBp^YY4CUlemD19uE4tHo*_RYZ#}=O*zIG-_NS}t%8mI}$>x53+l=pX;snAgj=$Qo zUT@omdcN1})(LzsCAK-J><|pn?G993DnB(*_^Dj?-+K%%?r|PzjqP8a+&%5^4Bh#% zfh@Z#)Gtg6juTn<spZ_9LtpCBvzblX$}RjWc@Mvq-4pus{(o7HE9|?aoIT9V>}q~A zTw`DHTl#<hv51~+woQ@p!2!Hc|82|#z4CG<+!pEhs$9R0uTLu8M|{$=_z3a(`4M~j zXS|cl$@!DQX7jGM;7nOtiEhF@pZUTa-xw<oWJfeTYfo<KcHHcERFdaw_JOCI%8X)3 zOI!WT%q$8`rnHAfv?q&SS?K1vpv`n^xOuf8*UB8mpNcDXJ?qc7!LhoZNowhze2FLl zo{J?P@37Y&e&Jkizvl3-13Y<|Cfg&HYjM21W+bJboipc0?fV68T9L`(DVx5w-)y+= zw*TT+wP)AZUgm@@?hknI{BrJjR=$<5<|K4K{BS`!<>36Pz3cA2{&pngqVT$8Ns+3q zN|g&I)-8K0do})z{M)@(wp>^9efGp}b==(dZ=0C@)c@aq@Z5|4|Mst`m&~o_H_`OH zeb@R}OX9W1vp;XYaOPgjS(y~m&GzBO?viI6oZs_t{J*81n=d~h$=|K-|GbN7vjbVq zN-JCzH4$5==4UqN*@Ry`Qv)M-rv~s(edxCI{jRA|S@T{=sIYMzcYEshy+Nz<(lNJK zJ$|JP$DaH8Da}4EwAC~>_!6hhy`FmIs?F18O78A-X)XN`l5?#<@86wA&g+a*L{y8f zY|JlQuzj8T()`~XmCP?^KjVsUX)oj#Xjtz%cgCh~@(O4FCj92wTPdQsW#ihp!4_7D zd=2cYrIkNzd1Zb0?a%H{e-_Ku=Dht=&Cm1az@1~uwpSjGj^5<`!k6b_{I30-{JMFI zm(^G0&*a~feX;S<+BZ{dcor!9XJ=^o>3F9*<k<=3yPKaLc7Hot_2G<*XU*~_TUjkU z7a0BAZ+-8DXD#VZzjS9^KQK}Gj$AZb>Aj@g-4|3j(n6R{zvNpZDWleUYjfZt4bG#o zYx(Ng)$iX=Tv`*ws&3;dv}L|p+w{iV<8$tayj!p{xqjzOo@4e`ZaGSQ(&5>Y@NL!0 zJJIuAPbjM9&(bYD^4<KQ{p8=*b8l(A@z1$4b3tqjkHl58e`buwIG$Z-m7Y<)?)Syz z9dUCMpWR~e^E$%5=$EtXuU`j}qaB`Zh@BgAKkR_Tn`5P`FYnEb+nOIOzC3*T+wONc z(<H9#e7R+v{;cP^$LggHKMz0a_x$bCubRp24?p|8e)3GpYw?dYIVR`-*SYrJk16Xa z(LNm?8|VB}++F|s)ON#&Lx%z*o_vnKb^Y$_XOi#dl%8_jyVGiS&OEW>91}06^z691 z@W64d<QXC&oR=BPEI0qSd$8g8MuyN6z9toGZf3k&@G9#Xd+A%|c}ANSxYZw>|6!lm zkN7L)=N_zn8M^(|g`bk&!bSBr?q16~L3ZUKp?U2>52V;EFC9Pe)OtzuWVcgdt_(^E z$&ddph`hEw`~9rG#(NQOrCMgbZ0$B>C^qe~Pti_LlmAn(<+pRKM9-VG|CwyRuK#nT z>;J8T@)zD^N=JqAZ_~K&>>s~={JZz*X7#)F{jaV47ku#deg3)|cUhyN?*IRHcHaMz zyIJ$*ZGWYlJoUN#Te-LUm;AoZAHT=u*8O_N@B8;3`MTfk|I3f|+3&C2+P(E#-rBv< z*qQMy<=MIW)}ODB|NZ}z{r|rYj>{(+uHV~mf7bv0)e-$0|JBFutC;xo|6)^l>;HdW zym(>#_UNtu-*Z3w|N8Iz<{STSTHm_;|KWqDRsWw$KmULB;``(@n=8jJAHV;<^5dfq z96$fx>pm>L`**v7`nNv5vg^O?wSN{=U;esuwwUwkpXK#h^8cT;&x=W%<F+QsV9{%x z#@0`g6@h!UFwfQ2$zA@ma^3cN#ok-icehuakq%DP^y)qPe)X>V&TU(sX5SBgIpOKs zy|sV*%*?6_TK2nF1Uz6km3wW*-@5^CAC_!iE#Kg2opoTxtGa|8lM}L;ZO_bjCL&~O z{eDeQ;?DRPQ$+VYwhXMj9?aj=D<gYk+vN*^3r*MGn(|$!>f~#wU2{I1=@eYH(zw4~ zxY&5(l{NK&%fC;X_bzpnAwRR2xL?6F(~{e}c1`i)pQh^nPUqPkqobKzXBM{|7ie+V z;P+JE(%<MeY<rVeExTL!&i(Rk*<BJo{u)A$kGhw>on(FSg_&S&lJm;0x8F*n<HKKR z`YLuM`955HW!Z)D5bsRp1ILW5FCTcczUaVXyCwA;IZ2-tuFa@eW3uF$&~46-4?i6L z7}a!1$)Yv$lGLqMi!|*fmF^gu4wkR6B_B5adgzd(?-VgrT-xSg=<dBo7q8CGU%fB$ zd+@Xnt`oD1W|?o+K5~3wtWj>r?3`7XZuv{6du`kjn4fvOeyRS$%65xayNuj4Uj8cG zXLCV4{BBQ$V|}Br=F;s!w-v)CT;{8CKU}t<<VN4s^XrydxtMRiz~9T+cJbqp#K4KO z*@L&_-kg*9`>3>krPR^>8M|y8TBcVR-?`qM7<nc~uWP4&<z_X`MC~P&x6Hq{_dGE@ zzf|Y{?fz#|I+nWS>`9EM@L@S&Z6##nH$!uYikPKr)}g8ck3$OUw>NF`{rJPj-Av+B z(ziLz3mHY;OkH>Ppw;ga{I5!GWFGwF7k{!->4LIxkkqQ<+{y-PL_AmhcwMj|!o}&- zj|4X9-hP?>vW_#R6JD~~Z!x#3{o^`ikBzK<u;)e1Rew)q&wb~>nDQxjjVqU=_d71_ z6D3!@JgmBOawf2a*iVeuJE{KtDvvF_7Qrhf&dEA*y<+VT)#Nve*Y&tvbDFg~G_`!S zBXh9amGwDyi~J6;Up?{U%-!oX^H0>|w-yUt+B~B>e9o1_mMhzYmxZu2mH0?EyBtzI zC?6(#bjG(z?XcYop11uFiu}d<)cQl(^%-UXitD5&U%atA_vaPHE1H$^zv6z^U#tH& z|M~m>k;nh9`)mK=zvX{hj<6U1E$`S?Np}CYwX(Pq|GR$Pk^jbrpDQ>2Y|E=<DG7S6 z$X;<k_s^eQHBJwmJbtwtDsQcIdS3s&Y`^OK2{P|L*(u%(S>~VdzFnR#>*hY`n+Ia{ z&E9aksMeh0P4V~BEgZE`{M_dpCFR6!`ps)kWt*n%WVUI_<X(BH`ab!*M%&|OUe92a zS%2nZjPEaLp>=F;Gt2|;mfiiRyR=#5p-_wH#;jtVTOQr-end)dd42xYzxdn#vwzqB zjlA)XzxjB0!hd-gnYVIp)!zJXF8y;{>+Sy;mGfWmIhbu!tn1K;PJ93Pj@>`MWoJK5 zw>cQL=a@0$>^3_#W8+tPI~K~+_he+X{L*<CZQ$hm>%T~WP0Z%Si_Z#QH}K?MlW86! znO%D*yZh&1v3sd9l|>KPCf+||QTMj0e2UnS`SV_zy_&d8G3%)Gzu!l`ER!|Z;`)89 zKjXLj&5Na!dzWjhHGNaKgq^|nvz&vA^qyt0n`b^ywR&T5`o;Q!$4@M)qn)-*{<5uJ z!_wGwukH-)mTkX%zI)x-c<8RK@m=lCJF72<^oR-^Q!)|#5_HF4&2gFZGd6h=j4H-! zS;U?^F0tpa=crh~{;b(fw0%+7roWn-?(Y1fxhZU#ee3m4XYU<po_8<k(Hzh1F<%om z`RtnFZzNx-!FVsu;Uix|V4?L)lSe;t8A>9`zt^wXeEH>^)@8jfKL#%~)D@iJHdpoa zMr+3l7j7L};<iEf>ZE9{S9S?zciLB&Ys_g{dZ=KAc4OkBbER*0-gPLnF#Bopd{@)7 zf)7hXx)1u#{4SZNuyfZWzR5>|nERBw#LMrgTzl+vZnn#;lp~dsg;xomUOY!~$>D(M z?2S1q7>m1C+^wG@I$Qa6N_-0A!5zGx^Nd!wz4~fC@r2IZZT}2D)~W4@pIVqSkLPsp zM|*d*kN&Ek|84%k#($G(@7G#sZ3UkCJT1NTx7qpMn|;}Fp8LlA3#L1EXFt06N7|6{ ze?)co(fQHuS$`hv)?CHS`z_nUOm~X2e56@tlg7)L+fV4J%-ol@r@oDI^^4#|aR(b- zIW4saQ@6{RFsW?yOF5lghPG#0w{BIE7kePgcJ+Rb@169Df6vp{QoooVol=t)|1adx z!AGu{ha!q6wjNxjKl|6?w;eD4o!NIJDtU6q9#g}W^KVYy!^rXMYh<ML#(S2%qVMB` zo~HkMd;U&`)y2Bzjvc$E-rn~3RQ)FflgA#*mrmqep>aXr{ww7Rlix;{aBBS(iqvM( zy6!#O>+#FG#Ru+(&MFbv{+0b=F6;HO{hv-<vAz8Gv%;-kn<sVm%=7r1KK<&>X%}zr zOn&=7LMg&ux`Cm1o@2oik&-WB4YNc_dOt3kFyC#~e`68*-d7XeOw>&+m?!CDqy8k~ zPrdh4-TQ36ozHA#{C|DLdbWSc6{XIK|86QKzHrSeV45Ve<KTa;b9WQ!vo1+3u<w#M z@VK_Fnxmt=C~(56X({=}f8Q!PIC<R{*tz7j(TAXm`}e-x<XQZ)^yQ<bh$@YBzE8xB z7JGSYV-QVnZ)JJszDq?)HCevp@dR7Xyk3{9>7E(&!t+1ox5jGkHq;VX*|j^zo#~&V z$yB=)&s>sztFD^qeJf5#;ieyBgHwmZM5bUJ6M54*R|!9d`XqNLr^J`Xbv`B+y6#9Q z<S&`5S|$*8MTc!_hIZD|;OKqbr`vk`E;a8t@$}-ZQwJu!UFz|vskd$Gq_xYUe;G@K zIqCj<x_;u%v-Pi*cwBztCROOxR-`^@&q<B#%Uf2baf%%MCj8h*>(oKf&x(gq7cVl& zKObl)t5j1z?cUKo#m0AK9nCpfGIJg>X?g0|u{~a^RcU4zdx_sJoaMmO36@v3bTKRv zT6e*IyV9@57fat=_Ep<%d%)(F=<nUXFMdq?qTP7tbn<h<y)CC@>d!Urlq=*HYhgUI zq>ESN)vtnbb6?Ruy}SuC7mD!|F-LM}gm3cQQ?0UWbL#i<3D@GMFfRGt{;HwxdjCwf zgZsYKYpi*;yi~*Q>7l+x_FE-tXH(XM?p*Y~z2wBUAOEXYOC;z&`h1qb`?>zh4PT!s zF9@BxZB}U5VJ5CAPvb>4G|L>AEUPM4|IFv^%Ke<(zN^jr{i4F}UV9lPCFw2Nxmvo= z)YC>y&ME3*PU(wTR}I5g3mjEgnlW*W)cr|y8z!hc-}iXulAp;ZZv;KLt>V1Lb;YtG znWc-?2QKL}-RQMZ>}7G@#cexSI=}305z#z!M7h>hRk>bb*RK;w-+b3d@!tG@w)@%P z<m{vMM=#{OR_zU56{eQlkrrTcOz*I(i~6%~+J@{ds--KJtUkY}liNIGE90j6)hae( z7uWKA;YeV$ceyh2Df{~Z=I>L}Xa4>E^2Vaat+}(UJ_if7p52iB;H0ymcZtp+(}nsB zALDY0QVo4hDh5|7KMekLeCO|FOcg6V-upVf+rC@ldvJZ(yVZto@~^TQ?@4u+J64f2 zQT66_nP%U^i`SfpU0e0D_+ONYR`D7I$J7sN1g0j&zFpj0&QvVPBfK>D###$;)A<}5 z8`B+HDvUmgJGT@Sol<t1)26QK6#uUA;q~a#9Ho^pC6*~CbYy0giJdvCBc~khwWjBZ zoOgDg+Y680dB^hVcc{%)6808(a?pCd<)i;K>$n+TCUClz#4QaddhWVMc6WQ`URQP9 z_1pJZ7xtWGJ$f=&H>K=Jd5!LA-<})qTz!oV-|6f+*SUVFep%Tv^ILEFemdxi-z#|_ z-g3I?mSx=5f^?<(%*<<EggNe+d8AV?$EGBPrEc!s_dznRCiYf6J6@mmvFhX9uOijb zD^C_>B&yB!=d|we72K#bBSt#y<_tT@|0yat1v3}@ewd{5?0A2B(5fp2*&XpGr@2MW zvfK5?`C-t50zN^W!xF5MVnXv2+ovtOV=WeMA)j?&zpJcP^=S^nq$2H-l?IERElPCN zo9Z#Yd*j68LR$qdC~@0uy7Byb{SEnd|7NgxaeY4BrXG@(yk?^UN45TChmOrlmHy7Y z&2_yh$3KFl?fJ&}lNg2S_uT38TJqLC;M%t>uTGY(w!AEEE-9@kHG9K8jUN$O`P<&{ zsQq&I^Co(pyb5zjj_uP-tus~o^KXh7Hf0E}yS{l6qn`1W!_rcn@n>Xsrn*Y43UH}k zFeTvTi*$o4%xC3y3Ex&&+Plj@C`;Zw$b3y&P{j`CuJohZ*qlXDM4i9eJ&Lc|&>QVl zalgAl*v_LwASv#fqFkoPEuAegH<!N**qpXWH}%#ELo>C$Ra<s^<B-V={r&62rsbPo zxur#~UAHG--HVf%os-*d9eeuK^S8<3Z^dC7!|UHMMjYFDaKhgi_gX%>g#MVaA!*lv zJU-qDhRl~3G7ZgM+@H{DdPKan*YwHuqvslhyB90&yApCKPvgF2d-jF>{rj4~i*Ttc zPra%&$7_Dq-+fHyeN#3Bnil!3Rk(C1IPaon*1@$0QdiXp6uvlPG1b}Qg~GF-N~TWP zukSfDg%s!J*Lz5;an=-{nrqz@bxOEM)98)YngcDblN=u|%(JjJ`yYPombnT?lI-zT z$4s>^Zj;WQZ+c!SaeZ^b<M-1yZ@TKYW8$|dL89L+D-{xr);)IFqp|6&+_p)(cgl%X z|B@}^JT1QYtlaF0m%iOP99emax15vp`s*k8m)0AcmGBIHq>%r=J~k}0bVtwM@2(!k z*{j{keoI_?=d@+-=SbJbo9}u|-@L2E(_($W5s9MCIY+<mNIq+G_t(VlWygQ~(5#PZ z={;>$G`&mb>ldGxhEGR7e0Y&F<=CO8Q*5}o_AEU!V*;OU;Q}9}rY56|v|u^y<&)y( zeA>rw=&;D0RL%a$qHZ5fS=nr@pYFG8Ma?a>JK@{*l_))mYWN`;$aF;M)MZ8|uaj38 z4><><@;}lEshJ?YQT@~!hj5LPl85}XV|%Sr!s1s)&9R<8^<?d~Q~e8`iN3O%`1Ici zxyCtl-4Xu+qpD<X+Y9Tsy}b2axOmZ#iNU9$)nbY_-&W`A>oJT`wJ=I-WZeGwW^KLg z-V>EUH-85Q+<VV^cH+FSwG8^{6N3fI`s8MmaO>C1IQIN-ZIUUI@fpqz(SE*t(up_2 zE;X)KU^{&;dS7Y!%|8!}F9y!NA!F^M%fNC%{LPOo){|u|?rmPahSB<O3;Wjtn>9EL zW0pG~;_@u=W7P^vGyE}a+T8dD|J(|9%2{`9s%LQ7pUfLEE8ywHD=hb~?7i1j=9~8Q zD^KZ<2#yy*f{Z<zIp4W2uQ9u!w)a$})GPkhzh+OiAAR4^{khxi&%wp*^QJBMsUuM- zb?V+#xA|_R>)h}C^ZX)dwA|8kUysEl3GUPHZ3H*0*kJsGW1`4jQP*;@FxQ8bQ=)CN zTGIJ0>8MNBPq2JsBOm%*N9y%S(F;2s$6s`K`qlElFSlO@ctiv58=aZAE@p$U-K6jr zPc|Ien0}Ypi)~q<^mz`h`$r}<Us+ul5%c1R*B$dIm({2AnFpqLKfWb%;L|bV&mp{5 z8ebMxNp$6YyTPho6~yf}<?2M|89IEdN0!OIQng(eeOgNKL;2)-hhkZq%WnJK=UNLG zSx@xob}2pXALy*f^Yq5Y^IvCNdc$7gvLRE-ZvA29yQ#|$UMN;?R<yqGr1{~u3kN=_ z@kyU3T)@92_p$T5wDkrSr%v^Y^5`Gq;(oOG$|1#rN2k=+%u8c(@ia24_@=jeyT-?5 z;mc-k7n<mtIYnlzyjY_3`G@r@S#RdLGEdrcn``mpN4ZORTFy1>UtGerF7MboRqvMY z$nBNI%Ot1SZ~MAZvv}c;n@$^IepMa&S+OA1=ft1i4QFdSUK<O4bN%%@VMG3vSL|<Q ztUaysStF+R{<hi@!Sm;`zfW$nFEmkNop<EeX6IM&E*6eAueD53S!L<CJ#usQYL<HM z><)eJ7=yJ%yW4&#YjsG!>Q~+6omkvECH?6afwrxx^FN+GHeH4<J%{(-cC{UT&Hrml zF0by9{mz=JpSrzf>#^{h?e(VDreDgu`Rw}9HzNDK+?)KT$WZ%H;bXaHK9ZB8Z5JLl zPUbg!cx+wjkCogOE3QfutrT*vUDvg4jm2u?vU<txH=gTGeEp;I=k)z0!jb2`b$x5w zU$Q*^VZzTZy$|P3Xq&HO{^pM9ntxxWPsm<cS$X>NwRiQ7_oC$V=N^g(m)$d;>(DEw zAI7`uFFE`RSuw9&eXB%EV!;19eph>43yh~v6XAVw{&K~g_6yasLdt}WPuE>=F@S${ zK-wpvS0An@G1aH66<xEn>G*Z7jw^DC{e35Ydq-`acJYD8ezE)6AOGfdzZY`&=k>($ z@@w(_20zh<7Bk;yt*z!}S!uFY-g!m3Y~i8Lx2`AcaxwIsyhBKF?)}Tb9T|>CtX=Lb zJ^9MD*mzUwhnVJrUw6*D_2tszndLsLp*_!+rWt(unWEM9;veS~?)t5-pD&E!=$N-W zT!HhhmI=qj*K=+$bHDWGT%h!9dgedvjlQhgZH;QC+g_j7<0ALMdfVeWN7wnkIQm;^ zf3!dghumE`O@;aCTXJXAo!@-y<Kpig*B7dB$!z&<!q@#}3sYf-y6;)@ZOM~;mT+`7 zvG3?$KYBrxv;XQc`J-8GC%V#%>T4$4JM^ab*NQurX086ps=e;zM9VY#W*BRwuVps= zHM??Z_`F9J+doAY-4Ha)FnyA-k#`O2;mj$jcLVlaXIY-{VZY$VD*^lLtJe5x90-%o zao)1=m4o!Xm#>;~rtpOeg&qE#tdsvvdE<1y=m&StUt1ZP_jQFNH)qF{=SI7eS59HQ zSASHPP3qxC7M9le&u1yWwTSs->=%>xcItz8;r7iN*wSCCpZ8r^G0T|o*|fR-)m1%C zVVnE<H2+RZb&Jq`_$sS>Qo}UM1)e6~N{-KZa{I*>vqP>K%RZko54`fW#nU^k?p)RM zt@+LumVEr&x>14cbJw1am+ay?O^tSMU!JnsdOqvNdYjvu!!u^C{l&HY>dNCE--VT* z@J<vhO?|#wMWIXP-6Fkplg^b_+O%$MIK$XvmcFZPa+3P*4PSz@K2&nf)4zIo+o!|( z_oe)o2>kTv-^QaYg3)fL^F^1>EB|NFC(rh&OV<9PU%0}}NwVu)wz=-Em76^)(%|Fs z)AJ+*bN^}fYd<%tUwgyx;%1eZ^NamTo=xOr62EAYYol}ULGL5&grs{@j9qSKe-isN z^SN@xvlDyGKU#Twbzs@rW__(~m;IjuPu^YNiS*jE#XKo>a#H2B!1Vi5j?|_Ih8{Y3 zCw`qzRPD3;O^>ghTqeXP?!WEJmFunss$K@0Q~6%DK3ouOFVxP(b76k{uSUyT`^;_S z!=~Jr{`|PzveqIU(Ye2PWCQ)5Y^)4hI7RzxR>U1iz0UHZaUUc0pRPPQ_1L@{wsqXQ z!X8vzPWs1Xlm3K1c+Rq|+jmEQ$oNp8`sv*Z54naj++`N~OOKzJosjvv|H)wwnSWo} zI}~U4yo<Oqi^=)cN+*MR>zxc|pSG<3?_(>{|3Lr#!!1AWdr0-3|MC8i-533d>gQJ{ zc$KM%eLZDzX3D&9P3}c|&pl<HdH(c-OUV---+pWz(%rRk!}aCDK{KWsT7P*gt}#{i z%fsMrQ}>@*qdhzSbkOnmgHOX|wpXl(G(K-Lp}8Yvr9fZnHl|J%v2dxYX7kD<(^hr- zFxphFCV08BP-F^EWQu9q%E{jOxt<D<7IlkGp7?b1`+2o#kGdZ)S<km@nxA`vQRwNa z#e4$ltGTT>s-wFu+KA47D0#Cr(pPD_*Qa@Njx2qCtYOpUDTitl%C@`rPSalfLfn2! z?%7jehfXEQ?R@d~uE*p|^&Z<_Kb4CN*G%~M@yzL|8~4?_)OQ=~_fYnK`TqIKr8|8B zPU<cFE%WTO$=rntPu`v{vAl4e#Z2La9w84GzdQB2vMVI&zF6pwZ5pEe_e-v&z7B3k zkGU;-OQGA$$cgd5ROX5PCr%2s<v2wiFH!&ZYsH52$8{Rk?30h|n$+Yu`Tl}>?>%O( zUas$nx>OWp&^_toqpS65f$MxSJ-?Xyb3Ltl^&+Suv~2pE%1A!n6#^@`6{}yK@nXBU zc^8ispU}M%!PiU!`j;h(`L2ATSo?YBm#&s?qSqwCUtatDYw`0gEls7QytPZ#7zxxR z_8*!qU9=<Ur0mP$(#E#cQ|?UEOP(})|6<j>iyZzuS6OfDpye9peyi@4M14S#g5|^c zh1Y*b<iCGh7`6N323^UmUvD`-_g=Qx#%A@GpB>+ROf5G#r+0JmzaxAf8lM{MJixR& zNLFFD<;R4RZ69LYTq4%ppWF7`)GFY{1FuWo4GSzU&u}*Uxhr_*VlU>YT$NlGSM%rY zsb0V7iec=;lW8nlOQSkHcD_2SQJkuKwZ2eKW^vTrBWh-n?{C~XrQ7*7&uH7CDRa!- z`nKLms28(k2y5FfXuLXE>Eqh;Z!zaTtTudpOquP_$*21+DOfDMF3Nh~XjRO=C(9#G z`L791k=gNK#+vvWsfP73^O%}X8F9UEG~U|yFO5^MnyaRNdu_Z*#Ct>G&<L6P;S;8P zdSia5-k9%LT>7$<wR_b)d^}&5UEDLJBHDlMv`N{ojuZtI<<33hJN<x^;&Hj&&V{po zY}VVi!d>xvs`|;z-@7Ee`fGBIZ{9rhQ9*mKz`Lij=byRPa?)?kq^5S}`mM{Zy_#IQ zZwB+aeG<Dl7ED+Yw<kQ3Rcgxp>(|0&%-d8{?ESWEDW^Mky<|*xy0mSwu{-OB%o35W zOdUI~i1dZ7HqUn7>f5=I=YPQE+ILl~(lau8+&YA$Q!K56TUCEuTE==`tY=Pi{-UW0 zc`_LdEi+DNIMf|>s7#7keQBp&`t<b+_IKtAWGZwl-q@{>xAy6uNk#K~zb)qcxwLst z3Qu^s(YCW%+wL8x7pw1CRCVTUNZYC90%e-E>mBZ;eu>(2;`ClGP1Y96qYow->9IDb z^N1$p6f#C$Z~u5FDdfr8*MUcG?^9oNZR>wt(Gz<nc-(jSD5P*bal3G6mMG7r66RpL zpW&=>yuNo26jvGSl9k(cE!Tc~;_ad{(U%$bFbZ?eF4Efk#3+&Zyus)9^_;8{lYQBz zzcP7{+Pd}Ho3d!}yWgI=-mu>oa!vn?!Q_dz7v#>CGfKE$Qls4v_P_UNu69AMTHONP zLissI<lC-wXV<vw;c2~{96alt`#E3k68~3Gs{<8{UM}@cl07OZJh>&^N|o<|;*xF8 zJ_#~zT(DI=Z1ro$*y9Zs6DMCux-`9BFleTO;^E*QZeJZ$j08KR4tr0M*nQx*&$VxD z0em78_qehAZORD^-ur7BdvM1Qtvg4X7&L+pt<TgG`7AeK<&jg-cIVSPy8kZ!I?>0k zV{Mn7?5g8+oKJ#p8%z@{|F&dXebL&``%!%l?S4dOUwxY$c(-a>>LmBCX+57yoa|RG zORn#UeNfd~_tbc0@}q<Empt-a@rG|*<bI*jcAw*ErpXuc6$O`6#CldFiaud)%KfhW zb#8*my?;LEoc=7|^)+2J==cly_OppozvLyCzG|%IKC_@}ZsNh+p8FN6*E6o;`5fHb zDYdWR=K6ve%if-EsbkalaW64oGv^B9DPgJJiayb&>sQ~j&e65?^kNlW7kc}x;8OD= z7qS)Q^G@W)@Mc`t|9N@nho4FHSv{XMbJhwbwnm@VKQ~F6#XnI(r8=%Pal*aV+fyY} z3O`IS?6l(eyYhSwQ_8bPJ@YiWS0A17Lu!S{<cU|V1YSKCy*J{ASwZf`+3rtGk1?ex zZ&|Nn_DW!iT4P%MPj0P`D<*xum?<VS^SFq}_2o5QOsCR)ltU(Ln6!#P$ZOK7%}sMt zMQ*oFxlti&CVcTskeU4>0h_b(lNPahT}w#%Whd7yvuaM?>3N4f6qnpC;PU)mo||#! z<;2teVf|%MTiN<vFWkPtUw=o$*_X}&E;TwrYfbhFeK!i7cGbJ5%eJ0RILo*HW8&L* z!Jwzd?U!$n{_rJogS8d=LY{CA?%0KO43E@9o84X*ms|5r_SDKyUb1CsUQJrY!Iqco zcljeXXRJIK9=zNqHT3yvo7mW`znZj^io=$P?cPy0ZJmTwS6SE7;BThNrK@Hyx|Zf^ zwjs28>crRe!4Hpi2JJX!cJq;ceQmq;jQz*gKMc6HTzl@EGv!N4Zp6G?_w=99N9R=> zk%`w<3s^o}6c@2_cKBYe*Sq9x#XELyf7F!WC#$x0@$&^oYD|{9ex0uK^l^IeuM<_r zZ)|qkv7GIIUH;KW*}}(-`A!G07_Bgq7cHM@lpMvsOIdEyw5!>Xdl#&kr<gObyH>HN zKJ4K%f7K+xXn*Cz$n%m++YU<>Jzp)f;mp|%S*E%*^X%U*T_YQ59J`}v-O+VSO39aA zy)?_6eZcAa{N$XxJcI0xmHIJJH51ME*d23Z`l)1axkBsFPX5lP6Z_-t#=kmty@1!A z@pQlb>Z!&5R2YH|1#eruJ>*jzPeY7<nVHK|%PsZZJzi(o%%{E6kJp|1WB%Qz!KZ@i zY~C3aE;n6QEz;qb%09hI;)=d4)6|D~9~rJhl=F1okeyZLm9OAl<*XQK^WE{-EfuSZ zB_}wf{#n^P3OuANA!wVJ@;asOK-jjr!ym%7eUbig-uTXiXUE^$9c(M}I=|X_^AAn) zEx`^EZ`;ba>KV>ISakd6(d@*Dr}B&cJGs0vo?Mvya;fch?YqyX#vAi*>FzYx7Psnr zWZuf}CF{fTmVVjuNczG4(4AA8nx7Xs8XWC!diS2Czq;U1&2e>yVq-o(g$eubJr=fm zQ>XEqp_RW{Q+H}{3sd`{P``5F<1^|Pvumy4Utg_bo48R~a>L{L{R!v)_fD0b|M9;4 zf90>st|cwk)nRL6I`ypH#j>(!d4%qt`?Fsjo;bnG?)3W4bA);f-<-a;@Yvoj2UZ?d zmWjyO6VLuJ=<c86-#9<LID6dcQln>s`h`W4WY<4>^Z$yU{C}0bDf_jpee}Z@dmq{w z)v9;%|K)p|BV8tX&pB^Deb!f<dj41b7u{7(#P1K=WEc3I)BnofX-nR`;$P+aWw(*! z?oWragzws^bMF4Zxos)Ojj1vL*53QP<}H}~<%IR3ZJw$h#6HfMowD)_S8G<=o+kwf zNACYxcYTpkqvG40apAgsn^IF|NEwA5|5>-^@;jA>hAwO0oY;M(PTcmo*~J^evQp+I z_0{svAKJ}`pH%3mZT571<oQ`&b(YjWa=V>m(|mP#&K>ulTN5^&j{YZk*7oJfiAOCM z&X{CGed(TbuAop>o6A%2uS?96GuM|#Pq0one>(cNP@Rs(?4I|r7d9mMERk{h%zEGR zO%+cft25s;-nH?u5q~#-;Wk)x>*pEHZ|9F&WKLRJ@3Jj!wa0$mKk3<`C(k_1oWOnW z(d>l%tM^{`u32(p&${PbQ)WD$x3A{6J@cZQ)BZm`{{4L0T5-XYX^V9qcb$0gR+8o0 z`T)~}g9mk@`xc8{K3l3*ac$M1sL+VjTu)bVu{wXhdFanElUC0eSzknEIfZ>+?af@_ zHp@xO<-B9?3|?vd`oOMb6RzGiJ`ot<609+0_J=j5O<Nztalf0&{cffu_jxn*hbxa{ zhJ9as+ONXxkqP&r=L&x5hmUzrQS#edRek8R?hfyJ^Y8pjD_bJ#8c>*Ay|AWp(z}^C zfj;&Ifw8au{PkfebN&9OZQ1d4OfP(G_$xIzXD;NM%5>JO)SjWHIpaya@hrU)uQkd- z`8p?7R7{BWFMq*cHf>dc)Ec`zoD<4}4Yu+uU|Xyxk#}{gx!62|^sf~hO4*Ew+h>G4 z+iEU!A}Xl$!Dg{#E((@2m2JMh_V#(r@%Uz<l6+fOzJyowrps#@7X4wEyR!DrbOnx^ z7vj^8#yJJYZ+_qM+)4D>k$-(5E%oiioJU<%bt|O!Oa%0Uj&r;ca=5mK{aDA}&1DkY zkItUlZ6|a6<~Q}^x`fB>#lIT1>(n*>l6F4NW$e+FKG8+$U;maAK7o|D`R|slsQLf; z+xNw9-}k=zp5M3M-u~ad&*x7~yOeFzn8GOWui8@L*}X511lRPQ7cG(NZ9cUztWj!P z{n2%WHyoD-KRs{xuJJ)p-?iw_qPJ{ods*LSY`%Mt!C%w8ihb#mmig?b!es+jiFTfS z(p(k(^LW|q6??)<pFS_**1CTpAvxmfx>+wuOJ`?h^?z>p_-?PyYyD$qK3n;ue*Cgw zMcBUSjgM!joM29B^Qbto;gQUOv>OIn*4)VSnKNC#ep{&eu4*S|M&@=&iJ$DvAB>J( zTHXEP&-G{9Bv<`isa3yCzfU~=n&fgGufWiKQ@*@VjXD+3Z^^Xp+UsY|e`j1gKWE-4 z{b0_gpX9DReQqy)!Kd8rwCko%DbFkWE5&|E{r{aB&wSpa<mvSTtM9JUP_w)DR5_k` zecAULMRxb@Ush!o(KM=a`}OwEBs*jK?IM!?_A$rjZJIpSUb3EF<h|;b&n%Z_eBT{Z zxaP}Fp~^GAt9cstOx)T$^F^)RM;({^T}yN|;ymjnomR6JoZfh1eQ=f7wZb+9t%`=D z#^N%W(vo{TCx*(&IlY~ktRQr&w(0vj6$$@qn=;N>Oqse&?s8Q0qe*R*J1t@xHapEP zTC{&BUz<hLf%(!e4WHaku0OwbJC7KTVcPGBMH>Yi?fYC#Hasglv)d!xKmGQ`8O?X5 zyf$7it=#4J`_HVrTY>|wOqr0}8<057{QZxcoqbz3PTcDIch3x~G-gxYS{ViguBG`` zS=;x^`ZMZ0zbI*|{^V-mFOT;A6)W7WqdDWBCi?jw4y(L(D`r;>@B8;(5;xtb=Uufq z<Tqd38|Bc;6W`T}gfH%Td}iyazUixOF?6~g6pB7y(eA@z`!+3vt!Kw(k$e-O<)s^5 z$6G#6e)xf}XWRPkK3`W|*)XwQHBDlf+(dR?w*qy(ck>zA6YBU?Cft#mZkn^Nalzl8 zPDdYYKeguV!cW4lA`ArM>v;ctzqt9;G}FblVrLdVHcH%jvv|+tt545p%G%}G1Z>%V zCG|{~P1Ysp_y0Cd?aIjapZV%o^XG$BWlXE{4_-RI=W;{P;oF-MrcW+#6scEli3*PS z<#%Amyo^3pfi~WG8?L|4UZd1qvuEzCUB?~HygX^}cV7C%v@oj;%M%;F+e9m@-)pDC zdf7YwmFeEeYcm*Da_$gsJ%8i8(%u`pjAvXZyD#})O}ckg^{0(haT{wScJ?lE*sfK^ zTPv08Q)^i?Hz8t6=y{i?7Xv(eUGJM#*GngT+&gQtpxrt9W=@rjIx8jT-Q$0D+4895 z30t{cQro5#2Qk&nUak~xsB@oT|M|ekNW+Nue{&Xh7ECO4WqsiH@7kUKmud4^+H9|W zcqzl{HeKD<>xYWG+0#qC5sQm@%RIj?lkeUpx-K!N=YP}=!<}nZ8gASoo~d<O?Ns)g zTYqZnlPYI~o3JGJ`q{s@v**>8U8|-hTQ2c>S~9on!jCz3|6R)4J9qu%FWM>3-fX*F zQ+jRI`ui;2J;F9NF&Rw3H!}BRR_zIRyi#X+YvzrOVO*Ds+9IXI{;_SEc|-Gg&BnDB z$7`-FeR=+GQ`sWDH_gG(vqDao6dpdbP)g^-vV}*#9$lqW|4RB)`LfeyOs<W&8|=3R zEHZntoypU5)|6GeA5~W_F?+<HCAjl?K)uMT$)~rl{g=*~#rtuo+EQ=ln!u3bZGXa6 zSfBeK{U?7#xY?2EQFHvwlJ;|dot)6wdt`EyRCe|fo7+__$!tIGA1zwawcFImDsEwZ zvwCxjL`><a$+tegx-`%4(O$ck9~-p{TxA3U_5QA~^nAHsp|Gs0o0>xL62+CaHi=q7 ze3~ysIOSXNCN}j=>V5NDHr+BntZZ_Q$ioc_e=kW<KdBX?;{QmYlIQ!0<jLopCF}Pp zM$ZiE5?0+Nv`Eb1*1S8nUT^xgYt3H0?DeN%%=lH;Q=b>ReE7ff+o3gk4OFWW)%qW{ z-2A_2j=`CEaeKMdF23iIF<4n^*ZW(Q@l<i)z9$UFa<`|>)$f#>XQa})`H#}O=}zC? zi)QPK$u2mudYS98b7lqCwQfeKR<~(s-Q<h6TgqBlH&tnx@=MJnIZ@ZO1-3-qwd-Bu z+x%>2$L*RMUXylY&b3)Od4h{Vz41)>^*@iMG;p$<JH@D7)#d*}tag`;f5eO#-qOpb z3V-_nn!aXYQI5K3XZ5am%9|o_rwr+xB`UXO%<ro>tKZhAbV9d#2FtH`lV*s7JG%Y& zsdT&QX7oDE+qH_Et9R%8@0MP-`D8?+{1x@n$7C$mZK!_Mv3i<b`LnED<})5d?$-P~ zPr~$nT}xG+@b?qHZ?P|(%<sWEgDst{wM=SSmO-s};y$(F9}X!(X_F&dW%aZz4<)a3 z*|cQm!}F>6KPEcQol>b))H9jUt5A8;Jh4pQONC|8C+#ltzY=@%{yXR7#jYy#VTODc zuQn~-aXj#Y*`j2D*QKJ(6KZuWx)|IQr8FPjICp;bn;BovCg&RO`)2+>X6KXeluJSE zoH|8p;VIIWlZ!i+?_v**mb>fr>UI$O?jt#0V;&nahEB=tS5pvZh!e80o|~#)(38fa z>R+M3p!{=Qw!fQS*|T}8-d`~Zi~8#;RsZ1ak<A(h);Q>i>)0Omx}qTaswL|DZhrBw zM;`2dzADW#6Y#bQ=aOhRA$IA!@B~JVAI;)%ze*Z;-l_;57gp+LsyuX0m{oMmrbS;I zcJIu4zM@Dm?q!hO57G4#9+sy~sOhzP?jCUJn%)beDTjKP*>9Y4(C96f$b45bEqnP9 zVUDi)_=-a__>=uZQ%lXJyf@wXPwLU>#q#k76r%qAWX&-Pt8HNXy6Y4(&lEoSvsdTd zefx%+BmCjTb4@F!9Qd2@xL7WF)vx6X@4vq`fBmcA`zzo7IY0H^OWu?3j=xNvUc2ev zyLa#8Tkn7TdGFo7dk4#JEe};-@DaS*{BHlnpZD)ycdLkqs84?X^x(aV_x|y->%ZRp zI`rS!njY)(GP`eAe_j0RAm8te#l~)>Z;ovHFzLd_EmOYMmsE7re~;UDBlQ2H=L`}D z%B$P;zsJcm1=!axzW&dl@zFZBeCq4^F9}U5XZ6fq{}unW(XFC&)((k+=Km$NAI};e zHLrh_e<5=H0+lZvW+wmI>i^!lA+VjhX>Q_I2j<t&&03o$NzJ|=Ub^3XxzMj$-$UKo z^>0`I{&Cmrz3*&Wi$nL74SK#ZPPx4%^UFHLTe<Oj_W78r|2bg%HIUhXMfX^N`oU|* zj=7z`RvRDOIdf&op(v->F}15Va#iRhoR{rAu*X3;bn7v{_}Ih0F06~5yYAYadZyX? zGjB^(vYuhc_kFbe*Q0BFdB4|{<-eTu@=kQZ<%eZL_I)4XzUyq+^JiAtHTF`iJgZ|j zj_%ca#r-QYHul~&J-_vOx5e*Dx#lW%DXq`9TKl^DSta)@&Z^S4;pI*YJH9V_{xI?s zhv93%FOdf>ED=9&L8Rd6jt~jek~_u+_sTKVJ3KojATgmo_`Tvvp5}y_J)4ag-hOtR zpI7{Ls?KFj#k%GER;%JWeY|f3zu3;TH*5QLv01g-?@Sfb-xImvwC|@D*V>0EcTaU@ z98g+Od}PCF<$?>_&BN2DpAEJ&ovp|rcwPS65yvC{@{U`jZD8oRlK*U4>TEHQxccU; z33)c<MhW%BM>Iks1YU@z$nn{%;oZE%>d@N>9^bisFK^M$k*LqoD~`UA=f8dH#Cy_F ze!uMgWv_6$ay<LUE}boF^{;J6yyx4X9U{^7!yq<Q&fb05!}DGluO<{83d?H#Jg2Js z(dMJkuK%5vWJOH;nyOUWl6&Ro<y9^L&UN0`o*ortKiDycy}mSUW~ll9uj}W&vaa2| zfA`<VzxU_-eH~xVc!@)M^+t}`#&d0EtN0Vzj$ggIw!HfI?dtdDMtWJPlk<yeYNr+a z^E6YM&$lts^YpL9o$B&k>q6!;mS=T@XUFE}{$Klc|JJ|TzZZc{+F4Nkf5*1}`wD;i zzlcb^QOEkmKI(JA|F?4WZ};7)-?*Fo_5Y)%#oM!gzn}f^KYP39zy154{nvi@-@fJF ze)(^Ge2o9U%JcEp+5Gr;G>WTc@gMo#r<<<-KP|4G_VK^-1VQ%p_7ndfo<9A4i+J|G z{n!3q|5LyA|9X4v=l@f0F?@dg-(CM({F<--P5;M#{xABe{>uOFeBa~N{QN)bfBk!j z#^`Ck)7k#l7nW@K-SqlDdqTrLm;dK4-aBpjKmKTY*_ZtMn@7vHZ%^`$FPE7fyXSR& z2Ll6-l1tdZMGOWDW|*DvjSqPhy)1Xb_GQMBoyT>5oKt3BmTYx*itX_|GiTi~Uzh27 zZFy$ShD(oE9-J%?@iTl^{=8(KJm1}$N>9I>Q9p0#?Q8POwr{-1x+6i!J$bF*w$FXJ zCyF+_e&oHV>gqN3^0sw%<+Hz++JE>Jv1-@Pzw2+`@87oHeAoT`mjC|!`SIKD@9%%l zuI+yOw)y+5_$_Da^RE4fyQM2Txo!4t>G!F34&Ik*dZr=~rg|kh=XCh;+Do?&{LQf1 zqP*vz+0$S1Uh>yJ?$=fRcjS-Bu_xLW&S{vd1X;e7UGV7Jxi`BFb|zonR(1Kq)ceIB zSA<<O@>$Z)-kvD2;?s;@`%{<idSq<4@0*AGjLwT6r-<@hV@Q)&e_kl}VO{c%*K+yu zi>GdsG>}iz50I-66WO(t@9^^dlI44&#cI}xq&l*1_s~@2@L0mK+oFE;cM-XScVcqq zy`MyhivG50bN7*+VYo+BR&{CdbH37J2ZRK=pWXDVS#D!yf6;Zz&3UgA*qkc12{9ku zpL%@X#%h<N#{11p+^fEXN(eQ3KNLS*<H2{zfBhi_TS0*{4J9vrozjWwILvV-c}DnY zGxlYL+Dg%f9-TUESn~Hl)hQGI`Zdwlb|gr@f6!}@9XTbzM8Vr({X`+l^@|Vh{TS>v zi$&t|@m$t_92WxTEZ-(^z(@0J>+%O(>b0joGha)8wqfDqNY^iQ_c!S#y|P>yv%Woe z>aRFHwzi3THJ-$%8kjO4*t72A-}k}~u5ZZdy)DTb7<6lmQ*CX^&C7d&CP^8cw42Rd zf5CL)g$KF!PIVY*N2wq0c{;`E4d;*NsVQ16A?EoR_l_KVqrocnL_x5ieV6^5&g?Ul zGsQ1dxIJ}yB+zMdVrD_I?c#!j)vVLH?3r)qeKU~07V;vAnd7|4*_rQnel%tlPfV5y z)C>qQy6~#H;nnu?%M$mST<`EOo!>Q^Wtn|<`PurYgPS8K+<HIfj_dRUx#I`wgx(o8 zKU8IP7B8IH{xD^#wqCZ-)=RAclS}+nK5E4VH_rMQW}+b`KXabXkEuU*_~fp2KNYuq z)^dY6TpZrc#|p}hy55xN?#egl?zy!x*;eb@w_SI0@5b%hd*BxTJkc539co|tUdR@E z*YU9Sw#%}d-1^^B;^y3T|NKVh4Kvr%?~Z4mn9C*xe@-x(WZ|2xJ~2+}=!=uHpP3%I zE&WQa`jhwPD4RXU9h^V@3H`mO@~^htzRfasXP>(CkXvK@zSrCI>uO8OesaaLPBY%S z`R?uyzT3a{ud8T|Z2Qw&p*6ol?9i>}YcGF0yHmr`h&S7a>-6UBi|WOyrLWoU-t)ur z%9hx4foq4&7m4lTe7!|4@7zbtSu@^vE-$^Ccgf~=%H_`GvEMu#?!7ZAVSTvbws_G6 zhr~U1o~mwb?U}f}gfHbt_b=rI?2*%Y`}QX_Pk#U7@`k(L{Qq2>YdXO{etxXk%f$O- zrT^Z1`Sk2+B)7bjUP0z$``o!(&ez{G;N8r=Xr^=dtv8!C9S}aGe)rqXnyzPSBtBQJ zzMMNReq&(qY|9#Txy|bPw@EyFD0xTmWp{N<m(aco>B&p(Em?W>=MuBoU%a31kGs6y z?*CWgzrRkXKYnk*yZ>{!3zwBT3){K~CEp}{tLNJJ8NNI}lQPO)$nx9f|8v^^?x(&} zbN#uA7nW4*TJhcg*H`xWL9hPyegD^Wtl;?Z3%eAR=6)!@@=P}Wv#4X)amDJdZFRh? zGYy0u?&mmX&G%ee>i*mWM*EBF8P#2zijO?BQH-dPnKqyET)*<c6p8MK`#CnrwZCbK zDy-1{zhqK<$0U<Qa`G2BAFerG`0aD_tA~yIcP}Z|tN(vALaO~2?_a4;@#-e~=IL`x zpQ!WS)mCCpJNKd*cLCe8%^%wnIC~U7#9!HcvN}D+!JtvB_u7-iwZ5vq_dI#M|Kj@l zKlEp{+s$vk&Qdzx`R}Y3o6o=etS;2VtjAQZWWg?T&Ulvc?DH4To9ydPs>x|Ail|%m z&+gN|s4HD3qkqn<ud98szi!b*z8@L&iy|dIL{>U4mi=^b-@<=wd-j`Oxj*6i_cjBI zClWQzd-*Hh=X2;g_f0pya(Ke`3(F)o|LEDea>-HeZJArd<a1|#NGja3g;T8i@Flef z9X{{bRU2IRx7^d+cdvd?6?0(!#}K=H`!DXk|6})l!M%UfG$w8MGBNpOefq5Z{WbsU zmKoMON&YeO*Y6X*cdL1Qvrzr-lUpZ}d+CQ=*Ucpx>z^e5pSj|>^747}GhO6=cGN8k z{aUEyA}yTtN4)povt*0K|8nl#mlUpdint_mv!?G{Mva;LeM#YkP8C7#&EEf=bIknF zW9#LHJuKH1e0nU@&UK!1n{)2m%#g?Rx&K@y@LHriXF1(*xXAB@Y~h=E!q+7V*A@CM z{`w>1Jm)LH_FqlM-hJ2@AHd%i@!rLjZ}~j#rdtmK;sw51EED+RbMABbmHCH%?^fWk zl4%ydviop#{$&XrySCH9f1ZB(p+C!a`uS(7z2~1k-mQ}Nswl6@Q=-I@ZT*U~hWVen zj+xg#d%Szmq~y3yrh8v^m$&>hJpM;CvF?oF|MFR9@Bhq+3w|&6{_iZeCm#i4gFW+= zu81w$@FBj%aend!=e@u8eCO-E`#kymg^XIeTYO(1e3r8^(YBjEm9O{O^Tlrk=Kgf@ zGj8=+5daYkUi#yQ-U|En@7I-dI+twV>pdZ^yr_Qb%g<YHE}XPa!}H4H;#V(&-ZQ@6 z>-}0^pvxdp>A{Q_LTXHXoqCtqm;O3ECH`Oc3oC)5Uz0RDohp-73IBI}&-AhH0guI; z*hA?DKHglqk-g?k?4g7MhBua8WUJX?&hoXzxz<@#ea{o#tws;m-VsQjUvTapckjb_ z{SU>PKF>S+le_+4<@tv--ZLs5%&<_L^VQ-UBpXkAW&5G(zrvoHM-@M(R?YY%SGROh zaNMW)R}RbXX|KO@=bs^GsP{vT^s=l=B5L-&8ArVA4-~$b*t4^sdz*;q+UILUcMBK= z2Byt<6m8{xy7P|GRYPB19r;ghGum!1KJ318I*YK>-^X)h>+6l&!sF+DyL%vJ?e2RC z?5BQNKRUV1Vru#9ofX^O^Yd?aPdNU_*81|>jnDgh^*8wZzt6wzrPTZtPI85FAHFu3 zzNI9ULtEj|y9AC&sTn(xwyQq+;<3}!xbv-ho8s3?XKL){y;>42q_^}ulf<d!f~f&V z-?N`}72lnw`E2zQ{;SScH`mwZeB89%u;8(1$2;FLi|B3qpB%sUL~jUuUu2zr)I#uC z)rU)Ze!dFNq8-`nJ#AYJ4jFoh>)FpSnA@{-a;=fyL%tKw`%DkNV!hbZ)A(HU_<Z@Z zE9Zy(zOv=)lv|odBbSveQc(+b4_}m@Bvtl6>v7uiCz|WN-&fC@uzP2^<ul!m`u2%W zMLx}4{d~ny#hy7;Gxly&;kP{VmQ!lmugmc|_jhg1(VlVcj=$ap>$A7^)D#q%F)VVL zw=FR($MgJ7$wPiV7aFG?JfgjKPRsd9OP8WA^U~u4;?HmyYi#>E+2~f!N!<<WpZetd zo+kfh8PARzY$2LQ4wr4>`Fwe8u2plwjLo6%>!a&uSg!A#Q~p9O?ECwSCV`#|_OuD{ z8lvAPu}!+j*w=de{i*0pQ=g?>WDH1pzj(#TkEW~7-Pr85%Y5(Bod1<tNe&ZC3-Tn> zgFC*PR)5@VsVk*a%xEIswV%&(Zl#&q3k{a1&-B!`Un+CgTkk)^zjGhQccz<mAKZ5= z*E_**aQ~h9!oss!5AR>NlF?>8@ifEwoD4DP!;3zA(tcbls#mu(E#_oI>K6_(BX7fn zMy)0DB0P_+y}E33#(D?s%_55nb{tLcT|a@Pa$Oaxi-CI2%|MQqS3W-Vd+n8`aq6G* zj7`%XZ{N<+9r`0G?6&D{tMHxHmiZ^|zW%1NuwQl7gjJGvPkYx-o~==QHr}=8+|2_v zN(`OeOD_AYOYsqNoN#ID4nC_zJu26vtraxu?6(L-XuVq$cFadS>~mW1AHVmHU*%Ut z9yR_HxAC~}spMJ43nu(Z-w~!)?(w5|lG~yk#X4LQcidjXA+TU~lUe4|msb-*V$%dG z^#jv5U#Xj45`I|l;f+Jjh5GZ{n#T4s_nzdLHlyfa>8(Ag9s2~%*<3y@Zn?47Yh}xF zRlzwjdpY(bc<y>r?Ix1pIM4L{rlT2aI)2Zcd#r=qbM;f}FD}<+Wiu`>WIM>I)V=$~ zp?URz>&3rJ-@ah~)T4V6eiXjz;yc`MI{qB%w48T`B3WIzb(SwbaYp>+*>JZf>h;U@ zB~9lZbJ?7{cXFN2aV{N=&gQNk2BG&=`dY13llgu=Nf9aiYoMzu>b=t=;(&I~+$lnt z_WW_1{~ngq(6_jG(xCe5qYHNg-M;yx-RM4QdwR#mKADA_tjqRI{gS=xO_Il_L$wpj zpXhVPo_#NVbNi2*bJCau@(ylTSFrQgqKy-^>lrJf_L>;KC~JwFD3T&=cgcQbzuU5R zF7?u3UpnO_wzpO4%X!8>x{)+JPi4a~%jFJ|_P3&rE)?v3tIoe!rgQ$L+R2Tjk?Jm| zc?Dhu2ZnSn+3~YHhH+(uq2Vz_v$Boh@mGGYs)+Giv&1rHc6zLh+V0!`mX_YmEsu;T zy{x7t5K;eKtyHV2H}0g++>@~a`(DPG>szIt&3kQ<v-tJPK7XsWOGi?_`*zFhnO^Zf zRP}bg!Fhw7+k_?aiWV%N{=}orUP+@PX~Bd3AGHVT;yV&DyA+%3AAPsKrNejYcYCRR z)5Q3>F`F!|TEFI7IhFawo*UK&mVarr&n}NxBT*~JxI%n+Jx_Fg$#DUXtp7*29>qUo zO;^15Bi!cYybbDig$4hexNXmU+y1pdyyd^A3yYt>;r#d1-$H4flTS?G<qz%c#<Cl% z_}L}a%(6^9#2WN&%U0{{>bWXw!bOs<e)HE^@x|*%;bCnq`NPZit+}{!=Ps-4x!d)2 zZP&TB=54v!<Bh)Et6ndwpAu}v;obIEL1eo4-ET*Gxi~czO*0N$@X%Gl<xeih)y&n! zMR)6#ZaKiSX7>ixz?LY1{8~qyxwk)uZLhqQVpy49@_&xI$w|E<zi(g9kzcCYy+`cf z%o}I)*S_}q{i$jDCvNY)$-N)8Z=b$CQuxo`)c9#TGWPmT*<~O<iFN(D=>1#j_46m? z##KJs`_wP!*1oK`^215H#5>A4EcQJKc)WVUrL)=!zs(zNePdmJGBkU!EZ>`5Uw4(> z-DMG&_Tbi=+4DG0wa#IR?0Dv|FMQd@Pfyg`jF#J|`Ofr+>+n^nf2)0@r0%L+_k~Lt zJ>LUcm$<N6s9xN?;hX;1*JZ*P(rQ0#=BU>1nQ?&g!?rZm+0(Dj2)k_4J#Ft7gQITS zlUr{uXDIy5;?*5`IIP@%`&8HF;9FJF2NhRUYO!r(aF^c~H2r`n$E?e@uV2^kl9<jQ zmz1#Qo67+Mz0;>>zn(m;W!q!FJ@Zx`sJ#2@x9@K&CdRuvS35YcT5!CvyC<N!-fDWf zZs{+*_cit6%+V>efh|%3`L(J7#!~Ft8f?N$T0>U;S;cJhwIyS3W&7=ywljmS))rTK zHO#%-$yqn!$<-#!JqJ433eSa^%RNf`_4b32o8Xn-uXsLs`}hWEt_+)A`y^U%ZCSK> zzFvpQhE%PzZ*3J{+k4kO^De!V_smg1k|pzpLsQbkozI->Roo|Dt+-J8PMool>As^R z|Bc!;5sE%le}4ORKm8ZDm5F!b>5a-Od%It1{B+VQuJAHFExvzQg@;c~#)3JWJ$6ky z3yfb0RF=hj4&AK0>G6p;ojWsD2$;DqIp%aCbyZwr+lmsld(PiaG2KWvbHAnHA?b9I z)v4x*gU;yyqcx^dzV#w2IHz7ed)-8}ZTa`lX)FTmsy9jx>|%C^+SVKXw4sxA%8wUc z!V4xH3AeX$EDr9y<u@sbOP6hHC#!hVEtgYP{^n;xP8(d+U%Dgx=|b<!ef-Z7rpOrG zww?S;#W9~p%det;=cBmJiuA>PVpq4y$gK)F<2(B~*WyO;uk9NToGv+1|LNnAJ5i5p z7Cm{l@@ao=t<>kBqu+{?S2A&Z(^zCuCUNBMkxjfyvYr~U-7viFk;fxfJoSmV;gPNW zKabk1JN0C)aMBrulQS6m0~sV1OQ=*dT$!M!cB-UHVd?X!omDGO*<WqxtDI4Igwv<q z?ZNXq?ej(Y#bTAJCjWf&B>U6$qg)2{&tv=q<<_j461aCwXGiGLIVE#M`!(in-8e-& z!)kTj!GxPLSvzK=PitCQ8ofs4!Q*Si@_+W!iao46J5&8-*I7+v+x3#ES8|(*uHCdr zXH8wdE|UADcC=DzK-LlAeQ)yoS8)k*-wHQ7x+wAg#)$tv{o<LnrX(HfKT)J!u~3Ek zdR%?UbIt10)#vuUOY)i1n;d5IFvl;z?DNI<>^Gj~Dn<!)F8w@D+s$3?QRkFECZ$!o zLj4zOWrlA&ac5I#xQ_LKl;3w2|8bc7^BZTd|Ef9Ftjiu<{c}b7)j5TIIj0=g+1P!y zC{u_#dAe(6)ah+O_wINuHDnYjyy0|V!erw(+0@*Hx9Z=#*^u)8V##|a-=i8T_Pl*X zg+-pG3C{v5`r?<>B&_z^CcEsU2YXeWUe1jC;x!?C-z(S5tJgU9?diYYx3?%gOcT{N zyT4Cq{ghcNF1;#QfBTFxcU#GW$V1N6m)^`Vxw$OC|9kZ=#q$qe+>5(2=VS8@rl8Iv zGiA1)6@Iv>^iK4Qu=<y)jz%qCd;RQe<HDHf2KTfyZ=6eiaPm{JfmSE4;YZElKX&a| zQ)YVUKd{;^TqK}TB0Y2ai^LUt4;b%$GWK>~Tv&8WZfSOmkz|8<fKrEk;P;KkOO6WN zNjsZz&&n^};OOKZ64I6Pr<yHSIkR;6$5fS9t;*H^r(D-v^ZtLt{r?;H)&I||{qO$g zAOC|BdiP@Dj>#%)epg>rIAzEGmj(6Zwf~Q6+5O4uy<g+=Hc7l%K=4W<$1Ar7U8l_t z?Uhq>)IYxLvf)RcTVji+YMBN7kAD8C$-X0VzB%Ju!G#-NDR`MG8QtOMZClWMO50|^ z^|I$dzaM6l`zK5P4q*7VvF5Cy?_rbrExR>K*Khpid^9wMRdHSOiboR<nx5VJyZ5kD zm$Q7-CWk+-S8P4JJIcapsYGzYhdTZ>@!M;r9}K#Ct7Gps^<;@!CV5k<4Hc{P5*#(= z$)?Ai{=fB4Jc#f=@!x+3Z$o79>D3IzPyQeLclz**KlMAyx9t0$tt$V}?$dFDtIs%3 z)ay<=bwTK}y!{~om959UgMTr3r5=7YSx`RX&8+o`a_JUk)e<Re*J`e8YzY^3Sy$;` z?(<ss#*u$-)*W5TFA|dS_~)Nso9*&)i~SZ@>#@BETsg-tx+2m4qTJbBowYC97!QA& z{_1;DU!zmHi0CTYh=T$KUAy@EZZG*&Id{jwKeaFF?czk(PF*`<Sab`tGk;p*jB{_c z&Ft<EG0T`?=Jt7k-Syln>wJ>SPM4H3ZLt;#Et<77V2<B|s<fSNyA~9GQA(UJ>GJGz z?-)8B-+QI$?L6nYWY+eERfcD{)-3rG$zUq-Y-c6^6wlpDTz9>_IJfS?zUusgn|LJ{ z8<M(O&eScu&Rx&Qta)I8LU`dluSf0E%9aJ>hsdznmM2M@+?i)B<!f-qY{HUtb6Q^o z@3v%kAX=@{BwelJGtK4;`?aDab$;%$Y?eMdlD~C*Rb{(<-SC6#TB$9D8cT%C7gtzs z{vESK-N0i)NAl-Y=U;tH%h_GkXlk*rXj1+U;adk^`oEd8ZM~#Kz3UAjQ4yBv_Q&3_ z0@-ihYH$3{$2a-g{eQRqMR)%F?)>E6bLRu~f7=f?%k$UOY>bP)zwB?gIeT;N>6g2$ zRoDHWt{<23tG@8;=HK%{2jE})S6x`J<@elgNxA>m{;kjcw_of3{3rjj|KFeWU-<w2 zUq6@U`gGTX{J;P3-f8El|KDG#|9Ai5zgz#eclCcr$@#COr+a_>`}~-I6cOci-k)t9 zDT|FI6Ca$~SoZ6cR9trW<pd73uQN-ZAAH<v{_eybx!?<ncI<lc@ZrL|uYaoyDmVBn zU-$i0)dpskXD{m>_*NZc(J6db-DX#2c45`=#cAhC^*6}8)lHgbf9Kiu-0&;qrfaL~ z7w>J|rhTiv_eJI0wAb}l<o@qE$nR%;O{uzOC+L9vM$c2(Vk?htWX-s<HnaZnTuueo z+w4a3BPA~$-MBP(d&$vm3)VdMYvIzbwyisF9rgK<$oVvj+~l5E_rse7^Q_j+D!aRD z*FKxQ3oq=JnrfAs9CClPbj_q&55Pz1m+TR&|Mf5U^a9y)hCvtqD8^0bI?0hEe*KHv zn@?Bfy_Q%bdh7Mv2PO-XPnxPdX<Ko0))A|=r<<*-1)F#E-`+9p@V9E~GqI1dt1t9F z_hWN@>%J>oG<LC)V4m2Xb<-JkJnvgR&s2g<Cn$1p?n{R6D@&Cud^B7BCBI#IRU~dt z<MPKRC33>+XFt|tHz;0kJF0t^4}*E(k+&P~l(VkodLgrGmf1C#&(6VuK7Uju7<{-{ z{C3u|>SaF?FE7Zlh^p~gE;UL2TxpW-C$2-5>~9SjUcG2n*>Oxb{|!@X+h#>h4ZGu_ z_o7<cUVskFH+^XLpl)YkrNL>ADNi@NH!Vr~TJmMH^UjFuHT4{cCoa3~V)kM0WO(>N zeXk<>mSwg)zE0c$f?wAM%V*B0R!C!78>-vTv+SyTRC3P7{I86!lP|wc6u&CI`+k1l z_I2r>IJ?X(I1P?8Jd#d`YCPUKZQ)Dn%Zw^tb!PnX(C4~yQ|0q&>y;Uy8Ql9Tr|M44 z`jDpi;`2QtwHw=(ulyofpMByF%i@Cp9gKb1DL?IW4Hm_3dy!$4KFPp(|01W2QiWV{ z!8|M3&tAN3clL_=o1&KQH3i34%d3l=etA>aN!Eb*li{sv9KlB?%GGR_w^6wH=`Hu2 zwpFf^6O+$wY%)DK{nxdGLx&gquK3{b?SkI>I%XknKHu_XZzPKsDlgdb)zqlo&`#FB zzr&cvM%QazP@}N$htG?T_%ca3E1O1lD=AzH<B_$k+rrhh^1-LX7ZMDul_mcISPU~` z#0?G^}i|0r-uE|~f7<qMy$eYI1YagEt#iJ;(rms5Px6+Ck6&KzM%S@G<!e52{A zmr3=_pVeFEUkk8OSopofZ&g)OKIc20`WH^mcO;zW*<7I~?At8IqLIxxndw(VaHzx# z&@uVBx5}SbYqZ@k&+I#{=J1JAZ0lRQoYds*zNUrF$4y-3#CHaZe4E>+-8VO)n<qRe zVTM=Z@3lvyc*@@J1gbvXcth3KeBHtJg;%AQ8R**dA3SQk#q^B5;-mwi%o<N#hZrZi z)yMe%X<BBnbH!@QYb);fEsDInu=x72qa0UnTH0!wOrD}&`0rN#hUK%w-1U#^trN3* zeuZ~>mz>rlPCLirGD=4k?`2ddUp9WLDVO?VqCho!Nc)$z-5aBuGBli5uK(`AaV@BX zwet_lgbv%wZ_|T$)wDV1YD`Ufl<m8zPsBpy(9foN@m;Mg{L;N=RM!eNXBT}Gi*55> z#rt#<TX?XT{Jg!+6aSaR$o!ma{UCGBO3vEe6;s_@9(+=Dmz`AOwIZ=l>*Ec!+P;tw zQQIkcENtr*TMJLP%Pw*@>|a-=b4d!jbh7F-wae{GA{tLE<K@0r>^S2}!M1lLvtN8X zc=%V}royg@gY{RZnpviGcpOQ7;Qp=beW3bD;jNtWR(<3A-)fMRF)dMf#%k8JT8koA zO~^67?l0`PpxVbrq|^2iZ-u9una0bRW$LA2rA1kqIXX_Zr`9OM9X$5Jx8_pSjg4kU z&hOmyZ<<9x(34s7Stc#A5Gd*GJe&+Z8{dF?gQLBY_BW@sM)m7<&Dv*LaN}bG-&svx z2Q63S%WGm1L|T`9YN|>#JKb^9T1Yo(sd$)ZXp8cHxuXpi+ZdkA&3tsN>b%NH=H|fP z-g;&7-z(=Ha5JdVJHsCwe&IsEv`VYwJL|LU7tZQ>Fvp{W(>L_B&kUo3*Bw>`&f2sl zG&89wY=LISl?hW1&hW6VSF`1ul7E0H<6N>a1JALOQW2YTZ6a25Tdv#eEAoUn?Zb1k zjLv%uyh-J&ZXYb!{eI?$(@d^E@4a2faOz6h4toYhfompLT1;(^l}>taz_aj(P%`7| zKOHlpezdsrUMVQcS(&l2ta6s5S}MDwJ|{=e6^TcMFNLcY_`I3gcj%G!ysPzE-J6y) z-(Wh(!;vswa$EGR84n$1mKw}oaB*Q>{-kL#>=XXz=pB1J(ZD!&_p$$}6aVBmsm4EQ z<GjAE^Y2mj9*v}8?FAQ(CrjVuUdQa>yt#4D)aF~8OSzx5PW6>ENti7aobLFk^7s)4 zp}U(qw7=Ls=sF~1x^_oSxMaZ9`<F^?m)85}eQfl-|1o&^&c5Wzk6a%cyFMr@Wk`qx zPg;E7(>l2uH!FRnUEf+J|57dS@UH`&g=bHA@~mNG_LP6|W7Z6V@)se_j&nAo+Fbv> zopYnbo_W@ewUhs{bzL-#uK%DO)}XQBETeGR6w`xjldp6p-LdXx-0W<ap<q|OQ|0#S z*2$Kl^@l}2n=74_f4nARM_^aq>M4hQ9tdA#@aK@}8P{DGtY(%7r}rGs^!?u2)NQ${ zspF}R!|IIx(l6J%*sv~k_A2*HehR%`GEY=Kz9aZ!i)zXK5WAU+RWFAu`o%lfuYpt8 zcF{5R`nxS|LZ$N!Le-itUvru~RbaZx)rpx#Sub}>tUURpUgltM|K=|}tM(l=Fk<wQ zdr%=zlg7_9GopbjW!0+Ai5q^s%-L(<R5Gc&koa+ZtCG;3C|X9hgJl3SWDo<BUN zQ*M&RjPhyCB`5YU*KtLhnDjL0(6*Zwnc190woT^`^lv<2{P95NtPSxZ;rzS#>Sj4O zaXAQ0nD8KL$0O&r3y#%?hx6XtmAFVQ$~$mhMkdR{PtPql7H?1fklNX{BJIqQhK%k8 z(-^VKSydJ_F7}TZN~$tnaZJ|ov76MZo3d}xz8wquRYG>|c(ctvN;H9QKGQ7yuTMg> zJq~Z!bxU;G)J;jk#*UxoTv}3K`$EdCcXGa>N}h44)DchB%*)4S8W$Rw)jLQ<tvzA0 z#ALdi@ygE*N4RruE_=7Qa?UpCW2@U@SVVlR0vemwa?dzy$!R#lYiXUH&;ONNt2r(% z`#5ujvdCu!)p(byi2_*+C+lL?PqUTYbz!OKdhP8`gErhaA2D%B#@)w)>x4g@jhwf! zw|V}lohj`xO<62lGgelYa!r5x@pI4S`sL0Gg@ZQD@OHIYeDE3fT(K1wmo^{2Zd7<B zGbP`<%k{3ohu!UEtG#Y&uI*GT<PnQZG&S?K^NF|>anjFiyM&sC#N>$v!b&3Q5;B`V zAN`X4F=`ga!#_+WOZCDem!9F{pPh2i&^hK}?ZJ>KZD9-cI5um08M5b`5=lx{`W7!K zw5z@=^;_Q-qadBtOI};1dQUf9{^sGXzalTPPCmV<u71$ua7)PEV?`%}c5^s&ZMS66 z*tlBeqT3SDmTHZZOA5BjcKu$`D!KVek@_cA$+b1<y+5^_*4|#9ZQj@G>1uKFnL5LQ z^o7<fRRLxy!v8j9##D#TS=A+NdbxDgmJ<R^I}T4+S%0nk)w|P5YUbhboH?x@B7)D9 z7(BYj_NMqDTSVl$MU(dIDW18pHz(QQnRS;l)6`EJYA+kyJf@?!eagxwvc_w>?`Nm9 zEqlw5Qx+8wypQSRC9(8n%V+ioCC;<FV7u+U^ma+(Zx{L+TDe`%x|glHVcC|w=?#}r z=M>qfIU4&E&t2J5|Kr;NJE#5Yt}tAbJ}vC>!@ptbdcm*=9WKL3QI~$7yesnPOw1zP zfQ*_M-XWPCDh`ZAh9(^gnj;g_C*S?J(p#c;hw#K3^#ZHI&zMio(_Ew@yIBAAt(8wF zXZ9SFseP;a;&;RTl`%O*9Oc2!PAHt`nRUT)o68l4V;L`&u5A@QS2?j>o^N4SvV(f? zwAD^)Ti^ZQn3%J0zNkyY(wi4=&F%WO>Skv7qsbq)-K{OIynOYZ+4}Xf#qXA_UK|^@ z`l0>w^;@4EU4QHR+wR~1Ze20KPnkY1yE_G=j(q1yl~#z^xP^ZKw_VqCb^)!E2fl7{ zWmcH0=eg=&PHe)T2c^Fssqbo8wrp<w_I3XE7_OWRf4jNtd$`ik>u=w=u0DKd+N_P+ zKG;q9cJgfGXQ}reckX(#WyZFHW&d;U%zS)vh1lC$7tg7GW?M2@_RNmweYV_ZRh&HJ zSBQ2C*|tw|y2+n#ujoGeUBQb2;^x!*g-(@MPb-;k@bJiE?TqV=yc;~MOfO~rY`5AY z9^BAdKPU2+?A(Qc*Ke(8%=lklegD>6i%F_K=Eg5vxXk?mGgBkOZR;zN%iq2!D&KeN z+?!W%>-kkD7_4G(@l-N?Y4daSw>R=L;<ptlJNbW^Ca}Y(WY^{%kuHwAI|}0q<vn6z zCa?Lm#J?oFv-d~FyImW(4WHgrKP{&6^}~!g*Ir!?s&2BWk2yQ-vFhbdvWagZrG&o+ zH**9Oux-1tEW+T}<XWccYxjQ6w`JwFnd|c=R(Rikj;-G}IvV_9onE!_VP}B1kQ=Y$ zCe2^x_AC&;ef31Cm65sDk7q3vOCQ)w{G!3fVpr70$o_0g@$AhFx)QbQGWR8p9A{fH z!#0wYJ%No!R^nB3`?LDold`$K;`g2ZAJ*~djkqsaJ&mDnsh`<_$?LS|Z%v)C_P4T- z+ZWy)#oIRYY-#0hGB~`}amSiHbMmjR`_MkKrYBu$&b))mJ{;=yaWNHq#Aw&tBw`}K z{;P;@cFNPqZFA+GUFqd{Yrv&)duA7(@V>+6SotRT=Y6Q#ZpnJ)#U;@YoBG-Brn9aH zs525Qy&+#Mljr??bL%?c)ppx%v|BxYV9cuW|6Hig{V0pM&)C%0E6VRwOsn;pTQ1Rm z^{Q0N{cpTmQzWN-GcWvA;<<KV#JblEk}SN<GMSHVq@C_{<hM<8<$B=%EB!)DXXgP% zjkf*i4BvNeWWQG>S#;{f3#%_X1m(l(FWh$c5L?v$ykFJvdr8rJ;hkch{8kr@1um3s zwS1`Vkijwc;D*`n5Bdc@_gJfvujK2(Y3VhoS9Dp&HlxQ5mGgUYcn{m2U8b(q(Y}I> z@3Lw;^V+|~lV0|5#r~Gx#mupDL-~}I=jGOX>$rdJ&LQ(-XJ=<mP(F00+xd3<zUub4 zoqy|(vo2uTrl#n(Vez}bIPt8Cw&lMpKjnzunH5}iVbQzjy4Aq}doNyGXKEJE)1UQL z_xhz~;d8SlbaDwQ9y+q@LF<A=vH|rKYu;;5Pq?@!rY>E1_4aN3$2Tbz^k&zdwf^U> zxaE-CoBOj=en`&NJj2@8-~P+u+nyEQo(aY~)fgwNpH**tWd1&jKK>gooYh)hh`&n6 zJao`7)Au}cQw-;R=MR^bWU6nFdaL=8RfxBA<&0J9yk)<2aGX2S!uKlU(vJl83QyUJ zh4(KvTD^R@CSlXcw?9AL_&Ias{nq4f#l0yLD!FZ<4oy5&DpYY};p>Uj2ky7-Q+|;9 zQR0`CtKHGX+`lhwdRkxl=eg8{10N^m|I^P8-xkN&(!HUuiYIk-<gHn=lnpw|4NCn( zzC?6>(cJdvl-=b`dlOT%vu3Nd%ItC4b#3<V*=E0%T+q9e5fW%5^Y!7{*2w#{1>5YI zpU*6mR>|~Yy{Zyz_^I)CTxf0ZCUZ$KalyPr{&DuXf=$X3xi%gyy|CG;K4EI{SMB2e z)vdRzo!gc7d~4qw?hqEPC3v{V{pycjyT9E&^to);!GrdV`|=OYJY8a4duh#58&Nav z$Y37H#S%h_y=HyZleTYIRunyR+rn_+KmO%&cPedPdGXMjE!H<|&wS}G@~_=>T59Px z^V0T;uB2NNeRZwvEz6(p3EIsxtK)M0j>Tyn&mvz*`;>W}HGB7{Y4Q%U?@n7&;xB*y z#kTM`>zP@<)>X&v+p*wbu*cSKd)w@OoSYD@?XV==EN|g8lV@CiuZp`|{C?^-@3{}X zaSEQ13ob@)@f4_QoNe@jvugJ36+O{+oAfs?Z2m6x%a?PGak4eXDLspuYMXaFsFQgd zS<zMRwk>nw(Qnl;=1eo9*mL~3ls1-0g#BL1W;t84x3GHevCvH!LIR(U7y7^GKDb=^ z?czP<`O6y$lf?G)PfOi=JG*DwqMU2%$~(9nrZPNYdi5{vMqtj?Tl|8Jd0V#^OC2<f z&N@=nC!etDgTuYboF}&<CS7>1P<mpmTzK)uX+KsZEv%PsNt{zS=||o53vc9d4(xQ! zFO%lYZ|A*fC%c=I=VL;%?y|jiS+*a4(39CSzkHVI1PQr>xsR;e`mKE#5B^|pS)g`l z^}*IHVZXm#k9Yj-@Tl(XeM_gL9pAXt{$jJf+VIUkSvc@?6z^<b!A*57cO4y*Z=Ggc z@pFDk$NcTL-YB<J*GFx=6(7?5YwyG({y$PW!u~2R?`u%Fv)+L@ZjtVae^rgoUDF<) zo>JAGQ0W@bpyplr-r<w<pOiN{Z#w)gSgc%_5wqRVd6y7t>9fNVs)QHH`-DC_Bl<6A z#%fL;sU3gvA4DbSI+QlP(l$-)JEq9Y<-f}H($2?KTD<;i=X_l8G(@moy8Ew~*vVse z#q``v-1blX`D5?K(AlOsn@y)!o?%+2KY3=K#**-7F1sXZ<W}+@DQr@hpj3LK+9^Jp ztIW35Lg<R;^v6dQ8ob~=DtLTv$j79-<uQ-%W^e3fdGP;dz5m>+|Nq2a;=L|BQRQf1 z>_;Z1wv!$9d;hVPDyO|#CV$meKe*ofa7SK%JAW-t{X1^;Z*O#d_p_MibGl7<l9V0L zld-8v-z;#;LJRgA%R|}{b=8;O+hKS8Yn8T%pXeuD#$uW4%QrP{5K6w~COGG9qhQXT zsmnDE#ak@ME!@+r{=!V2#pHfhPtQ}vl@DZhiPUgkdlWsnZj(d9M6t7u$BvactL<{E z@8UU|_$>KA{+_T7mpj6*8YLchhaPj8`J4a9S>M%v`PNk42wrjRSzK~?3C~Wcb@@zk zl`)SUFQ%u(&9XmIX<k3$p%!26i(S6fd1iAJv-7TMZ~jmbE&TNco2Tfj-4@QbnJd~# z*_LjN+3|mcW1z(G8)46;|87&i-CnnK<usP$CiD8-Tk3KhBIh@(E}4|U<?p+o=ost9 z*O_l?5~~+$R(y~y+7+RE)W>w|l7|z_nCE+P2|a9Vn7ZRlUkK}~2aoJzqqcFpZ_<`h z>RdA4yFlN0m#kq?ayh%-eT(+97M8QGGRhbgq<Jh_zv{LBtcB}07X0RXwe7IOmm1-} z{!71oRkhQaQ=dP*z^Ku`@L=MU)qhL7Ih2Fi@4c92b@gk%+P4?2qDsqjT|5mxDTe)B z-Ei#J)L+{aCNh7zl&Ia~s*%I{>V}Wr{kwj7_hR-}SO0!iYvfsS|7Ssc@%Lw+zVa&e zzWZA~{rmU*d-m>DdvalKeSPuQhkRSvzD2H&-S_XO?7qL3Z~rzqTyORE{@%ULZ`ltA zo-Z~w5Z}JBUhmxB{rB(f{a^62i_ed3Y4G0<@2=iH{rZc*!51z?|4KJJPM#~^^G2j| z8uQDiE|0IzpO+!SeTeJ10Po#r(-ypYAk%SZ@`1lxk*-BvAz%1pSG)b^{&Y_J%knIf zSxi!YM0>7pkUvy#R_c-L!ZSj5%j+!<$o@Jpbq}MK|E8VEol|nSRz!xa{wsN9)6N67 zG3!J(94jjCn7OiTccku;b-y06r?9R(`S)|;cb|xe)v2HNPnh#d`E1n3c-bF~zxM8P z-CHFbz2wE_ax<x~RTJlK`s1(jU-<O@BkN**&VP5mZpZFjJH^-NUwin;zVzt50+AE{ zO<vXWx=j1Ovg@?r{<|@8`}YZkdF5_i{7mxTrSQ{IkCxu<-Ei~jijvBmziOR-EPMX! z^?lv!_sdQv+M0W|J=}YHGUpKwf3<gO|LUY{mH2X}IxX5deK%*zyV(nS-<Vuj$gf*# zd@!i{xu#glx945?+SBBAJiZpN$~81>MdS?u_WynX><8<k7yS2|z_#tq%&Z&A%a>)| zaE?C9QT=R{S)zaa@0`}V%bq(W_B-U?Y_)B;G;#9G&36tSk6`7jZU}zaeuq7E>6Aqw zZ<0RAPyRpS&+#YwGk)s#bWYR%f6#ybpX<U)?=_sP4~@xLZT#>25Btaed;S~$yWe@a zpFjQo%QE)83;w2?OpvJmzy1-|kI2O1TE{1M?eGhX*W4B^@jv~~{EzizwdQ~Br!(0r z{D04OuD+^+iAVDP`n<n4+d#7a-_QH6>}11apYF!D&;Q?h`(OH{|Brw8FK1Bw;D7VQ z4cDc43jZFr+x$Pg$o7J0{hEgrHw>RwblnnVx}e)5`*oH%gT!54-tJZP*X=GDSY3J2 zcqK=TH#5c2R%O+?xau_*x!BG{$6HoAJ)F8PN@g7k8?Tag-PN7>E7DKw_NXeF6Z6W{ z`u=4J-j=!T7n5IcGv}Y3BVhTy{K&E2H}6lkyK=rxId;nYyH=J5&gadv-NwI{^TVQr zMJAuP9NS!eFtS}>cKi@n{vhf0gdO$r$7LcWzWI1?#*;t3xnAG$bE1mmlDLHv9N#AH zx;o8kwg^MP^GAGbe<$k1#y@)4w&+6Z_Y={<9ZTc24U)IdY?$vGw!vjZ{p>@zy-R;a zY(AXzaO$3Y-@eY$pRvs&++@zSIAz5x_tu@_TD10h#=J8^zt<VtoqF=0>688H|8+J$ z=U=U_Pye)E_rGxb{hNPQ{`o7P{eN;><FEHY>(8J2ziQ(DtIL;jN>s~dPy1tXaFdV_ z?+5-E<HR$i**!uA|IWXuKlAVSy7!I$r_04oJo3N&Z`^@@>YZo)g`fR;cz@}(Wfx~= zz3$uf&t>x4FPSFW(xRfhqh}rBSrv2nKz5IcsgU?Jg-Yl86(=wFJ#o}+PtG#ml3#tM z{qe7*`mvLiuUHh@b~xSS$&R%fWu9-paAU84^5YxnK_zlQlNDx3oAo(f+kK#0IHySF zxP;8xZzj?cE$cq0nsYjxDi5DvK5K6Nr;U+<ylKDeFaMtjN`24%tK9gc@Vnkb;>eHx zCCtC->l<bjGavguv;N=l7xtI`-w0Lx`&~_Wh0}lO&cAgI|E0T{<u3nUwPQul^0kVp zx8sU*qo3ZM`ECA$7Dj=VjE=IpwUT}k>De7!W}7{@EH7oLD%bYe&DJlyyJF&R>&mSq zTf8dQ`6-xsoSn|ev(m+H{j|8^O|>Vxnv84qHeQ*0!?iNUzUuS0zkkox{}wxG!FK-m zpWnMrua@5Ta*yp)-(0seiHe`Uo*ix9Z=(2e{oK<zZp9BDZvH##cV_SUh|tF?H*s_7 zcZMCGoby|3SASkzsfle|;PX#qnLqQY;u>tG^Vescc*gUh@N&(Qe=ch5R%OE11OEpn zFV()S`m2<&-g)U8^)H7fJAR)1TRp$tiL2Q3c>yQ$h5sM8E7$70oc_rqef|H{8`XJv z(wcwVGYYBvDqK17`#Ev@hGnnBxif!qyk@x^^kwbS+@}uWQkVRn?2xzMiZ!yXu4-HN z`{CKg{w?7jy{fIh)tqYnthq$$!1i0_Ey71MJ9ewQjIdkK`#~<ZrERY=%a2mlPHoSF zDfPwM0>X`c6ztj9y>!vl;OQJ&_<NrzS8SPZ@A<E?wJ{E55j8iO?*CnpYo@j9XG4S2 z>}wgKLIwwFZkYI#TITOsI@5FGi{4#%ADAY+yzpP4F~z+hdO|7N-}r{V$IKP?zo{vF zc$o8rPl5WIoMXpoF4h!W-ahNkV`l%^AN#i^FuEU@Q!lpMzn(c}sR-+*PiwDS6=B@Q z$n7O?qoyIpQg~8t>8BfeZg?|xr?)5`{`-7}@b`Jy#W4;C<yfcJ7@uX6vRPt0X>~<z z=Igam*DlZb&t?3xEcd0&+iUETK;8_y^77kC!{><?PY4w+v7XaYTl@3fv`0*9<d*O; zsVk;C*vS10*jF!U#WRz`k%N(I|GJBtD%9?r`L=V1byG)KK5zQNS-#?DSKJoaa^%Fd zL$9k3D)t=7)n9PT=k#aaA8wPg|940>a2ww_%JNR}O4EOnJDTS`ZEZB1_b96}zr80{ zQ57F7xb9~-gRbNvL8F_$4fAbp#M;NT=vx1O-)2=VX5+8^?|gA|{h@ZXvhNRS4kvF@ zb=mA^$?)&M@pjb-t@2jy?A`?&dH3OLcUgV?5BUWyXT%J*`D>ZqUjJ0|=S7K~dpeqr z<xku_q5sa#>p4HaU1vU&ULwBu^J6=^b|$84{+q8%jZ|f`xu7Vo&$l&c%l}u?-z}W7 zwc2NY1<M!9>+h;>GPPyp_HIqD*O_j&d#~WDo_oiR+&ujM+l)=^Ki&t1Jj$~@_P6DL z^m*n|;W<)bd2>81cRfCG=Um#VRWlqNk3O6Apt$MB4ev9L_V0T0Puksn6{qmOS5t-e zeLO2OUo7QvMXtl9<GuPC>f5^4Els@1IL$lapM=__AD`!czjlA-(|=9YvUX;(s~LXj z)IVl&$~Y!}txVC|M4UzEK<fIC3xC9HvssRFbH&}d#eMWZQjDWqzRJhN<{Rc+%jk%i zeOtQkb;Xg*YTwiS-jvP0|L@65@l&h@%0ip}8~xVb{D0GH%Uku#Gt>Dq|BL=ky6`{U zM8@d<e66?p`y!|R+vdD$0*~?Uh|>W*8VP$uMOOT-_n7t9_padWnQ3W8%YL?ccTJw$ z|4J|F#F1+T_su!hU$hU9VLB6Ea9CeuRlJ!;)8{iA82|R~|0FfV=+!ohx^<GvSec}^ zeJQe;weRod?`QP|{xz_3oao5l@<_`6V8L$kw}X%8(DohoeQIspf(2I0*&mxLwLt!X z#9>aAiE`g}?R`+MP_dWk>XC&en_jKYyC||pA^U-rhxE;;o}WKgSWj>dUTQu2+myyz z@+U9f3wg!6>+i#vH>OtGc&w4WIYIZX#OJj$oO~yWYf2f_Y3g4LdN*6f^W@{%_qTuA z)VOc|(;B83(G&fWy#Fnjenow<sL)0A$ySk8?4b|x7N4vTgR~jU?8~OA|F1mFE%V{e z{`;?gJ+(jb=7O%;e_6+W+~N$T%e$6x9Z_m_kWl82yLsd4qrC7PTecQIZ=EdHD9_rP zcem!^WT!^g`h{{2zjFJ%;ac>9)4yZSmaVL;LDPjl{o}e9zD#(dwct_DuJ65XrFeGk zSeExGq2W`q_{Yn&kw=zaT6t~r{`YMKOIk18`#RfbuH&`d)^$6KGu6Iro^bZ)4m<nT zbG1*+tSM9LOt)RS`b7Grf_w6OBB7$ywuS3D4l7;?bjd7J^E>~n{`u#7KNIZ4+xJc^ zS;x1l)LzS8>|Qblzx=L#JJz+Ua>YY>9(}tTb8T9vu;Tt%TB=S*jmi?)eJmYZJ^tJ6 zz5iZL-s6bFx}2t`6PAnoHs_Dja+!Qdcu8ws)MG0@=E)vz4PX0?#>Gn=*=}s=I``zU zBiGAk-&?!9TD<@2`*Pv7PXhIqdrGbZ%%89&;mrk>k6GNa<~6cBTe^>Rg<ffWv4ZiL z53AJluS!O7->nc5yCouUI*7F@dO=5}Z(Z8VNedV9&r0y@F7Z=TV#pR)_wg~$-&Uh3 zJeM20?gzBnNlckua&uC;^Tjh~gYI3lEw3*wul~8}p3>KM$4gx{2zC@1co|ve*K=u_ zU%J?K!zaGf&d>VQF5|27E<AhxMAqF{eSdzb_foT+Vs{QKzglplN0aGMHmA!&0U0ai z(=R&$)h-uF6diub<zV9V_}t{JdA=WJR({QqI(+8zilxm)uObA3*1ZisxhTSHGm|kW za~b{C-`$t+|7*wu+dDu1GuXanf4jef#i0K8`<FNBH=e!f_t5HN8uQQHd#;G+YzaD@ zB{?n8+O^>H&(}hk&zIeNbfVr-s(gMR^GEi}8>RoxzqPOPLbk8o;kG-E;$9sK2^J~! zt=~Uwy1<+zT3^0Dy%yy#_32D;n=2o3&f6}&d-L7|cLVF&&eKy$%l0i<aq%Xrr-;EJ zpA&X>GT+p<v$aTZZ@72-@Cn6r0>9F=-hN6y{O{%(?XS0)1EsbsU0HQ)+V52@|D@*5 zpWhw4M3~pv>VT4Q&|z7dye02@nu~6xRJHhhRJ59NKkbNc{;ZcioHMzDxXf?A44UnF zqvJyHqfD9mXD%`wV=S&+Q74(ZP*HfBZc6>c>8lir7in}j+1DS^RQ<3vq_;0iX3I|Z zRr^1>Eip;1JZod~t7YDW?#!2_l@_w?+wS$x`gp&v-Zsoj)oc6g<!UmWT|4gvGd<kk z*($I7%}{ZYRl=!)8M(Cqvl?eSa*DHGS;8+^Ci!FA6cg3Hc}o_kzI^E+^U%-RKIn2^ zNr`gjnxmJyOSUM<&h1!K&v8~u<51(8va;{I8%>G=_Rc)VzPLI1<st{Mtm)1ELBaEv zTN+%sHs8UpAz(v+#=Emt4mq>89@xUv<#uAvq-R@VC+pPR+J9woMAXJlOYa6}U0VO{ zOhBr4s?Fq&KF5stj~JWpl2mn5Kgy;ud6J~z;U5`o&1Xt?-a9l~j?29F_2mQgH|MlJ znvmDRV46|!-SD~n?@U$!%SPYZ$($-V)4tsFQE)r3@#)i`|1|}N<o3DM?Yei~{d)JB z3ytBOoA~!1)V6=W!s~$7=7>x3r5itW6)vpiKIwbDeC;BZWt$Y`lHU9Be|zipvGMQZ zw5;IVl}9BiXRbKvqN|qmbg|j(+P`Za=k2Wj<YaVOboZi8m%~^0IG+gBmg&CSmE@PM z+qY-htddZT8LI1EbaG{~$6gLNxK_h{l~2v-9ZN2K-?HT8p65nyFLSl*$^9yJUQ0~b z<<se{N>6xxa(tR+6T0m4=FfrAvUBEdS1nago|tnlx1VkA=gr2RQ+F>q@x)f`{ojR8 zZ1)Jx>t0dct}eYK;=*5*um60t-#uK&;+t8R`P<j|YM&0*t?s`*OAc&!dQSWUqunRg z3rlP`FS#}^=Inpyp<t-u(axfJVvbx?flT4%7#R=kl4-jpEnS-)xAAKED!t_XJ5!vr z3-9MTh}^qT`c(8?p5A)l2aNNhLo%*jd@fb9S*d(FU*j3az4dV#U;fURI_Z4%+?5}> zOoDZaOJi*0mMq=yagxHE`L1q`KO*kA2Y#69$GFdOhyMqi?u)BFOg2k@YOVQPa-ET@ z!_ysIAr^crrYmJu*Kiz@abClC%iwgHl}!B2gBn-o-%dNGX20>}yceB+9vUuJ*?3OA zJ)|W-?){tp78X-31uu~DskhiQL%v<)c+obk4)I#IXszwcM;Bb2IOhPD(!?VZUc4w% zQ9J2=b332<iTT$WPsscB^&j|f>dB9{@}WKJWeWS$kGVg%FtPvMKLMuO#YYzj@x5Cm zc4J$8Nafp|j{+(`-7@6=*Vo{b+0VY8znV$N;3|(%P38@UW4gkMe7b*wss#D!H!SjV zSShwtYvblWTP<fjsl4E-?QYi-@#fW&!_GS8|9?lklWB@MQxvXvLN;mR()Y<5i#=ir ztABqGy3V<FtN*1{IY*5+T-B#un(_31>d*SffAQ1)o16S!zl_0ib~Y>bfuqm=i?;7g z)SvNx`}tS@=LP+{AGGP$J*yj6KK=16`g!kk{rr&gwr8W9EG;bVU-`TCr0}E%*Z0=0 zon`ENShA+M_NUz5N!R_OW3tZOf1x_5EitO#yI<_7X{##Iz1wbAH{?I4`z|+e{VjQg zC7<{1Ir{E!wGRKpeFg?L!OISKPCR8XW4gtR?G`hxTj=F)w61GAbM(ucTT9ha!=sDR zTTlNf5nhv0ANl8ledeq5jO*`JO;j#6Nu*4kt0kSFGU?KuWWA8&GyDG^_}gR_5Y(HR zBm8CY%n#ph&yE+0iw@c&e_PsNN9AM|mGb*D9=Bik%W~k|);+ox%NI<2Y?J%rS@I?I zgVVn8Hkw<O+{>T1d`onV{m#Rd_p<lNo&46Uw^Xdw@33b4zfVT>JKdY#MDepNU!}NZ z`^`iq<=qJa{I2sB#E4z$ORMSTVKV4hVtnZ8+uyT)$EYRrm@f?R+EG_Mo1;Ne(d@-) z&6|z-l3U*V7MT{l$uN{R`TC=Ot7gyI<H4pA_~Tfjh=0ZRheuc6{yjf$QqH}l&(>$A zebp=qd~~FE>rUaj{oH)k6(04jDR1^lAKEAVvMf)6)5qKUa-eCuOv}bUZdyqKyZ$?; zwz|Ezr&p9w9I$D^e48IPotK=rdg7c6)0VXOCz&cibCp&$d~cnqyyMdE6{j+HA3uI^ zs?(OGGQWa2!j-FaoVM~cJ#LNtZ~LQ8g#Eol&wJyZbP4&^k3VHEF-yd6)UV>%SMSYp zUvi)O!|Hz;Hxydeo2=6oy33x*o^QOw)^>^Rq>Mw0i>KzA)ttyMKa*nNlW%z@)#^;5 z^_gs&Gs(7V&ecTh`}=``?MMN)liKfuz~kq+)^aYLDa)T$u5<K5#HObo4U=#2@oOCo zi_R|OesepqZ~wJ}vn!IX>hIXK=jIKQ<;?Hvuk9E0@_0Pc=i08EHHXYs|3CYue#U?P z-G1l(Ki_^n?BJ#Qnt$qdT?!ES`_KN-3hl2m{`<H7vsYje2p5`t_trh-ZQ<_S%>SxA z{x8^Hx6L82XWc~EXesH3S{pNuJZD+ZY_g(y%hLLgiMJNM(~FOBJ$0ka%Kg)+L%BUi zKAku=>(RE~^~df1m#0{p$nt)*x_IsJzYVv2rK~U5Y_gqEw(M1m`IVDy?n3wSWNu!W z^HTbR|AxTpvxF@Dg&R3Vf+x%f%+9<qH6&AOTlJ$2_or2DuKT^lI^@>hmA8VI-Yd8^ zoqb|$;sKuxK?n9bbm={DwODbJ^T-=MxvhI_&KD+a=xtf|aO(Wm^;Yi<_kIe#`Jj86 zR%wClJ}#TX6>T4<Ce{ef**1O7#e%kr2RYtp30ifu_Xe!dyt%J1W-}XjVB$;tvj6R` z{&##|5g@o^0k4AN|M#WrK>`2e`P_W|*Y|z2FXZ~C-Q?HT<X@lOp~BcXS!wCa1%G4| z0<C0kTIN>js94^<KT*Z9-rnYzb~B&NDLdKar!N<rFFW?<YUuBy_O~ZpXf@Vxmj29r z`qm8bxqNmLFWap&uHEWnEL!sTWZU$cGv8UgnCkaOaoK;FiiMLp)UT+PyZ(Bjr+fOs zvgnM17x!7dS&^~me75$imv+;xbKP-1q`dsR<;}cx1s<ILPb_2;lS){&UX<6oe!JKv z*Sv|%u71Xrm75K}^e$AKSh=&AeZ|^U95v6HcPZRzk-Ze!<oV`FZ>-P1^iTGa|KFVI z_0L_Yd82k6lZ5{N@4pV$*=zjwPMUu5f9U-GOE0s&@I8^h(W3nN=6$x#v`xaZ`O<6j zc`a}FIu!np{4l}g)a3eH&j8ctCyJdD%VX*{7P%Z{U;N;2BWvHeCil~Fzw`2zt4+Fc zO6=nPPqPli7bJB*ek-j0MR>ktZFb?8O#Kfcehc>fY>i0uyS()ARsn`8Vdj&c*k)-h zXk$oP#mSWNjU&?EOoNFvT7a+Q&Bx%!|1a)qo%va*=9p*8`AI9;h23)xXm9IYw&Jh1 z??d}H`|Ax#Wv{=_kGmVQ_xXZ*t8BgBJ-vJT`ka-@2W5D-hwO~6+qHAIqwkK}<}uDW zUuS*w2$Vl1YJO*Fh~p=7=~H)<f0`#3e%Ud#Sw_V2?TX_8B`4k(M=P<3@G&e|UH|5l zp5W{I>96N!{r%j2xboWniquG@u=u3a^RvEwW^b=7ufM}+Q!gCC#ii9biEFaES~2fL zd7IgrJ_>lh7g%oC!{)m(Q1;^C74cUjw}tlS`g(2npYh;_{tcZM^|9yw&zbh&{QfUn zwQ|-*o{>m#{TZWuO1-2zqqWh+wI##rr*gt~A@_~Kb^i*Azn_0`P4lI}%x_L+;>mFn z*+2g*u$cVhU`E9?arZ^_w`QMDf3=2vW?X1#g&ObqU0o~64q6!oSEV2RSy^ro)b`xg zGwfW_v%U*eySKcsxD+7ed3U9aNcG-(4`SZ<FMpJ9OZwc=x_T3-QupVVewG*nv^U?o zIkT$F?)CZe%P!?;@SaaCHJh4r?Bbb|Y=Vj|?=EufahdJqJLhuM?paEA>YD2f)R)EQ zcic)gt~X3{T4Z&&IphG}^7<*g2if!=^*>W|aM!DN+xYOHcU(G4W?iQ-!@b3!yZczy zm1rF}t9apH0z>rLKf*;?r)|YrD?Hg>e9?aF)t+9ycAI0k*@a6Ua-p4aQ%}gX3)yK+ zurunCUwN4+M5Q4_tuaN&(deXtqvDc!n@PdDJ|A^ldBM{|KJ<i~=7JgV_c)xsoM3Vn zedJbE@l3>U#S^B#_4daWMQ94$?>3N}y5Lnp!1IgcMG^^3+&ur!Jj~s8MSbs;mfae~ z2V+hY$mQ|7*2xPw`?>gT6JMqjYkAvAGLq0Z}uYGGt&<4H6oo5B+c$eRKv6RVP zrrucP@cn9uLe|NyDwnqK`1I_X>e|a8!IzT9&0blmqAELQ^%70VgRyd{g^uy8wI`V? zUa~OG?>jSR$!^=v|I_~6Kl6X~&-(UX_0l(-TYkujd|>kL`ak7Y(1w4v6ApZ`4}JN6 z?d;B*^92rXD|T4g&vtgssm!(+TT*k<C)_pmdcpUh{!fMeEZe{>e2U%TbI%3MKY6+} zFY4>Gx6zB&P3>K`cI}1j`Mw(>%`<{;%S~Lg@@<OPEs@vvwk%wEZd;qK?0@q@|4D0a zIt6T*dG&&?$$tM?j9;Javx>d?KJVRqe?6oLCfk(nTNWE_v~UzZb*s*8F~=vL2^ZDd zOFlfT|M%?O*{83iUnH!1y)gG)?7jQ{KYe>Ab;~DJdCS?qXRo$fU*eYGykHh0${CyS zD^}ao?Xp(l#m9=1xHvQNC2V4(LKf&JL=<KUFv%}&NpjJ6p`a()=XD|4)#16E{Har3 z(Z7wt4#xjsG!v=3EooqDa<b=Aqj5?7+%hjQvHvHZ)Yq&1-~9T=C;PIw7A1e4Z?K<I zb@0dey807O{$K9-?<0S7rn%soY6t7xj|~46wyMe<nW`&%_xkkPSEc^#E}uNj>)Q2% zX^UN_IzIn!HT;;Z)4uw%Tei&nysmip(Y?l7rsll)x9r`U_AShRR^82SOt`#6=uEzV zPObTgGtRG8Y}qkeU(BQ4=k)KnnJcyHw`k4F|CSND=e_VGgIx<0N^QD!yHDI8Gb7q| zow@(48CIIF8I3!uSra+h1T@71w+p#3=-Z?k-Cg>1Z}->!Uo8IuJtRYpDRip+2zqE` zpeZ$LbL*~2d*99ub<Ie;V(~F(dqtn4^gi+3izar=e)yKpFMVcHI@4<Lef1tQtLE&y zk}KoK*(~>E=c_rB*4Evb5ih;m&-%%Cj)+o;GpE{PTbX+}m&sc1vyi#|i|4wZ!1Yh; z#`BHVc|zFje!(%!$&0$GEfiy{(|440?Ra+mU6If>uh-k<xGoE=+9Ago&(~?nTDaUp zGnD77@{_Z@LGs+k{!cuAQlz4O@)YmsPAhWszkk^_iKlJCo@*0)%x2nro1F8kCu6qT ztWUF_-pD-EYwEh_+@FfLstb{PSNy*m=r#ZK)TOqkm(ycD*WJy^RbC?J+wO?EzDP5W zStNRM)fNFgA3Htc)_q&Ie7*c+ao4w=x6F*E-#2i*;^pStyX5Xo$?seGm8)(%C|g_4 zc<E`<;{Yf3>Zrr)&tEf~t^a0tf3<W`TSMdD2XY!FpPqJg^@Ozf8t{D*Uzd=!>WaAI z?(H5bhCi739^YTQr|!kaJxA0O19pB`o@$|_k+|m3r0i3TUX!O>j*(PtOsfo5^g4E< z*u%rj;^vIWCYRz2eb#0yz8!75>_mj-^gUNnKG$EU&g)+w^J{g19q0F!sEWeh({G!< zpY6fX^SC{vR`q@A6KR(jJNK?zUeCJ5Qqt(y(<6Iqek&;~%JgbmKWY24z9Z2pTTh0i zadER;K74HRUYUI_ZnB+sw!K*W`fX8W^ghqHzO;!haTRB+_BKEH$hGyu4v(O|pyDSl zQpD@n`xVcy)SpXAY}U)@7weK?jd*FoF#E9&<6AA$i;T-n7EHQ$>5!>!>RBaq_Ae_A za5q^r9A{X!>+d|?CU@(Ma~!vdI*#0%6ym79Nw4EejQA3b!j&(0RxbMb;o@ti0Nt8B zhm4eNW>?p3(6Q88pd9{v&zltUc}G)kPMCMlD10{8$!6Kmok7d$BPRvPXq}E-^e3-{ z(PDm!UwK?)(TqD2^p@O}wZ9#rGiRxAQ}MZwU^$EVG0Rpmyy2gop~ca1=ZoD^+Y`+1 zR-Gu-;t2OxznO8D$*NkZm3#Z#_Y^nowcxaG-4b_v@sphmabmXY3m)(P&^(#>&(D*L zb}I7>cem&4jH=*czgbWrZ&k0NcjUH}<2298bu90dkLACfQ-9UhH*P`y<EQF76nQVq z_kSgIlKq2(Vd&KV*L-3Y2y<9#&-^(pMO>$z@w0xCWzm6ukLJ6S_?>h*@O|SS*T<W* zu4)zQ>^mZ6U-hy0gzN3zAj|Z7X{l$X&dGh}_(-G2GWGh6>}zJ8?+ZWwbzR#tyFP!u zxUqiyMgBb>61(I3L^kxBh<Y*Jey+;$C-9<L`xk*ev#B2Zx1X!p{0W@6Y{hnG(;)Xf zn-3eZ_S+^LdEm<Q_<nnKXpcR6MgQ5~+z0o{%-g*`Zuuj*@<}<{--v3zvIy7QeR^x$ zCHbtqUJp&wAI5~gD{`&6F_rPlp1g9q!giPXGgE3C=IQ-W)2vYQweh>vF)KvTWM)#@ zCf1WF-CZYT*d|-OOLe<c)3^7fophzryKQY|+a}M@zTCSiW77g@|GB(E`PShaD*jft z1mE+NF3UCHUYue3S|UaAPwkPTicag!ZJfNz<Z*hX{fp1f&mT&EyO`}p>wd0pGq=9} zqto>~y}AD3PLoyXyxP%O9NT^J7E8_f`8&)kB(HTvqu_7bhk>51r5obfbAI*BFjGxk z|7gk-MG>uAsyF?jCR@)EPS3Tw@#=l<Ue9@RgO9YT_uQM`aPwk&n|gMYjm$S$nYX77 zZ=aMiT_i|7ac|GTeRhZU1s~bBNG*W>o9s;vspe{-!+V2|)bCyNe0$ufa7V5~T7l=6 zKMK>@5vsC%YM)Q#*D}e>W!9HFi_5YMWmNvoh<>$jqrYy(wBGd#6ysU69Zl>MS*w<= zJ-+BdZsCviKdCi*_F=2`$nl?u=cxITe>q64>sRI-VYk1v^M5Saz|J+*Af((eWZoj- zr-voCTC|_MB+$uql|86_X=}ZvP~A#}^ZHlan)d%%F~8=)bU*e#=Qr}0tp0!O)&7mY z^4I)}&iHG7VRzT`dhZqguT8EBvXA(`R=qFc?{==&`&F;hXfItOopM$+^)jUSZ<4Uh zD62fAZI9EM`C<0I9ekPhWo4Rol<NIuy~@OT&BJzUg5<Ufzp@VA%Kcuy>Z9lEmH(Ww z4SIP>ui5FBR4#4x4%@a-S!3Gda;ZYr<#%uGTzJ@3GrZDQZ{EzH)!uhxGB+l?(94=9 zV9R!X)!9IKo%o*Cz!`3ym9IXEn{uTsYxnayZ@x)=A(NE&sZ80#DHG=M+JAfhpY2w` zhh0k2@;@DRO*n2eeZv=#H!H(T4eRA(^|M*I!ekow<T|C<v{o6t4J`R#X6o&6QPIrJ z^XFaTBkHP31s{XDIhTedY&iC>?%S0{^WVmc^A|>IZ3y3evVL{^ldEYfxr}R%P7jzM zu>N^Sm|DqAuUoR`OA@`$GZpT*%D2_=>Fsmhj-1k6@iiy#!JnB69XfpG@$+Bst=zq( zUaiefSj?!#f}z{a!tTe^^))LR+D#;x7??U1r?)XU*4o%|$#{LWoU&+g@YR#*yUV+- z?A5ZLy1Uta@|6Z%*V<KImaKY_6tXy1G^(vBWVV&xoON;69?je0|7zB?e-*mY)3*7o z_#gOc*)coarH=yF-_|ajE`Nm8ial=Ij-6>U!rJOvKgD}j{@pTl{)N+8RTCFyZ@n^4 zOf0@hdXsalRtcl-%ztxy9)5nT=xOG{`SrmWcNy){`!>A$zTSQ8E9tY<>-y<Q7t;dP z?I^x;^n53iVtdce4+rjPiKYf?wQ<Q-Z~N2flJe7GhG_Mt1h0TzvFowPs*y?MXU#9K z`LtQcWYM(WCiSX)ULO?%#rah7eh9prc|!JLhKixdsXn(<4|zVR+K}?iOZDn&_C=T^ z9MRwxtCU^frQmwrd5W%Vd(eq3Q<I(SYEEcfm^Y32PkEi;|N3YD&;R*9^MCz{|Nqr} z|JD@z|6jNL{`7Bu|GPf>AHVRw{T$(|myR+enE&nF6P9vZ|Gwso`f$Gm2kr~r+WKL? zirn_2JAW?T#LB}W`=>dP!SVh-fxu&hAKQPX6nt!79C5?`>aR`g&QBBBRCjKC-2c(t zMeIwa`UB0|D`l@~D#l7*yv&fDyyyk9<drEuu4zu*p2?AKaz(wy>SUwnU9sAo8>M0W zJd@Vy%J1Jyx8HiG5mNtd`ux0ic>*@`cgXL|vt2m-q?4KW<6k>Xq&*kkyBQ+#^kHSV zY{#hpsm|x=hc|DYXYz{w*<Is8lit(13+m%mAKRfaf2D-QQXi)FTQfmTuFIy|5C4^q zd35Q-yiJOlH{(@~9Zi4eeeB?w_se}XC7ykHaGrBU!|KHFXJ_hJKPc3ms^58BA|<Hd z+j&!sqK=NI$(||Ozg(F7W{SndiCq&OEe`v&#K3w-eTdSRF42bOcc-6ant8u=f0QTH zH?4Ew(#0~8HzGCftcghr<JI@}JhZ8BQ;<YtnccL0UePB>KW9cH%7rm;Yackc$!G(^ ze=WBz>%SWLUk>fjo)N}6*+(HiwP0g?vN&6LLivYPn<O0~*GzcR$-%A|Fx8K7l_d+S zRN=uCRyA#d$i|ag=Uu`$^q0Q8TH5Wta{BAn&lhfXob_&LljDJOQ*F`3392k-liiB$ zWSv_0s``7#pX|Oij-wM67VLf6rTU0x#l`d$foxe%)*pSd;Mm7i2GcV?C3gg_3JaQ= zey{%EM<vA<e=Sx=Uy^$6yWjV8`P9{QX}UpTt1g8{^BFr{?`ONUQ9I6UhO^(IYpG?- zUjG(N6YVyaoWA(K&2;7Zqo=ei-A%Iv!@e3=yL`Tsd3;%H-p{008p+dBatinK#s%!F zT=)9Vb}{$)-<bTDZ#r22d47*}@s-(+nbaD>uN?_UujjBo%ND`PvVnERg5ze~^F42< z>TcYsxbX9t=Rymo>P+TWcVNiaaesZ&wLG&aJKeMMkLl_BF>WuvDKvfS5%G69-f_7} zQv#ng?VNB>_M+UxKXx*cLgM+9i&FV!EigF$>B)5EKL&Q4iw_5NC&@FMV&xO$oRa>l zEO)B!t8*%uSLByEH~n>*I#uO?et`wg6y1OBzqy`ub1cr3oWW76-F{KPLgt&!9p?9| zUbsuW2y=HZV%(`?<irpsYj~3H)4$F}8(H7P#^%Wr=85oi$KG83pWp3)<|>8-tPB9L CmUAKi delta 40172 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 diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index fb4aee94d0..edbdff683d 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -73,7 +73,8 @@ class OpenSearchClientTest(unittest.TestCase): internal_name="test_table", is_public=True, is_schema_public=True, - is_versioned=True), + is_versioned=True, + owned_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502"), column=ColumnBrief(id=1, name="ID", database_id=req.id, diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 50cd161bc3..bd0d13dc18 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -124,7 +124,7 @@ class TableBrief(BaseModel): id: int database_id: int name: str - description: Optional[str] + description: Optional[str] = None internal_name: str is_versioned: bool is_public: bool diff --git a/make/build.mk b/make/build.mk index 800c879c97..270b2cee6f 100644 --- a/make/build.mk +++ b/make/build.mk @@ -24,17 +24,17 @@ build-ui: ## Build the UI. .PHONY: build-lib build-lib: ## Build the Python Library. - rm -f ./dbrepo-analyse-service/Pipfile.lock ./dbrepo-analyse-service/lib/dbrepo-${APP_VERSION}* - rm -f ./dbrepo-search-service/Pipfile.lock ./dbrepo-search-service/lib/dbrepo-${APP_VERSION}* - rm -f ./dbrepo-search-service/init/Pipfile.lock ./dbrepo-search-service/init/lib/dbrepo-${APP_VERSION}* + rm -rf ./dbrepo-analyse-service/venv/ ./dbrepo-analyse-service/Pipfile.lock ./dbrepo-analyse-service/lib/dbrepo-${APP_VERSION}* + rm -rf ./dbrepo-search-service/venv/ ./dbrepo-search-service/Pipfile.lock ./dbrepo-search-service/lib/dbrepo-${APP_VERSION}* + rm -rf ./dbrepo-search-service/init/venv/ ./dbrepo-search-service/init/Pipfile.lock ./dbrepo-search-service/init/lib/dbrepo-${APP_VERSION}* python3 -m build --sdist ./lib/python python3 -m build --wheel ./lib/python cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-analyse-service/lib - (cd ./dbrepo-analyse-service && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) + (cd ./dbrepo-analyse-service && python3 -m venv venv && PIPENV_IGNORE_VIRTUALENVS=1 pipenv install --dev) cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-search-service/lib - (cd ./dbrepo-search-service && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) + (cd ./dbrepo-search-service && python3 -m venv venv && PIPENV_IGNORE_VIRTUALENVS=1 pipenv install --dev) cp -r ./lib/python/dist/dbrepo-${APP_VERSION}* ./dbrepo-search-service/init/lib - (cd ./dbrepo-search-service/init && PIPENV_IGNORE_VIRTUALENVS=1 pipenv lock) + (cd ./dbrepo-search-service/init && python3 -m venv venv && PIPENV_IGNORE_VIRTUALENVS=1 pipenv install --dev) .PHONY: build-helm build-helm: ## Build the DBRepo and DBRepo MariaDB Galera Helm Charts. -- GitLab From 40d2baabf2753a47aadca767e80a52b90b9f1ae1 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 29 Jan 2025 17:48:57 +0100 Subject: [PATCH 32/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/concepts/data-visibility.md | 15 ++++++++--- .docs/images/architecture.drawio | 41 ++----------------------------- .gitlab/agents/dev/values.yaml | 20 +++++++++++++++ 3 files changed, 34 insertions(+), 42 deletions(-) diff --git a/.docs/concepts/data-visibility.md b/.docs/concepts/data-visibility.md index 04f37c6979..ecb33cbfc7 100644 --- a/.docs/concepts/data-visibility.md +++ b/.docs/concepts/data-visibility.md @@ -8,16 +8,23 @@ subset of a database. ## Visibility -In total there are three possible scenarios: +In total there are four possible visibility settings that can be applied on database level and then at the subsequent +levels (table, view, subset). We give two examples for better understanding: -#### Public +!!! example "*Example*: Database that is hidden but certain views and subsets are visible" + + Database Airquality has the settings to hide all data and schema by default. + + * Table `sensor_measurements` + +#### Visible !!! info "Possible use-case: data publication supplement to an open-access publication" Where the database's data and metadata is set to be *visible*. This means everything in the database (tables, views, subsets) are visible by anyone from the public. -#### Private +#### Data-only !!! info "Possible use-case: private sensor measurements with timed embargo" @@ -30,6 +37,8 @@ join tables and/or filter certain columns and apply a 14-day delay-embargo. <figcaption>Figure 1: Public view that joins two private tables and applies a time-embargo</figcaption> </figure> +#### Schema-only + #### Draft !!! info "Possible use-case: project data storage before publication" \ No newline at end of file diff --git a/.docs/images/architecture.drawio b/.docs/images/architecture.drawio index 71536a3212..b1aed4cb40 100644 --- a/.docs/images/architecture.drawio +++ b/.docs/images/architecture.drawio @@ -1,4 +1,4 @@ -<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2" pages="9"> +<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="26.0.9" pages="9"> <diagram id="mvBsv1rP8O80Qe3yGnn_" name="docker-compose"> <mxGraphModel dx="683" dy="391" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> @@ -1109,47 +1109,10 @@ </mxGraphModel> </diagram> <diagram id="7HywRA3nQAgvNxZjCRq2" name="private-embargo"> - <mxGraphModel dx="985" dy="394" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> - <mxCell id="n6nk3BLY6128t3IB6Ma7-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;curved=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="n6nk3BLY6128t3IB6Ma7-1" target="n6nk3BLY6128t3IB6Ma7-5"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-11" value="<span style="text-wrap: wrap; background-color: rgb(251, 251, 251);">value,loc_id</span>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=8;" vertex="1" connectable="0" parent="n6nk3BLY6128t3IB6Ma7-8"> - <mxGeometry x="0.0303" relative="1" as="geometry"> - <mxPoint as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-1" value="" style="shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;" vertex="1" parent="1"> - <mxGeometry x="250" y="170" width="80" height="80" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-2" value="<b>table</b>: sensor (private)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> - <mxGeometry x="227.5" y="150" width="125" height="20" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="n6nk3BLY6128t3IB6Ma7-3" target="n6nk3BLY6128t3IB6Ma7-5"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-12" value="id,name,lat,lng" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=8;" vertex="1" connectable="0" parent="n6nk3BLY6128t3IB6Ma7-9"> - <mxGeometry x="0.1455" relative="1" as="geometry"> - <mxPoint as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-3" value="" style="shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;" vertex="1" parent="1"> - <mxGeometry x="430" y="170" width="80" height="80" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-4" value="<b>table</b>: location (private)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> - <mxGeometry x="405" y="150" width="130" height="20" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-5" value="" style="shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=8;" vertex="1" parent="1"> - <mxGeometry x="340" y="290" width="80" height="80" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-6" value="<b>view</b>: validated_sensor (public)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> - <mxGeometry x="290" y="370" width="180" height="20" as="geometry" /> - </mxCell> - <mxCell id="n6nk3BLY6128t3IB6Ma7-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="n6nk3BLY6128t3IB6Ma7-4" target="n6nk3BLY6128t3IB6Ma7-4"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> </root> </mxGraphModel> </diagram> diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index aa241d7f0e..da48b95f4e 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -26,6 +26,9 @@ authservice: client: id: dbrepo-client secret: MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG + setupJob: + image: + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3rc0 persistence: enabled: true @@ -33,6 +36,7 @@ brokerservice: enabled: true ldap: bindpw: b8534187c9adf9618e7bd1c79c7f4639 + identityservice: enabled: true global: @@ -66,9 +70,13 @@ searchdb: analyseservice: enabled: true + image: + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc0 metadataservice: enabled: true + image: + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc0 admin: email: noreply@example.com deletedRecord: permanent @@ -83,6 +91,8 @@ metadataservice: dataservice: enabled: true + image: + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3rc0 rabbitmq: consumer: username: admin @@ -95,9 +105,17 @@ dataservice: searchservice: enabled: true + image: + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc0 + init: + image: + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc0 storageservice: enabled: true + init: + image: + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc0 uploadservice: enabled: true @@ -113,6 +131,8 @@ metricdb: ui: enabled: true + image: + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc0 public: api: client: https://s155.datalab.tuwien.ac.at -- GitLab From 558a3afa563344aac034fa737aac12df2de106f4 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 29 Jan 2025 18:50:35 +0100 Subject: [PATCH 33/52] Updated image Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/concepts/data-visibility.md | 31 +++++++++++++++++-------------- .gitlab/agents/dev/values.yaml | 2 +- dbrepo-auth-service/init/app.py | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.docs/concepts/data-visibility.md b/.docs/concepts/data-visibility.md index ecb33cbfc7..31c6ca3682 100644 --- a/.docs/concepts/data-visibility.md +++ b/.docs/concepts/data-visibility.md @@ -11,34 +11,37 @@ subset of a database. In total there are four possible visibility settings that can be applied on database level and then at the subsequent levels (table, view, subset). We give two examples for better understanding: -!!! example "*Example*: Database that is hidden but certain views and subsets are visible" +!!! example "Example: Database that is hidden but certain views are visible" - Database Airquality has the settings to hide all data and schema by default. + Database *Airquality* has the settings to hide all data and schema by default. - * Table `sensor_measurements` + * Table `sensor` inherits the settings from the database by default and therefore is also **hidden**. Nobody can + read/write to this database by default. Only designated users that the database owner allows to read/write can do + so. + * View `v_sensor` inherits the settings from the database by default and therefore is also **hidden**. The database + owner wants the data to be visible to the public (anonymously), so he changes the settings to data=visible, + schema=hidden. Now everybody can see the data but not the table(s) that contain the data. #### Visible !!! info "Possible use-case: data publication supplement to an open-access publication" -Where the database's data and metadata is set to be *visible*. This means everything in the database (tables, views, -subsets) are visible by anyone from the public. +Where the resource's data and schema is set to be visible. #### Data-only !!! info "Possible use-case: private sensor measurements with timed embargo" -Where the database's data set to be *hidden* but the schema to be *visible*. This means everything in the database -(tables, views, subsets) are by default not visible by anyone from the public. You can however make specific views that -join tables and/or filter certain columns and apply a 14-day delay-embargo. - -<figure markdown> - -<figcaption>Figure 1: Public view that joins two private tables and applies a time-embargo</figcaption> -</figure> +Where the resource's schema visibility is hidden but the data is visible. #### Schema-only +!!! info "Possible use-case: publish data for reviewers before the final publication" + +Where the resource's data visibility is hidden but the schema is visible. + #### Draft -!!! info "Possible use-case: project data storage before publication" \ No newline at end of file +!!! info "Possible use-case: project data storage before publication" + +Where the resource's data and schema visibility is hidden. It will not be findable even in the search. \ No newline at end of file diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index da48b95f4e..70ada3ca20 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.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3rc1 persistence: enabled: true diff --git a/dbrepo-auth-service/init/app.py b/dbrepo-auth-service/init/app.py index 270e959fec..f22541ba55 100644 --- a/dbrepo-auth-service/init/app.py +++ b/dbrepo-auth-service/init/app.py @@ -46,7 +46,7 @@ def save(user_id: str) -> None: database=os.getenv('METADATA_DB', 'dbrepo')) cursor = conn.cursor() cursor.execute( - "INSERT IGNORE INTO `mdb_users` (`id`, `username`, `email`, `mariadb_password`, `is_internal`) VALUES (?, ?, LEFT(UUID(), 20), PASSWORD(LEFT(UUID(), 20)), true)", + "INSERT IGNORE INTO `mdb_users` (`id`, `username`, `mariadb_password`, `is_internal`) VALUES (?, ?, PASSWORD(LEFT(UUID(), 20)), true)", (user_id, system_username)) conn.commit() conn.close() -- GitLab From 7830e2b35e2b9187e62e32c73981bbc550c7e64e Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 2 Feb 2025 17:58:37 +0100 Subject: [PATCH 34/52] Use gateway Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-gateway-service/dbrepo.conf | 24 +++++++++++++++ dbrepo-ui/nuxt.config.ts | 32 ++++++++++---------- docker-compose.yml | 2 +- helm/dbrepo/templates/gateway-configmap.yaml | 18 +++++++++++ helm/dbrepo/templates/ui-secret.yaml | 5 +++ helm/dbrepo/values.yaml | 20 ++++++------ 6 files changed, 75 insertions(+), 26 deletions(-) diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index fd66cf805e..68778de757 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -40,6 +40,10 @@ upstream dashboard-service { server dashboard-service:3000; } +upstream auth-service { + server auth-service:8080; +} + server { listen 8080 default_server; server_name _; @@ -67,6 +71,26 @@ server { proxy_read_timeout 90; } + # Proxy Keycloak OIDC connections, c.f. https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations + location /realms { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://auth-service; + proxy_read_timeout 90; + } + + # Proxy Keycloak assets, c.f. https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations + location /resources { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://auth-service; + proxy_read_timeout 90; + } + location /api/search { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 0f2099a387..92403e293a 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -3,19 +3,19 @@ import vuetify from 'vite-plugin-vuetify' const proxy: any = {} -// /* proxies the backend calls, >>NOT<< the frontend calls (clicking) */ -// if (process.env.NODE_ENV === 'development') { -// const api = 'http://localhost' -// proxy['/api'] = api -// proxy['/pid'] = { -// target: api + '/api', -// changeOrigin: true, -// pathRewrite: { -// '^/pid': '/pid' -// } -// } -// process.env.NUXT_PUBLIC_API_SERVER = api -// } +/* proxies the backend calls, >>NOT<< the frontend calls */ +if (process.env.NODE_ENV === 'development') { + const api = 'http://localhost' + proxy['/api'] = api + proxy['/pid'] = { + target: api + '/api', + changeOrigin: true, + pathRewrite: { + '^/pid': '/pid' + } + } + process.env.NUXT_PUBLIC_API_SERVER = api +} /** * https://nuxt.com/docs/guide/concepts/rendering#hybrid-rendering @@ -111,15 +111,15 @@ export default defineNuxtConfig({ providers: { keycloak: { audience: 'account', - baseUrl: 'http://localhost:8080/realms/dbrepo', + baseUrl: 'http://localhost/realms/dbrepo', clientId: 'dbrepo-client', clientSecret: '', // inject on runtime scope: ['openid', 'roles'], optionalClaims: ['realm_access'], - redirectUri: 'http://localhost:3001/auth/keycloak/callback', + redirectUri: 'http://localhost/auth/keycloak/callback', userNameClaim: 'preferred_username', exposeAccessToken: true, - logoutRedirectUri: 'http://localhost:3001', + logoutRedirectUri: 'http://localhost', }, }, middleware: { diff --git a/docker-compose.yml b/docker-compose.yml index ed0f7e26c0..25e0b39733 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -335,7 +335,7 @@ services: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost:8080}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost}/realms/dbrepo" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" diff --git a/helm/dbrepo/templates/gateway-configmap.yaml b/helm/dbrepo/templates/gateway-configmap.yaml index aa314d3c65..66a8bc945a 100644 --- a/helm/dbrepo/templates/gateway-configmap.yaml +++ b/helm/dbrepo/templates/gateway-configmap.yaml @@ -39,6 +39,24 @@ data: proxy_read_timeout 90; } + location /realms { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://auth-service; + proxy_read_timeout 90; + } + + location /resources { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://auth-service; + proxy_read_timeout 90; + } + location /api/search { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/helm/dbrepo/templates/ui-secret.yaml b/helm/dbrepo/templates/ui-secret.yaml index 5620e7b2da..bab14fce20 100644 --- a/helm/dbrepo/templates/ui-secret.yaml +++ b/helm/dbrepo/templates/ui-secret.yaml @@ -22,4 +22,9 @@ stringData: NUXT_PUBLIC_PID_DEFAULT_PUBLISHER: "{{ .Values.ui.public.pid.default.publisher }}" NUXT_PUBLIC_UPLOAD_CLIENT: "{{ .Values.ui.public.upload.client | default $uploadEndpoint }}" NUXT_PUBLIC_BROKER_CONNECTIONS: "{{ include "dbrepo.broker.connections" . }}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/api/auth/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "{{ .Values.authservice.client.id }}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "{{ .Values.authservice.client.secret }}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "{{ .Values.gateway }}" {{- end }} diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 626aea471b..cd2de433e2 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -585,15 +585,17 @@ dataservice: ## @param dataservice.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile type: "RuntimeDefault" ## @param dataservice.resourcesPreset The container resource preset - resourcesPreset: "large" + resourcesPreset: "" ## @param dataservice.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) - resources: { } - ## requests: - ## cpu: 250m - ## memory: 64Mi - ## limits: - ## cpu: 500m - ## memory: 1024Mi + resources: + requests: + cpu: 500m + memory: 1024Mi + ephemeral-storage: 50Mi + limits: + cpu: 1.0 + memory: 3072Mi + ephemeral-storage: 2Gi ## @skip dataservice.resources grant: ## @param dataservice.grant.read The default database permissions for users with read access. @@ -1054,7 +1056,7 @@ gatewayservice: computeservice: ## @param computeservice.endpoint Configure the number of parallel workers with local[n] - endpoint: local[2] + endpoint: local[1] ## @section Ingress -- GitLab From 87150b7499835d4f2dc8179c8e481e26e4275ece Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 2 Feb 2025 18:08:12 +0100 Subject: [PATCH 35/52] Another attempt Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- helm/dbrepo/charts/seaweedfs-4.2.1.tgz | Bin 240723 -> 241323 bytes helm/dbrepo/values.yaml | 20 +++++++++----------- helm/seaweedfs/Chart.lock | 10 +++++----- helm/seaweedfs/charts/common-2.29.0.tgz | Bin 16734 -> 0 bytes helm/seaweedfs/charts/common-2.29.1.tgz | Bin 0 -> 16736 bytes helm/seaweedfs/charts/mariadb-20.2.1.tgz | Bin 62862 -> 0 bytes helm/seaweedfs/charts/mariadb-20.2.2.tgz | Bin 0 -> 62889 bytes helm/seaweedfs/charts/postgresql-16.4.3.tgz | Bin 81437 -> 0 bytes helm/seaweedfs/charts/postgresql-16.4.5.tgz | Bin 0 -> 81448 bytes 9 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 helm/seaweedfs/charts/common-2.29.0.tgz create mode 100644 helm/seaweedfs/charts/common-2.29.1.tgz delete mode 100644 helm/seaweedfs/charts/mariadb-20.2.1.tgz create mode 100644 helm/seaweedfs/charts/mariadb-20.2.2.tgz delete mode 100644 helm/seaweedfs/charts/postgresql-16.4.3.tgz create mode 100644 helm/seaweedfs/charts/postgresql-16.4.5.tgz diff --git a/helm/dbrepo/charts/seaweedfs-4.2.1.tgz b/helm/dbrepo/charts/seaweedfs-4.2.1.tgz index 6fd5807b55c4d6ad8041d96ca5d4a39ed3795138..294e9679821376eef75eee86ac2785453de064ea 100644 GIT binary patch delta 241097 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 delta 240409 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 Dox~sR diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index cd2de433e2..626aea471b 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -585,17 +585,15 @@ dataservice: ## @param dataservice.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile type: "RuntimeDefault" ## @param dataservice.resourcesPreset The container resource preset - resourcesPreset: "" + resourcesPreset: "large" ## @param dataservice.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) - resources: - requests: - cpu: 500m - memory: 1024Mi - ephemeral-storage: 50Mi - limits: - cpu: 1.0 - memory: 3072Mi - ephemeral-storage: 2Gi + resources: { } + ## requests: + ## cpu: 250m + ## memory: 64Mi + ## limits: + ## cpu: 500m + ## memory: 1024Mi ## @skip dataservice.resources grant: ## @param dataservice.grant.read The default database permissions for users with read access. @@ -1056,7 +1054,7 @@ gatewayservice: computeservice: ## @param computeservice.endpoint Configure the number of parallel workers with local[n] - endpoint: local[1] + endpoint: local[2] ## @section Ingress diff --git a/helm/seaweedfs/Chart.lock b/helm/seaweedfs/Chart.lock index edcc38c41f..e8771b63e6 100644 --- a/helm/seaweedfs/Chart.lock +++ b/helm/seaweedfs/Chart.lock @@ -1,12 +1,12 @@ dependencies: - name: mariadb repository: oci://registry-1.docker.io/bitnamicharts - version: 20.2.1 + version: 20.2.2 - name: postgresql repository: oci://registry-1.docker.io/bitnamicharts - version: 16.4.3 + version: 16.4.5 - name: common repository: oci://registry-1.docker.io/bitnamicharts - version: 2.29.0 -digest: sha256:4c967f771b303ca0db9ba2e355790152448c77a05d3f6c69eda6c234bc3f60c6 -generated: "2025-01-17T15:24:18.141765362+01:00" + version: 2.29.1 +digest: sha256:6293da40d44a58d1f72c324a5fc1ea45f462f25e33452ec67e665949de35d27c +generated: "2025-02-02T18:06:30.080005285+01:00" diff --git a/helm/seaweedfs/charts/common-2.29.0.tgz b/helm/seaweedfs/charts/common-2.29.0.tgz deleted file mode 100644 index f36e9e24ec32ce1237d1ee774541c5586fce222d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16734 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%0Aa7^;Y)3-B5P;#$;{}HI7(4HaCg7ZM$L= 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 LPi1CkV`KmTli#{; diff --git a/helm/seaweedfs/charts/common-2.29.1.tgz b/helm/seaweedfs/charts/common-2.29.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8b9abbbc5b6c62a743cc0fb041d26b199c4313c8 GIT binary patch literal 16736 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 L=M+1JHbw>ji4COk literal 0 HcmV?d00001 diff --git a/helm/seaweedfs/charts/mariadb-20.2.1.tgz b/helm/seaweedfs/charts/mariadb-20.2.1.tgz deleted file mode 100644 index 9bba8eed49e866977396c0076b1a9c5946ec88b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62862 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�O66DFSI<dE z$l~7>(sHnB=8u@P;*eM-nVhil&6=P7)?a;~w5v1!@Wu76X3}~6H~0L%f2(d+_M89P z&949cUtRf6<;-*Yq{HvtSK4Wut(KNPz~Fe4C$etu!MeYv{!4XTF3?_*<Cgp3jcnlh z=NqCsxj#MiKXq|m&Fa`aQ(uXz#@t`<_2%y-J}=va6HYaY&tq~B*?sC$^n6|OM|Vxq z0!1H8X=hM~^8O}$QBETKeP#a4FJ7HTD!8w$-hN5+$9A1H*W1@?FA{&s>$c`f#MB!f znV71likkR$R$ufnxs?9Jc7qiE_60Q?zsugMH+eR#<NER`t}hN+eQH=c*+jRN<GRQ4 zn`^gkm2@#rlyei%*YSC7{xGM|JM80$<dBcQZwoAPKkzSL@yE(jTbD{5pC<2rAS;Wl z^v%h23M{kZ_@l}^?_E+pzS2DQf|$d>wTr$eoO2Uec6A|t!-@;h)xx<3{Y_>r&5U8! zk6n7x_*cs6)4BXfO^zqhUd}BS78Brac+RG-uPLxRG4u8EpGGm~m-o1Dc=2RQ*{w@G z?@V^*P13x{m$CNqk9|q!7oQB<AGY7|4c~%*t}9CHN`D&4mP}ioXQ>%<xG3H3l>U?Y z;1>bg#HTU#w!PHfKkfCtrMIV;F7e*4tJ)YC_vXq({$|DYmk;!x%&%Fvwok-r?bhX? zC)TY}=g!c0k?gv^HH?oZK{B;hq*q3>jDhD%jPm(h9-S)}^KBk1_~*FjgVE_r7IQKW zCm&yK_HcsIhbQw4xU%PDhAH0RIitR7@t24h68&!WnpbwLlsB<!`oQP=*7@1YR1ub2 zoDFZT$WL9w{^C-~DqmkWwc7eg4&pgC_qFXmeEqEN>F?$#6Io^Sg@yN}s$I(GJ<a_0 z-10>xD$;X`w_M8Fqw;h8wx3#h>q=&A6pmZ{dXDR_!`Jv1{hics_4faV_gWnjx76tJ zU3=v4?_Xdyv)H{?Tf$gkjx^=IdsuV##N}&07k~aF_%bzr{%$sr-r0Ja!oMAo3~hUL z;@k%2=8mn0-u~0_KKUZiOCZBG^nw1OY(cJMG0&-aXB|#1TDoph<cum7)5`N_SafS+ zf2!^HVxZ==^sVszN$2m%a)>UOn7MJ5qEN^8na=u6^W7)q%1m2T^}=z-Wd*L{(gFsz zM#uNdYQp-Q)O9v^OgBvkRocDqf86<p6-_$E!c$+FW$Nw<TFZVnLTK-!xe_zH+Gb1a n_PnI{B*OJlgV7uAANjRsQ~$1+|MhdE{eR|#cLVYnIM^8gPQ4gj diff --git a/helm/seaweedfs/charts/mariadb-20.2.2.tgz b/helm/seaweedfs/charts/mariadb-20.2.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a983469f30dfce693288215705891f387c517319 GIT binary patch literal 62889 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 D;Eep0 literal 0 HcmV?d00001 diff --git a/helm/seaweedfs/charts/postgresql-16.4.3.tgz b/helm/seaweedfs/charts/postgresql-16.4.3.tgz deleted file mode 100644 index 429f7ed063f6655796792fbe711b027e147ddda4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81437 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�jVOTsID%r<>GHD+Syo=w%IiUC)q{?9t` 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 diff --git a/helm/seaweedfs/charts/postgresql-16.4.5.tgz b/helm/seaweedfs/charts/postgresql-16.4.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ccf6efdfca747235fb2e67a814f479aaf06f4485 GIT binary patch literal 81448 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%0AnWkYbzb(&<qKbJK6X~t zYE9*%fP3MruUG%6<K1T?{XX=kc$vgnW$rr*%Wr*(e6X^2wsnbX^t#zq{<(MV%)Ni} z)5@P$j`cph`XQLL+PF@%W<^5Kia*+KAC!M*cp=#FepzZ$IBVXjBaK4yrnz63G*|b- zl{oY7ujjnHy6<;x?!Bk^UVp;Mrzd^%^qBOcWRZ~KByAzSUSrvliG7D3&h(LdcE_pl zU1*7C&gnP19HMJnvsMMASAOD)-ShAB-6iKLJ~bPP^IrZcx3%!I!n_%-+t;5zaWeZM zyF>gA%T39(dWX;c-5IM_m~4Oj*}1KLH=i5bxii22sgU_M<y6M0Hpczx?%zW?4rs@m zdNcR>qg0!tb8eSC3i|T>!R_!h-NsM<u6}CyL9XDN{P*C~^V05CL<ah8OI0`8uGKk} zPc`qOd!fjO*5zW3I(uWZ<rwzzZaeh6ZTAKnpGn1RQ{?<F*PiOQyz#cxL7ReQEk3iH z?^(&Qe`eYoG;fit!)d8)eQxK<pBQHS-RHxw`A4)>@x&4_ezv2Ab=%H=eZwhUAnbcw zo$be~vN?S@uc!JwU#E9b@Y%ZbQ++AP=T81R$(i;2q#}>&IYmjq0PjO46VEN3z3HBv z(S>vAdtNiVFt;+cdtR8FT2?pJoHr&r-(&TZ2hxw~ye?*UzqS0!y~lggdyQpQ?N2^k z<Zq~}`FgG?_4wa2>-w)P^)+6ky)HJ~eCnC*L)z2MKjLqYE4C?LWw&|GHGboK5&n9X z3+FA=cZlgfTIhAJM(wm-_@UnURnO-Mng5=neEXBsxvi~wN3=GU+2k~KHJ7(Y)hC%W z9AFn(^}aA@{>jY(d3=Yqm^0h5-Z>Jy=W0UdTxq+ng~pQa9_~M|P3x4`ogF(IY-aq~ zvWd5N{Ri8#uRd42x@i@A=gsG{(ydWN`yZ|sQs$CAo&IroU)|vyiE&?zdg9nJqh=Yt ziaO!HCCcp}>-{Ga<|Q&k%bwV5lfL?Q!jq6mM^c|>eYtrvKd!;2W(rI5huX}K*@deX z-C?WoUnlYK={Dh2N?{=mnHCSYHJWlV*UtQU<#{H<tIGv4f8w%kPt0A(^y`lB$L5oF zFQ1Y3pZ4fWlE3Vo3z_ry@@HS2##6JH*|Ajr^rxLKgWdg<?<A~i37XEdd+lN6J**P% z-JOz)Q!2|0cCF|=e}k!PyZ_tL=IjN#=HzhqTK)QWN~3?u9Z~<&>F0vw&953YWS-`_ z?*C(1^vb+R1#Yi9`iu>iHt%zOD|&Zs$Mk$1`R6NpXO~z-u$cc#>6~@jZfjxlxtV`g z>{8j<YW__lgWXy5n(PC~6=HWe{L3f%Jv6R=^_WegS}%`5_X+QTYHnS&AJezZdAj+- zW`R7l=~q=<SH?dV^4(tX>b?1qncs}|?N}f3Y@gUK<K^2=HB9~KT+)B0=yu=fchme| zZdS<K$Nw>DL)WM4m+Gf(7uQ-DbIF6{#ql?*+wSjQHnrtm=nLJgXHLg`yK>z3z0M3t z$)$gCKAcKgGqFr0X~M+0ciwLJuR8D6j+1ULZFciMYFqLw#q0m6(_8%G=Ny>7_es{w z=V=?4Z#$bdt3@<*&9;oy|6l%K^}aBrJK&wp6o&~>RkQyIzYp!Z{N}Bml=Q!ydPj?Q z75cW8uX$M$Q8U+eYtG%w`Jd1I*Lmwudabu`jpYa9{|amF<$ns7{&tuppZ}e{e@@<~ znCWp0JNqWQ?O@9D`!Hio{S=nPH{S2(*xfn5<=F(@3aMK6W?nG?<xr<J0dZTxy0)7K z$L$H6q356f%!cEaqU?ndFMH)YuIu-viETZ{(ezPechlFU?`++2)A!29ta0}KsnO(l zCqB+O^xu_}`UwS-+xD~TA1V}8iu5~tKwFvf2b1<eE63v*nX}zQQXij8sJvnJdFAH& zR|GDmM4#_XnWkE?xgfvtNZIG*eRJA&99(k7o+Z#>w`*wPLa!auk2deJl-go2n=8kp zV|(0$lp5h1m);g13l=vQ-gWLr%efQZ4s&*FO|3JtpU<lD@s)NvbLE<E7O6`Dd=K_M zj6JiGA!Odl0>)Efj_+*xr(3MveqSLkCulv_R5QcYI!_zLV^tOxkDtD3{Cwr^`w9w% z(+a}8W@m5AKj0g;_2Sv}XX5O*A3l43@T$+39Xk$I+)=H|`>fM6`|sYH+Uy0Jx5rqO zf4_3f*J#%9OAB;$7MY25wUh;v%ETP`Wb%MD$F1Cc=J_`>yJy$D`np&}=J&~~zQyaO z^F93Re>`rgQtiY$FS?h1|EDu=m8Dm;(&WYF>RaP2{oY)O*rYglM~<q*s_EHDZ<bG~ zt`zxE`{(-SJ^qKLr7B!0ynlNGbD9-L`{gAnd0Thg6`JO-eU(M;#>W#l7RUcIQnMHR z{pIgc`<=f}-uoDQR7&=SFK8(LZ!1Ftm$jtibn6RcjXybUw<avV;>vda#{4NE8e5{5 z<w?z2v|_f=hdQT*HJrP3I(|9UGhW&)c0P6KPl2e!_%jR6`x!}i%zoj0W6mOZap{<j zck`?b=6KedFSTx6=HJMWeULBz>C5u7sSaCjZ4G`CTwD29bc@l^FRt_VX=VuCn5leW z{@=i_FSq1`FO9rDGt}K{f8f4Wu@c4=fv<u&%vwWgh0ZH&NVZ)l_p&igP)MUd@zANM zOVnrYxU5;T;rXtDwKHqtd9BZG@mdx6_F2X3CMoWclO{rSYHW#2T4myMkJul4&Q@Zs zoVenyp7?6^9imfa2Hxk;4X*48{1#c!xX8GQv$n+gt<r|o9#f+)u6tB&d2ZRI?Uz@6 z`@O*Z-|qB-%Xh30zoq>w-EI4=wGDG?IgjjTdZXr9z!7X6k+A#3d(jIn+y_5<GNzvk z&R(x^An#vU;0<lA1IBya2iNAgm4DvOUB3PY52Je4p*|s}vh`U%FTN<#-Oljx<(1iL zoVNm>tliTeoO}Iqu;T9k!JSLaY*b&nOGc)7mAzKtvQxc_M9Myyrx~1{uD`8&p;*Kv zuX7$*%}vw41eQJg>}kt=aqgd56Z=cihx!if{l7KQ-RsZi7ms@5A8iS~s&~J^_f20f zLuzKv&ri?oJatsVrfR&aKk`oby6E*ap@;JRr+U8JRK^`HG^6*rmB7^m*Meo0_ILWF z+qf^s>h`V?DJy#X*M~tp>yY1l&3zub*I!j#JdHI%O*J%p?s^}~OdZx&g|mz@*DsQ0 zwJ$sWJ}SFRaPjiIa<(@c_WH{fEK+;p_Rv*;HM45Uk-L>2S$D<0)O&ly_5asTkGV^K z|5^SeWM|U323akRh4xk)ZvR9-Y_NDWUEt|fizi7AWy*VEXK)wknXu29|BhMUme%QZ zTjsLK3Y?GYRIh~Wb`N>8nPpZDgVS5q#P*jrA7z?JSIoJ^+f{q)z~Pchb2ojzx<UHK z!;D!h%hNq4%saZc=vcY#zUN5`Y)%x-m;J)v<ZqSwes$t>zn5CKDmPd^Oqy^0=GNRz z-_729NNOqA*c<kKbKc$aS&P?hJ^w5rJbm%pt>>Q|_<7Q9>yKEzvQo2KmukNiGtR2X zdb`>3#?_k{r@!Ak&s|}@aJQ9o?p3?rmX7PM+0AZ_o!h%DYyRIe3Fh_leU0r;E}P7H zC35rmTc!4^W4HaQJo^9qz2D_Wdy^|4|2ALm#6R=q0iDp6C6|p4Z{C}px#02}fkTX! z_J00S&i7Pn_95ZvvB}|%GtTb&{{FAx$xXVupDa=cVVygZFZFczrK?j*N=v`)w0u8j z+veWaIgN9@=gj%Gnf0D!Zu;BTZ&n%jsx2?wcEEc1+nlpjyQ9uz+uyg$P0zl5GxU+% zr*q4eT={%1(>i+hxph+StF}FF{miwgRetvEireO{yMA8^-nQZA^3yLmw;cPNTar5I zxChJWsdH*7XOyS2UOn^4cjCGyv7QT~RiABraCfKS9i8|oFTL)Gvc1$QJU6jCutJpQ z9b4ds;z>0{U$1Vf*c?73@e@}<$+QI}ix<f=G&0Cm?9u+RZ9?sa8`tjZTYltI`<*iD z(3yI!dP|ucZbilUMQWKshopHXU77ykl}2twly{w$M|4ib(ib}npWGDMD6SrzB*GW; zLtWZY?T6@(hb3E7mGoturk($E|N5WfY2h&nk3|0UZ)7)I=eN|;NN>lD4f{Nq*T~+V z=9nn4ywhHFzK;UG%%QB%8;Q^7a$kQ{@tyy{5tYRk_P0zwDm7m|PH@wiBM<UK>bQ>l zd+9E+E6~8pA;>)8(32N;m#TH#R{7gvQ5OHu=K9(9lfMaGHkothEwg#k`N=bP->R|K zwpXz`G@bwY6nB5WvSjY}>o%2V8p*zoul{IY;k&3HU{Ay8BKM7V-*56X5OO}F$2KLt z=VkNptjEr(4=%)&yuLfN{jttHMt8Q!D>Ci7_xu)FQYi3rW5?%&)<1hW8l$S7@=nX^ zJ^JKHaN^^;B{qFbUzUDWnsh)&TD$1Doxe)0cUsme-_M`?`XWzH@6y{V?#><+$*9GD zy>I=*6Mdgn?b6kL%=)3|<-Vj9TMwD*%+_!H758TSp+gV1gkAZh$K7|h;@8i^JA~|~ zAAj>xaj!UMx&Y5sg{#w+`sY<|vbwkQa)tiyjNNHrm)_?XEw``x5oYJJ>;8<T&!W}s z!tZ@tvtv#s;~s0zB%aAvv@hy@c$XS>*!t&3<*j8KU)Ft=P1(U{ni3JKCsQ%K{*Q)k zY)z4s`s(Ss4}7*ia#6PHoPX5x*PP}%H`o37p)<q!uK&9e&k9#Pd2S$GG4Y6B;e*(_ z$KxBhKQH}#^6mlY>c0kD>WLFd|C*ef-lN~MZF&r+asQtE9hS$vtwTx=)gJwI@8id+ z%;JZu?(?#p<mf%L<M%7ScgI!<%RKR`>tR#<^Xua5y7w$HR<n;)JgYiz?ESo&xE=A0 z%kHvlQj{sN;P|%S;)mBtKSi!MO4ka$H|(Ae&+(I!L$0RT>J!(S3v-U?9P7K;?WAA4 zy-uv4^2$}$2jOZHB+it&<ZjHZeDfrQ`@pk#EW#!iqc&Z;5E{Y#P;|3)8k5p)zhx8q zFVDNf8_ks1(JRC3QTXrW-Oq*7b}zpCw`gA4uGD*sjiQgF)zt5~#@T0VD8BXbQL2AL z+Ry06vveZu)bFwAPyVQQdeVkfljh_w#>uD)uTRp>T(*09eaJ+;;(yWio>W~cz7zCi z*3-Tj+x9T2Pu70_EvjqYv$=|!S08gozZV<3@bL4wuV0qU?NhSx^q7}gel)P|!yJDh zqhSAeHswd-ULM&!T{S#_cLsOW^?A}~E*+XIy^ZJ8U6q`}`>XCTE<BfI@S%H^!_P`a zX{(RTN{`RH4d;#Jem}u4@&ijyl;1PUlXF|k=QmlO4p+Ntb?@RM$Afw$FH+5q+3qya zf4}3ou6)+6vwI%DH~k&M`rcF3d=2Z}Hn9@X&C*k?^$%ynv6yeJIhi@vwbGJ*QG$VI zOr!Yz4q@Gtv%5Zi+H}6Ne6kAHrER~vy8kS``t<G_Lu=1to>O?<pF3W0Yy<zD8B5|M z%pdA2z5k(nFrM?V@wbJ}t*XzXkL}#!I4fo54)0}_2d0^OJz6-ST-d6vX~WaVaG6JQ zUY>lxJZ}ce;=-1Hi~FbD`4f1_K(V-xrPsEQEA1nzY>MzU;m6@xR&qtU9};q7wYocP zcP8%OUB_I{<$R$x-{-q>!Kv<6abJN5u_unfH-#L_Z-~B@^qD{Z+WZ@jZYo)R<cqTB zN}jd*-qL#t7ISNt_84ft)C)QLPl=Cd{*pjJ{v!gJ@xF!&o&~9>-}60gx8-e3Q=oHu zx$$=qpX-nA=goR+<k|a8v^)QLvWm@X&qW$N?ed+DwqN%&malx<%yn0C&tw;t%X+Z_ zCmx5|3Q0fn^0VUlnNwtvVfDA@ka^m1Bfd=Sv+v*hmOR-Ueg3=iIi<su#<|P8CH<8) zZNF@l{o$PK=1sQmrEY#>ab9TsQIGp?!h^oACriH9+)wFWk{DMo-R#2Cgej_)ANjs7 z{k`k#v^!?IRPPCzeBm<m+wtmH-F|C^t^3PTH(X4uf1GQ7=0#r@d(Nk$jx&}9_Zk0q zd_{iIZPrV%YW(wTcHZ@6yw}LLt(^I`Qi_Y}_TG2Z6SiC|QF-)oh5VA+j}>Ge^foCn zuDIkkEzk6n@@<m^41r$taa{G>=CiFoo%{XA@Y|f7?di7jV=K%*z5B4H`pM768P8Zt zTEFx!yx9AF@nP+Y{%Y5KZM({^N@>4c+Sri${z;zVY)SQd7k_a$^Y#BqFY>*(Ha1;# zp=xx9?#Z)t$JeRU<em}Lo?5GQ;pMxqMUSc<9Z^ZCi1?7QON9BVhu`PeiRDk$cP8FT z=#~$)yHdhG>BrNScXe%<3l1@FI4G;iH|>sv#D>az&&#!y<sE7&+UIoUX1+WfP_gFh z4$-(8^`Kp6JwC@-EzIQV;IemM$TOR+*Ib&)ckkkwQjzNhzL#D9_Nnif@VTo*>)`u| z3y(hBJ>{h5{>>lO`Q0npb$-w04}O~-J^5ohkMEkr&l<tww>sPT6AQ0=GVuF&hxgh| z6UmbwL?ueJrK_8teqx!MJooAz=G4X0YU4Ac1=pJVpHne?<KeB7F9u)!dwNU%_HF8p z%Vf7rzkVju_rSthyFM$cw=>V@?l~N4Xnd&gTUJNcq_@F!=U2aarSjmy?f3WgybGOo zyP`e)&horJlhbb>S$pZ_n^P*=i;Yh1ZuE6}{bJtY<BuF(<X?z>$+9tJ!qn@H&)s)? z^Sb11e0=6g(f3h5WUYTnuim(4$;zuyjX%uot0s!`H%;+d1IqTtCq#Zp%@eS<dBC^c zWPiq84&#f~W*yfqS9h(PdS~XI*@gwD_cR;sj_MKCtrS1u`-U|;UCctRdEF5cDHp|^ zvjwgRZ<=t&_VVmhQ!#1H>w#5ApKpHhZqAItw%JwIZu)Od2DI`m=@mZP$CcD`NLo{p z<)iV^_kmG+XFMtMn|50EmP2qmbJPUuTc;;^ohYnwT+bPza&T&dMbt;W7LDeK+nzsQ z>-wiLW#^0knK@=E7j+Fk2xtbZS<JM#Z`PS#cD<h$U;fIT^`%LufaCR@)i&i1WZ5~_ z)M&kYCz-yP%iDYAP45=D9liWhqh4xwEiMiC!nJ3z;q5(>jx85`qAGhZ?|W5~33sAx zC;Pg9A3v?KEl+;j%jwf%>C5@H?APgk%qAZgC*S_L=Ad<%?97)(G?F71UF`gml)2*5 zcK)kV-2D$IiZsVPtz3KO<c4`0)^oT|J<qdCi%(+>i<O8**R+y(v5im4w&i~4GZ6RN zdvfd3#Z0k1)i!N4%Z}V_3v^Mx>A^C0&GcI;tTMOWwNJhw-Fkaj;>u~|H@Dc&F77Iy zaFaiH*Yv`6ql^uLxhI8oJ~F)ZQ()!RI}4k)n)9U1V7l;)^YQ07#@^xIXWiJdr9|g( z$c<U$HK%^bB@0H|8NX0^|Luo|Sn+hr?LB9-R1ZCMobo&Va)D3{!#e{f|Gjrw|CfAj zHhTK5XX3)}p85j|?e}t5Uwyu{=y}@zHMi_CrFZ9O#Uy8~m9~CV`{MJ>t0~e;ukAT~ z=biB)-3H@l%Qv(7`cIt0QN|=LE$p&xdG*$e>0EENADuTTIWqg+!&N7?fohpp$^A@E zd&7b<|Hdr5(pN4#P4HIm9M&HU%Zyh?$L*Vcmeog(cjd2ugS#$sDTz)ie*EiHu)p67 zH@`j3$sc|mnEdAVqPC=SE9(m0-fcOcZY2F!W(HgGk1N7F@6}4vkJ=tNznDYlU&#lP zyHX$hLK^CR@4fVSXGJ+f@tu|#*N<3lJJ{ct|3*aWcEvN}mFo`*Uk^FId#kv9+>BEa zvAlkdUifu)7rxGJjyoV1FX#4UPe}nU*W&~uUuM>+4sq8%B|EX+jftLY*8JP_p~4Ba zOpCaGmzCRDoIFowKDFGisrbCgJO8B4pxErndk%&6$&qJwZTx&UeewJ$hCS&K=ffYX zE&jUyed+>vR%glI0?StDPISHJyFqo=-FLx3oiUSABG!M}bI9vtOKnV+*3H))^Dor$ zr=(qO*)oOCXzG`xnnm%AQ!Bpo3C{g?cK42L{=SdeKP{G=qjT^5-G-@s`<0H`_k67I zca73csSRqno$*6+v(Z<+$Ft+_<R=``v+><)T`29hZt3O{f%`3)ha#lR<D?c{%35?W zGP3VnnSXqd^!e%8kvsq2`_$RHW0v;UxJju}8~;9;>r=C0XV0CrH#DcWF8%EJw9>#s z*5R+tnkV|<{r!u0wGIEw72odE_*=>D#ED7ILe!fNc~m7am&679h<yEYb4X<r@9n<C z4`1}pu6$y5U~kC{zVLE3?TPnZeF)r=n5x*Z?sck5CXXiD16{XW=i5JQI<{;2%8xVl zH%|3yd_ViqJ@K8pxi}@hEi>z?X4XEw*|GbDMf;|;7W}DBqP22ieinCXjrI3;aG(3; z`$6da(l0sZ(>DYuT{LyC`ma>?C}*j|`_(6X5^j9Az5Q8o&6#B-O}5=rpU-(4ow)R| z+#ZQjcQZM!YgcIU{K?XL_)fc`bE=+q#bvIzNAI{)zVF<0#A~|hon1}q<@i&J;tzVS zDTzGvR{O`QPepkvOCk@w4*PI5W!Z18xTK}0h2pk1t=G|(4gZkyXzApaJC2Ik#2-AH zA71iz-ose|=e?HeRy^j4d+^Rn<-2V~<5a)sg5O;Gs%)m5tYy{Ta4C~JZgbOmE&b<n zwC8SnuvPm<mXUB|=H<3Du+;9R^?KUX+n!(DENi7<VWum%jlcWIQtPyfb&hedoi?jZ zoG5ml8?K;reA6<w<38Nl=ee{NK0T~dc=FUFrJb|(<eWZLoSYM7r!72vjZV*tt0^hc zVQvpY4R%Po96ay&>7?lWn@s6h7f+tFW_DH%cYOPsaRSGM%SU$~642NbEOxr(s7iU* zp<Rx3&u3;&a47q2em>ij(`B(wko@_q#%_)73a!3<H)Qta9@cJ6=~g^Htz)mnO`*jF z6Aszm<S;t8{s8~-#kzu(F9kN$O#8p@nZ4QWM@;%c5B`6e5c91}GyZb#uj`o&UsLMU zx|$}d{hOlTu}~pFB5cE<8Ej#@3^w*nEqSl0{NtR4OskPfgM3^ptL84jr=tCb{2OoB z|LtJ1<Z`PxUC8{=A?cQ_=xs%TD*lVE`(EwbxjUpUvpksNrCqlAy!Qt~ZN4}5Jm1%K z@@`jN;?vM?dcMmZ|IKEZzLDX}hLE_{zzKI#Cnu=1&4}gE*uN`cqY<aXHu1Yv<xdk| zAMr}KkZ`HsY)|A*&W(XQC-}dmD_-FL71!dRyZ6(yzrXr-FYfN0dikRT*M;y)-5z$@ z84FZbrmQ!ebXIli64NEs8-w@?PCxIm0C(oJoorr;`ld)$h2FKkHHYb`)0=%iR-_&` zKeG$cmAfYOWZ#=Bn~cC+xtWXkMcOR*KYVts(ib|{upnk<-4>^nM~`jnoBGn^-f6ou zF_(jr;xZ?D{QY>?{OiKYOl%f~hpjSqZJLyRCDp$>>8YpCd{xg(>&T?1r`NPi{q)#9 z>yz_R)-zKdo9tn%O^=AJl!=&G|3~9&?TIIKk0SJ^PI&Dsb9Z6F-zB9d<`qo#dVReA zd^_tBRu9$4LcggcvT4lvlg!V`L_~i77@lyn_A=9wq6fWu>m*ty8=TlxH|xpj^Wud% zhh=9~URZaHpXHg%`U5+zbq2J4>+8Sn9X&6s>S@A+o(nF0(JsazP0b;v`Y$H6#oJf? z7N7Bf>A%Ub<Xp)+Yt-k5zkj=6ru6!|r#=W&Gastn;bF&Gy4`I*M_2GFX0H?e4muB| zL#~ErNx!r^uzqsRCh^v|XL*1ACfRo^SWxQ0m*%x-`wg|)wNLWS9oTld!fDzc(<A3o z8Fqi@s#I@2D-n3(3Ew^;NruJSZd*Nic~3uEeX9HN-%oqa9yz^+g{d#+jG~O_t9O@E zmDJ0_tQK{Oc0SHcjX3a`!R^y6bICehokgm`4%tQK>03BnO%%@Oco#U!db<5qE49^} z*4G^NcxrVvuU6<Y+M4t<&imk%H7128!l%uD8=>j=CU!2@tEq|)HEn9jlwNc#{&OV0 zxw6u#h;jb6a?7A)53??uo}|5k!$)>+wtjBu`}&6`WtTQADH7V2m@cf{7?QsA$4}SL zC4csC-JJ5nabmym;g?r82x(3|I!WoTj=BEbrI!w!@^?(WGQlmZ=uP~B35z>+ef)TG zS@p(AOAme8s%F<c)yJ{;a;VPylq^Q)M*@47IqeZRvMg@plN<akkGJeOS<C7kX;prh z;aunZ48}Q27wOxZ-;K2NT%?e@`}WQg_P@j;URoSbKWWi9>EYd<67uhvi`7<&AM<70 zKVj;hi4WGde3bm{u_$hevEk#GdkVgreD0`T4q<&Pa!;eP-6^i<<qyt7_flgEGmdYl zGpI9NB4+2DIb*^{na9>=dK#5G=b!3N3E_}D%sNw|Vndq#Ld~^yJJ&zB`M~PKa)Y?L zH%=U}XL`IRqC)Vf7fa^FkZmp(WXq0PwY~na<)4fA)3B3sryl4Dl(@X-yWUr}gD>A? z_f>2=EdD90+_q5Qhs?^jN&H6yR>u1-&Nz7|;%=m+?C%Q~if6o3JNV(8W<f=7T&9$k zv1dLjQ|DvDNFmomn?D|FUafq-Ib!CmeX9iKpY-x{Gx&PRSD4wOnsd@_BNw^dJq!Jw zckpRl6hAnxNsjND&ph7^&+}FIPwcfZc+l&3`{SYW$AX)LO5zXlhV5d$vMv27kKUm_ zzn1(+S1AumTPV+Sr?773k9qHB-<f3Mlf$0L6lb<Ca+0-nq5j_WkqJMKxa~ROwPfS0 z8j-ajCHwEo9+-T~^_bh7+Kb!&8Z2HNAXji!oIP=xpQXg1{^0tKeFh%omUGvAy7Gui zWP^~&{=L#Sb}Pnf&A-vHpWRZ%*Ih|%#m~2e6Zk%4otm&=O6Ggt?*&gUR!9kO?FxE4 z{S4=_qm3+^E`d8~Gdqu`%#V$*{Pa#^+tTOkNwdT+h+dl5xs2%u1IKz7`<XH4-=yww zvE2Pj!a~;U?d099Ios|;YBEpz{i48da%We?TP{6L-M2-#p1N<QzIm6-D;DZKM>aNP zhg?D=*X5_3o+k>bA9hxpblW=d&ht}B+9#vMm0gx76i;1m`mtH1&T`@D(}_|6D{>#G z&39d3b0|rUo!Km1uQrN9oByK!sV)cK^yXh~a#g|xhq}e@cTRbC|I(b9ei>!Viw^M% zT${i4=;>7bS<|PQJeECbYIEgC;QA*g4WH~$ntSSp^ojeABH}+iSr;A^5vks5`7u50 zT-wqnXHNdCwkcWr@${vKZeIh<`3mJeYtBnJ#5GS%dE$kpmc(V7HkwC-=|89pFF5OU zAuDU=&sH<@i{^*?%EQv$%zmHp`RbAXMsJnf4yv5klK=nH?TTz6gPi&2zx4T4Kl>aN z_Nc1+TtsEZFSbW*&vf@c|5_y~Z1Co7d4Ak?t@GKDo$FYa=e?Pt$9iPXCCwjP%f!_C zCQW6YEpT1%xW^I$=~wv|ZogqsoHb$dbqBjcp|O+V4*k67^EUG4A@#c##bbH@s`|g3 zF6%P$*TwEV6#`41Xe9iM61HzUvq-<VxnNPeW5v>$?%n}2I`3_C+%oUpWxuyeFQq)~ z35-iq<@pf$bn%S#sf~9k;x~k4Fzz+#@K)I9C^E@g;CL!~-=x*~Rh$1TD^`AbDq#JO zJDysW7ye4#Qhk$fZ$qJruiXT-xGh_?1RT2FEK?C_xjf~pd*-i2!QH~gW3(=^%(0Sb z30@F(qkghh*X}tFj5Pun@9kV``d#n6)RlQt6_O-*PTR7pCw!4ybjJ04d@{F6XI^Jx z`-b^RvZhN*LuOw4o*86e6<fbxn!XL=;SJyRo+=IxD|&ME)b~k0<`uH7d+_#(q)X=o zX7eu(gR4_LG_Ub-r8Q19y0SF<lF8P2`@S6Bdo*{G!da(?`Hvd2P5NqBw{PNXUd!FQ z$|c$6Z|Z->TR%Bg9<|(Y(o2$8BIHX!$j@sE>khFW_F19Kp}c;{@AqCy#hyQ4)8=%3 zd}Ve_^gbPd{Re_&Pq<H3{vF<V+o0>k73t0e!auttx*8I1|1A)zUR-c{%NLW)Mzg=A z8wYI^GWwn9H9h2AfD`Y!MV1jvlWp9R<;~8jPkrI=j<;Ddx?oHAp#;0<XD)5te{F?h z@bZ+8LCbzdoOIvt-tfoHr_s$8n~M6+XB(E!oOt@oPA{bsYCJq2v!(o+_z$SF<<C-_ z`q2LFo%KE|ZIVO2Oificc;o;6P~6wb%^|yP>a70ebxU7w^)_SWv&+M+7VUm<_;%=X zrKLY3X6}rYK5A=`ex^T<TWXn-rQn+<dS+@89~;-1E#9iJA%1uDtaG`aHwuMEn{9}+ zGwnRBV5rf%#mT$-sn;^g2+KsyMRU(ZHt;8CZTZFZO!|1tpC?+ASMi7bVHVYzY`VDk zan|`wD&=3a)x#Fqey@4pnO7J1*epH9e#f^wrv&N9y25`xI~fitGzGPWuW`BH#&zzI zKfC|kuR{5gSt}A3hF96yYx5`6%@NR_9dR=3tD!);{k0p%oaTGh@*dmb|8-4F^~Xo8 zKQ2nw%<AivF3Qfn<W_h;iN7glLfhj|t2>!K3SnDj=tUk<yt=bos9RxENTz4>nc$51 zZhKe%y{=`Jm3jQ9p;w!Mr2C=yeaEtHI-XtmKD9Bzzxkobr%NyLGS5}4S(#T^|LEkK z_l~oU)cgOEN?v%qiKo#n`M8(T&q)jOGi@WJ_jxgG`@8&oYoIj467>l=e|ukC{eQkJ z<EF#1h5JQ!vS%L-_blCZMtxq+Ut5ny2TgnvuUB7xGBa4=@`d}NMf~?yxqHML_{C1S z^KD<5>n+vjdgYFw2miw_ov-8jIOowj3Fp{vQYTHmY@d5adF%Uwm!{9ExbANgc|D&m zn9n-sxm|wD{_K;sN!H@?8glci;&%(ZoxF9wp;3_pKmUbz)t+WI4t39EEBC*BBDcDg ze@a-!-+4YtH`S{pB!4eA;M@HAS#8wfeQE07BXnyPY;pQKm(4^aw$xPV@`d}XMf|sC zx%(X0#{bcuNBrjRTT=`DxBc7aZ}IN(sqG~toA{R`e!VyC+Z|Dl(z*(N8_RFsi_d&0 z`V}N>{-;y@_`f>7oH)PIa-n$@MQ`6ffAM<hmRo;q-8(9Frr0M%%bC`$<gER3B)Hf1 zt7YHcHCvp1ML7ptd2BGRF73*WLp|p{|Ab6R9Jt*w>)Q3K2hK~a&Tmwo7xmS=)&KvD zNWJpiZ5xmG?|0IcSE%LwY*{+9RI&VRe%#Y=#aiRPwUdrWbnFXPc`R`B-j5%zx0Eh? z86C0zcxDB2^t!~*)Z!QK|2$rQ@m%Y2(NF2C<nK2=ukToFEwjk}<=!&?9liOlkH_!+ zTf96!u|`<z)Jm!4?Kcl}zgQG@e(C<#cK>e4%rLIyeq4>xn$5Z`UZ|5?Fr)HAQHZ_3 zjN&~?mv{J;G?u*oQBk|ICr9`D{bolasrkz|qx^h5{MtY2+P9U?+4pbN+Bk<p-LjV@ zY7JHA)xXcaenRu+?`o4zkHYF++_~?w{KDHwVtpk67vxuo#w%X@aqnIG$Fj1$`?lVb zJWzk^u=kgp?l(U9r3<je@%(QKm)-S!=E3_Mde?Sx?mZ_FTUTKEddZI1mnHuUebpS< z_q}PcyVtaf%h1ASxv=^K^V4~gue8To1l0Yw`+v?p>mNV<efjj@#hd!=pN*{d-(HXq zt^fb+_xiVg>aP6Ud;jO(^K<X-uitr7mfw)y&vo0svOV%KIkh+MJ1U8;&xum}9mQ=C z;JfV7eYJ|qTFXRVy>~rsJ?-)yD+BGLGh#1oar(RW#ey?e|HU<)IHO(iZ!Q~8=Y+XR zO{*tAioA5bRjrXR(&4&-{dAWHYn84%5D;(3=;m$B_X-fbxvm4=K@?cEMRk*4N>hBJ zyq|ltLFW?Z6Q3gg{hsyz#+xqgmOTgl^FCH#oh0#N)w0wXy<PdICa^_ZSNPT_#=756 zxZbO=a)CjDbl9a<OMgw%Z{_Fb`YhegS*)?xz*_L0?t{Sh?cw2$U5l-r=Rl_cSvX`_ zm0Ogfo3=Q8{#pD-zkQ3-w~)@<>(A_Vd~;6|clH0`m+K*8+af&a^v_9)@2*X%-`zM( zNV0I2nz`bN7iw!lVwdL&bnri14jK-U^-It<@NJgg#Chg_Tub@H`D$B2=7qhe>wJ~J z^@vrB$-=L*e_5zpIset)(I9SlL4diZ2V<0@jKpp;;eRGiBOh3GxCzO-t0b?yUw*Xk z!Cj9i5veJOQK@!|9>iYsRlV~*zWU`8?SwaL66&p!rU}iIx)bzf;?)`ZPiM0JzAYFr z^@Kyc_=eDMyQ_?A>^@$x*mw6re5a2t)0<U&AFM=fsLzu+UOsz6)Q$VA^Nh_ebG_Xk zT5qlNP*}3i%j1XC3S0L4cu|f&K}s$)k8YdIH~Y4)tanb(<C=GD*ZotD>|~DluT}b& z>s7Y-&v`$cnDo+3JI==+nb*U>uWept(bn?({mIpt48b;U&ILzZ`km;*_O*9`^_x#- zbIzIsHW}1@+N{2hF@E9CIq%9gH9oQJ^JcgHC4O*v&mInC!HJn){q70&E=is}{kZuq z!;I-ucct!Z*y8j&*{y!J+{`nV?|a|AI%V3n{ha1MLw<Vr9)H5jdUv0~lN6oDvzh&$ zr8EY_@z@lmXMU`DKUe4NGfVHvpS3EC|Mcf<yLFiHb@GD3QX8Exvw2~gEUsTS5MBQ4 z$*U|grNy2$llQItpeR30o3(!FO)qo4>Z9&u%g#MD_`?|TOvHaf&9~`h)4ZRW@N9nj zLhrY`ir?jeCyle#Zq8}gwa4(R0awGyfYS#iO{o0gBARvDDEe@SzU;Q6_cBwoE=9Zc zb(#67issEfdV1n+Et8ERUbpTkCjJqB-jFD8x_Rr>S$sOuf25Z6U4EeEvutM2p-t<! zI#<m5vg(NcQ+KDQXRoi}os;i8FY)VP9f>6$euzC*bgdBo;I}CMr+=tc?#nozwaICI zHtDa-4|vagcQ{0Har>gn5kIpHuAbQai)SBy@KonhmKztQE3bR}PAl$Ys|Vwn-qVxj ztYun$cjm92!Y6Zd<|X9L{KcaZ;wM&|AHB?O@z*JnSr4b`EwgieB#{~DQ+sT#;U%VL zSJDfn7Zq&}vQ=JTv7FW8m9dYfrLIHJ{EZH$PBw8|iu12!yQ87T{l@LCS!vyrdii`0 zL7nFI8TTKy=+sv5mzjPKe^>m<c*?%wO$@Jg8-JBte{bF$-T&tod^q<q&S!4#9zX7> zwRT%|qr+EkOfJ2@Y|<3jW9IuSR_@+?DQ;F(`7*(&siqzIM|dwxwCfCiSTKuC==joG z%-++Z<o<Xrd$<36<jT;F_rk~TRX@(}+W5{bYx2si+x{7S{M@y-Ual{10jJpG$irqz z+>dy^37E?~{iS*9Z?y4O!@Z)@!xN(U{%_OUZ?l}~^NgvNX4fCd+q);0bsO8hPb@!v zzikQAwG+F+A)wS+AZl|$Pxh4g?nf$~?pJ~@^W3}JHaYvEc1hLu#2rs(+?m;RY0>T1 zYO4=~+&6EXsG?^cmAz1>YGp&#hL0(G{bMFs2ZwW<S-!AP>U_G}yvPZ5A)d|dn`gW_ zbk1toJ#NEv<r7AhC&g|n3QS}zRGi;Yv)$r{^7ReL5#`AlcQR*vNxxUeI<@QXNu|%) z5+Clhth=z_b(GuV_@C?7y2bq7=5w_A;zI3k)8Na8!nMy|-R5I^Tw~4UjguEV^EunI zK5X97+!?QY8*Nu`&t-q<Yr*j?VQpi)_{rr8?;<mq3xoEx{Bb(rpHSG8e_<ulLX~iX zo$||L)NiKfb0sEUX4)kfs%0<Xep2?Kp%U*y!-?z}XM#O-ZB{-%xLeis>W=m6Oa3gq zDRXw}opyVktB<GcxOgOF>5s<&@ug=nW=0v7u3x$#Y{swN2A_zTUgeCH(z<@lB_e5( zA063~&x;jlfB5ON;O$eUb!>L`xwh;(a<XZye_O!zJ@PBovx({It-18+p|<vxle%}s znqu|j&zxGFm&~iXBW8k2Z((_sh4=QkyD|-0*p{C?P!n<}aN<&*4aR0_3X3#Ej<%YA zTCGyD*P^Dpq^|JW_0yC0esAA<=yck-zR5Z+OQy`5yG8Hd+|6B&n9Y7%6e|4o<?zpo zN7+x_eyj32<+`KD*IAaY+YNeTd)nU3N$uKUc{uXHHRn4C@4w!DUv9ge+jEW^quk+! zbB(tjUx>)wet~TU>tx-w=^?k%78!qR<3I0~y<0jUTguXUp4&v`fOPJ2N=L7LEN8qX z8#`A;*eLpVs`;zPIZvGrruA-DP5+s8f$PPA-V-vWb8^eOK7{ZKNZne>FOc?RroGw$ zopa|NWXh)RzZuN(c<J2DZ}ZY^<Iil`n{zVqwdh*?rgyQjvM&zbxHK)%Rd~ZXmh!}X zbJ{nj`tQ(hioLnd^qSth%}-B9#dlrbuut;cxy`$C%XdHM-eB{OO(JJ!M8cjF@5k(2 ztBb1mA3wUhN#)tMz1NQIS)RJ{boSw9g~!at<t00c+g`ruzOlT*f-9OKHCE`vLK}Yj z!`qZo?tf$t-T6r{Z=1`!Ic1hb{d;BG&h~Fw*rFP~s3Io1@9Vb)^$kDQ3PpP-Ntl<u zJ&>=Tu&q-ygXNsf(zFBLQf9ICKe3!1EtsR5X(#bt>07~h7VCzU$5_{W;d<)2L2cLW zz?_#(&8DW_;hzs?K78W&$Yo}`e^#%?*DK6RWAv9zTT+{EkX$n3{wcxwX)cVpXFv4I zUyV5K8$II`?~|85HMykUZI{cqGyPXf)FeOU<+97mqAh<H=Eq+MkBGjbS>HM(TJOgm zV`=Mh&YIt=d!pO^J-A~lcP8Z5p-!H5wYt03)|OV4+oNmSf7jbfEI-)5#`A{vztP*r zqANKIo~AATUB$lr+KZ{P^Exx%+^tAd>Gyc?HTv(a3+h|G?B`d@v^eo@>yPQuf2M>q zwtM!ncT}$XJy*p}H}py3q-g2N8@&-B&kqZ$F1M7Zcx)p1uwYJ_(hnQIOD9id{O*lj zVKe>Y$+G9on?#&XTAiI)xnjmnCiRwH_NGcbY4yA3m{T?T=EOV_c0A3vpvm*iiig)X z7hd}M$A4N<L6NBc?;}0T`)$IfPG0xCc9V$u%$Qfg`;Rg2vzb13vflIRO;d_1>vKi> zKUtW{y?DCQ$B%DP$KeS(c1K_Odew85i_(P+4P7T{v;I#BdYtGnZ}kDsTk@V?Yo9IO zG^P20RuA*%d$aDm_geKm=a{fZaY50#>R0Wr*5%JoGu*lQenn=-Cr|0n2L}I==lf1~ z{x~PQ#J;&UY7%SPv1z9}C*L<a^xWq26XP|@bt4mOa(3Ra{CPI1Qg6=W`#KHJm7br> zm)=^;7k$AvWVxwsklOy-nsctFo^0nmmC5*E%hRGO>ibhw&bd9G0SX$XN6oh*Tgu`! z7P%g{F?XZA$%mAARkM=k=@bdsZgA4K;!t|e$D+IOm}%1W$`a{shVonrX-k;jDiu#R zXKcUsE$#WL=PFiTE(mU#+rDZ_@TqN+bf&!YHvKSLH{4deFv(-t<g~ClLGd}ct&x@a zGxvNtlrf7<{CehuSoMjuhyH*jiINt5S}UX9=zRY>$gC7IS)K>Sb^PWPZ@c>J$r|77 z8ikuUbe?Rfc)fKui`N#f?(Z_$<(-rDy2~%$icNZVX_@7-lS1mTV)?Ic?bXtmlG(R) z_Yu$OM{n;dTQ8>lULU0J?ybFEd*&p+)hoP|`f*+K?(m+;x!3cA_n*7S8nFH@>zm!7 zQ9GY+S|w`na?9JinBClGVjr0t?+Sjf<nlI<F<jiKyY$uPZo6xm{XJ{rr+uH7T;8_3 z>}{NCoRWI_YR9j0N^X^1Uw3!)v6J`S#DvCgO>cP`H0$>3_mW{dr#yT1#CTef=H26m zUx{3KzQ($!z;o?q<Lg>GKDnQ*z5e0oBB`GmoEBf6&$a)%(OfyaaQhA;Lt!o7OAhYW z%s(HNKKoz^H~(vkomB$v#XWhIQ+HXH$=%tUKT$)ZX{q$(%2~-J+J1aW5w1;NUX&a= z9&*a^o|8PsUtX^poPB8`tFj|5Dqk^EeW|)3Jmj*B`D_vO%?%3@zO7q#q32@7LCyWH zMb*5E#U-RZ2~2CQ;kZ1v#qIouPsWej7hKexd9058+Rp+`nY9hh8d7^DcjnB=VbuNa z`ey0@!5+oFaQS7EmppF2$xy1)*Qg?1JmcPR&mRRBIJ><+pP&4GvV?xN)jVCV9c`Zv zZGYsmPJ2(O%#wQ&;e|(C`P#BR{5fplVf*Ku=CaB+lU@CkBD~DLvH7Y<Y-}i+`p`<t z=kA1CJNa4*#6F}3_&&;X;GcH+&*vqNR9w%pmagyQh^n%j-jI9tZK=hMYm=tOs$V|g z?(QXY>cIb9jQ5`TeSfa9J^q$_w#L(Mp6|J)$~{xnHTYt>YVVp4dilHT)s@?CNV7J` zNoF@cyth|k>BL9;X`YowF8|H_@@s0gV9KleGlicAdwq{D+|;0d)J*Val9_$a=1y^b zff=3qV|p#rzCTZq5>OUMTs!TYc#N5W`0;D0XVY!^-f=8DA>I2?DZ{?usK$xuA5^`I z?=a{VPLiK*`ss7`5rv}X=^ci0)84*2Y-?FL_lT#JazJ38Wx|tl6Lr7reNw|2CD$9X z^!Mw@_5Qz(%v9qFonbf0w>8DwarbqX*@hCE`xiYvbt3AE>aoVlo8Mjzp870e_vdGG ze3irhpRDbz4EwQbPjStq-7}t<wEIl6uzWAK{K%#J!v5e#Pn5o%6e<soov%}PiFMUS z@0sp(4$F3ga@~5it8D$sqvjtH=1*V0D`)*d#~ZIpKCnCqF8IzYyX()krT<%)5`1S0 zP2k|Ud9PHUH^Q-hQC#>RmdCa~e4;K~yA`$mx->)cWQ_>p&z%=z)u%rG^FR8qS7GJ7 zlA^nz8={vRh27`xab4o{J@8wKz`MMB@df9%y?(I!pJ1ZtwQK*J=cr6h2>)X`v&-Uv z#HX8E_+Q;ju}ZwMrjX?`?=GhW&ask_y!_#(Bob};)ZTZRESM}7m-Id%OV~cSn*Dmm z)8&fKCb;xX3QL*h#2~E@oS^yNaL$1k={!Z#*!Y+|-Cut>3ci0+@;Bv!rpNBYr1fw3 zYt=lbo~pXL)igwQkKGx8l1FX#Q#gLPd@iliyA(X<%|%aHrBkcUDR63h<G;ijR=>mI zj;MTxV#SkVJqaZjG<I^=Wa$6x6J9VaC9>mQe}}bK;l&kPD?-|tH{IK}#M#NlzF|>~ z-I`O|7W{Uovo$ec)716J;0PCO{H}B1hHz|Q;-zz3S9}*;VwuEVe%HzU5X04`AM2zh z=?Y6P-=8wuM)0tVx2;F+(|zv@6f@q4UE}?|{??X%COvAhFY3?BADqLomoq<af-Gl< z#vUOl^{w1%{vMXE`+7-2>RY@01Iq_2vtK;5UG%K3^bqIS?&fIIPdoN<Y;8&^tCqc> z`Pz5Jfkg==JEi7qk5il7f2v}ZPkWB|qJuiA%e4EFwrZp*9Dm_i^6Ru+_>)_^9nW2K z4n3-?sM@=VFKK~>@YU!9PMc45jpyo1S$F?kXK_F(;a=3Y;7EhBcMPfz>&#}04NzTI zq5o0ZR$zU6?f%c(dtaYSnRD=sVar78x8(~(Zx<!xd_Hkw*`1qaY4=rF(^{%6?PoaX zr(|bWUt~GTyIW&d^RbTo@Ale@m8_j{W5UHZQeOPrc3ZAh1;~j9uYI^-#@&{TnB9B% zI60?Vd7V8Hvea_f)pJvIc2+;{UG$u@SW#GwZ(n!8pLTnL;0?@IJHq-*_DjZ;Pu%J$ z#d2F&zvpZB9_ekoQL{Okbo3GyC=^^To%Em~BKo&xOI81kD-23zk3RAi{}NdobYF@4 z4?~Ijqg^GdIWCDXzPwOolBnl-?O@21awbNjziyMiFNs(s;pZ6l`52@4=5=dqO$#NC zY;f+{wvcJA=ce4cdybWF0~lrH(q_kI-8}x$z;*e0#b(>XIeS0Xe)s(@suvW{DlPNV zq}ca_tztmq@dvCurk4H1cNi+a*4y|tPCa0!!Zyp`vCm<fo>^}B5~{WOuU6gZsVEe= z{Qd!l=i#FE)zWv(Uw3^!CerYncmG~)b$kEcHdnXI2)VcC*X7&cchd5n-hQWj_teDi z<r$9kR#M`Rn&VU>ET8Pjn{&(b?Ygz4F6UcJA00JwbD5!ip+b|7XIt}xdW~XUudXju z7jvKOQ8k~>^>s#H;nRD(;p;D!sBHQ$pV6}a0t^3Ud!F~4i{_+V7MOUzJi>OvB=^<? zkqRTfriVR7XKlVbec7DyooBh^`R~VqdNQRBGIj<teb}*hx8z272N#Z%$LnVIG+XTE zTdx-TYX^%-V&;-5a`P=aj~`oOo9JehA*C*SO@5K}MRvA&rQAl@?}zG7IS6PT&r3Y= zu_u%*f$yr-b@K$vy-9O5&wTl_E%lXa)~box-B0$$9b4#Z<h*a+>J!tYysuQ~Jyw~K zQ0^)4eaZjwh;q}Xf^OUWn;G?X7cFzxf9S?{hm)@kDHV3#46;)D<j_{o+5EL}Wq|&- zW12l-N2HErPMfztWFG4h)>PXUR~cMYy-f0K0(d^wd2_|u`dR2Oc-X(a-r%~#x@p(6 zj1_11$%&{GN*$N0lCx@kW}o9T|40Du;yset*}tzJd=OmN8>af|s<f$Ql6B3@rkF!9 zi5q_T>aIR}aZOgFBa>QW^Unvy*QC?-pWkus;fdwv>%7+`%yU-Pjd>d^ClYD*`Odw2 zWuKQWp1s6*){O1t`|i(MwR3B=ZR6CIYpzuyFD89*+Y{%ayl--E#qJeud*)v4*xu^) zra;-l&@`-n(yO)e7tiY6tmm&hJ>swTmYGUv{Wq93Zzoxu;a{56_{*ufPiM!$r+&T1 z4a~ONXndIW{_u7Q9<G)jS|0*(j4s7HNT(UPw%Yayd<^l<k}|Lo$T)jYCHPjKR6|j( z*%aj%PQA+x+x;YM^?57TwWRO(l()b&;MCITeCra6)MlF5D^3+Nk2eXwqjrn?^CWhE zmd|HZO)u;G*%ZBw*UXOV$-(rm&F@V3{u_qA-|QV6_$}jQ=+$>gGrA()z2)JG&N<f* z<=eD6(?xDh(Y=XPOP-etMf@;J3}^b&@=RrW;ZbAXKdb+p4nD1SR=Kd}vgDtYoGUMF zK6KBcc5h-uO75pO@7ou=^e>#M@a@T@x~NT+F?lod?N7bU{kYQheWUruUkY=7Y&j6O zAh6EtoMu2d%X~+}wr@ryB@4MT<gfELykB6qcoE|x=Czaaf~RNf*xB;X@ZF_Cmw(dX zmNB9QkB;2EEuns8wnNbuEtyBLa%Xx^FMs7e<LdFOj!HY72F<bzmA9cASYJMQ^zyl& zO~-OBrSFrhW@g2xe+;tVTCpq2;Pcg$KlWWI{Jlv~=gSS@!}EW~J$-qg=0N`a>c>gv zW$Wfmn9REGT(wI5wEDC!$JT7))%rSF|IODkk%uN7kaXL$%5s0n(lhH<9!uqFZ$0C& z@`&S}buYhvzmyo3!fyZnYB!&g(47f&^EZDAsSJ3K`LI_c?XLv;<Tt5x3yxpZQ4IHe zd_Lk%cW&kT+I!C{nWk^OR4}#vsbt^9;N2!wE30}V_1GToXIYT^Fn6&}rGsf|<IS}X zzuMjU-1YwAM01DGkSbQsJV{^4xbJ&6Crr7+vZ3+7&xM7%+SEEv|Nr;?zaFp26^4Wv zhTJo^R^PN-r)ht0tHj<dTwmWutl6|kOFuh~UGsXHLht7Q_gAmi9x~WGeM9Ih?=>l_ zg8g)Dvr-=}nrWEaddyki+#1)<T`IlProNbVJ2+f)?!hqqcSWhEr9T9Jm(#C_)ZOSa zqr3a8tlvt9TgnY@E_KyCUDzD>z`JtNE3egDX{xHnSIqI8pq;jRZ$iiZQngL@Do&^` z3G%UA%N|s!v+(o1%Q6oXbgu<;d@XtH^eJ}JvVTs0&WLF__lHaEy!1eyD_{TTN7eU6 zdgXDA^ZeL3ckW-_Z_al~!Tyxh-_&|%$rp_*u_d~)1wR%TFPuB4>`|4x?$sJIc~vHJ z#_*qh$L{QR*!iPkamMP2WnNeApA7QtGSU8Kw1j(ST*|XERXcaio<FbP$@H~0BGLCj zvuGRDZ=@-N+CI&h;`ew4AM+#Ym)uRqWr|Mk*|zPnsQfRB)f++&+I;GmsrrfIsn<u{ z;^$Ilf<7%046WLpu=v^TqDNm2|2(>Tv-6K{pGw~U`E#8=o!$OV-s8(#__JeGZuqty zsxPy;b=o1{q*$)gPwC%0)sHu3$Nb;$&pvid`^L;S8f(ARUq33|_~++8>jf{^n~(6D z<(B?T-5=8X@vK9M(jCn*`<EX|?;6|;tLw0Tax{18g+uaJ>=uWZ-th0;bU*Gd@7~ik ztJKZj)L%Ehd0?M%zgd$}Hh1+5i<uK%^Q9!Ns42Yp@<5DHgX2f$%Ho*3Q^KN8;wFAw z75Rzhw8EUyg|#ycB-1zCxWv5FNqfo8_p>@*l+{mZp4H;c+fj4j(owNy#iA&UZMpv+ z-@N(o<k6@4?di|m<^6j6c<k7jt4~|4Ul64sdVP_xfPVAAQl+}@k1rlQdGGh)(~G}X zzvmO(Iem7`wnfY27bk{#+s;igpPTsqoYJ3T?$eg)UO%X;FC)tNXH$O7X~lZAdmq~G zPqkRIv$tLJXQ9ko&Ww%0N2fSndgaMjmbc8Nt%BJzx9jSemYE5Ua)oS{L|#_iHP61) zFt6_?hx@sgkq5rIJnop4d6>z-uTId&t4;DWhn9Ete&JPoKb)qpRX$38w|LJi?$q6u z?5ji%OsTk3SM{Q7cXnIJ-d~sBt=_)ddj0PF|2lnsb-xsj@Z0}kKO>uAtXC>Kvww=j zPZLjN!$142t}H&fbW__#d4_d!94`wjS+~<QTfaXn^*|VVdC}P=7I(KR>cy9P{aE*5 z&8f-H{eQig_iU@h1Y2+QOSi75FW|8Jy0E2CQdQaPR>Q@z=~pAaXE3_oJ+Iu{vuW+) z#)5}S0{V)#uF89A#!=Z7W0EjSJJCp?UP7yEn_=*}siNJ>>@wHMJx!duyY=GMJ)3&} zS%?0-SGjff=h*N4>v?~={by^@*YNxy|8K*$UsqpWpBw&RzwG17=Jz|x-|HXAx2_kq ze;fNo_I+23^P$6)_hvLXoZP&?<5pB)A@8M`Cj5N*-})wKNbT_W{_*e>J>@$S|3(}N zZv8*yT-nu$n>TM(U4QLF^132lu5DQwb?$wUsaNZcT7AryPby?;E@hEbD!Z4%x#HJq zUAtX-D|wl-eYE((x}I?8roVVSEtY-X*Cj&NEh~L~GA;j=dCha3mBPEZg|i+go=ZFU zZ|(Uc<J9G9ES=gvz1{M{mb02DRdzhAUiH+DH^r>F`qD>sYqi#{>Y~_F`s=m3EpJ_{ zbU)-<dpKJp@L-~%t@9SfxkV?%7VI?dSXW^E)N=*nROX1X9}j1odA{81`*hzarwV4w zys9>xDPQKFQmIhk=F7s;r}nc&GvB@Mzd-2A#q3p2rH?u_3zS_bd9&L2htk>Wp|ifc zly+2mv+l>+^ap<T=H6((`({@93{NAz!bJ}!KNr6-*&)VkRk0}B#QmO=<*N*0Om_%O z&`*e4KW{;P;pCrk;oLXW7ZvIsJ8=Hk_AS<ndsj_in<I0x_hHb<gQ_1J<}>cJ{j@8{ zdWQF<Jv^_@sF_S%!M`}=!^=r?^8%C=`<p%GX0Kl0@oKYG?XxHg1Kn$rIGlU+x{NyB zo|BlUbnT+mS+|1NFZ<^Dl`SyPmx{0c%g}q<g74x<?y}&;EZIG+$p`%B{J2<q+~)qt zr%SZ8nR%LQ-=8>q`ztFmqvgXNI^R#REi`*7s8KWh)6~q49U<;wtEMlVFW8#=yjJ05 zS8H)W><&-q?N5(7ZIs!2^#1Y2m+UL|w8Tc;_mueL$$$L8MbT^?x!=>JcK<*0WybDr z2O}mXYfH0ioZi+sEB>iZ$KDB|`@c<IFv0aa%ZBn}3oo42R$@<lAl~XGFWZ*2;Qj}X z<6Y^#rsn%9jJ;1T$T5A@ntSB_o_%{Ni!Hg@&%A#t{_8wnhh5%-rkvou+@D<iDjSPK zr7v)NcKdqoIM3C(D|_uzZ&>cv{J3Yvp+oGZXI2|G?iHzKTH5*i@Fpkk(<Zn19=)A? zQFqN=*$X!REbp3yn5+=^U?!P&d3N91-b39DI?a3+j-TIr&P8l~=>=hxU7RP@zcBs# zo%gM-RpsfMpO-OTj`=V%R5zzHDfe2};-Aayo!+jR|83*BIo2-};%`2D`K&a3(h2+f zIp?<3?cEf;KW^r=_4fAC`)BpUpWOWMwX|WK?X08O6OXOlnd5!+@c)@@s^QI()&}32 z)s`_mejBIhw{xqcTc1hG^QZrvXnoTD`fhjLFV~I~tT9<u7x!n%{W*Ikhiz^VTI>B~ z2Q#nW^Q4&LKfB+Gce%97=UifYW3%w~ip4Km%xq5yPJH9L_=x-Zs`>ithjSEiLNCf4 zIw2WjocA$y-|O&&H`3M}tly@0u-+{EfxYee1Lw6rIIlY}b!Cfr!g=ktpS^zXxfB(4 zYun++isDg)Jcl*eBI9oRA1lwa*fX!AUiQHJ|Ke}A-tUyZYG!HvZq4fS*E#$O#!Xdf zeUBW)S(Bt=Jre_utd3YHU!|#^zRBXUe+vIGi9gEsb2u}P3a{V2zG7>{^!3-w|G$^| z_VdJU<<%VX84uoaFkAb;*y?{#O<6>clhdP%VPT$&c7F@^RCpM9PxwZJ>D<#Xhi0!? z``22F`%}%4#afqcdK`(|^!D-MzlSG(KFk;L+5Xx!yJJu0u6}#!uXX7O=R&Q$(IsoY zE{LvJ*)S>pvcPenUlZeeFMQbW>~ZV*4fb<IZY+M);&;)F&7|&FQtkT~nYrt`<-ecn zKezo_o$an4KMx=0{`mUd&71d59=-T*=Z^xlZ}xL!WMXA%EgIwPJNHiB-?d+6u1rp+ z!jjkQ1~->Sl)u>^7<q7a_VXf}m4~jLWva|9V9@Pq5B{=5{?XaL5pmTj?+dM#b^kSO zs+h{Q)vI{d|4+K=zn|_rI_+cD^Q)`h@Bi($r|N6g^Zxwu5Ai;K-oJidzVCjeZrQ%y zkIVD#{rmWJwR!&0)pNJsuigGx|IyW?)rtPWE`R<_505xLcUev5B%fLL#HCpO>us6D zKmEdkHEGeN#d#mE>}2<TCb{o~KrIXZ-vo<&0?(JT|Gzsid3mvmm*yLzOR*cvcWwV~ zeAdZi?*HYxxWDwRn<B}#{zsVRX@hDuud8j9t=BSJcf{?9b`f`AyEx^|gI_C@k8~^E zGLDN+JgWawOFDjkgVOaM-}N*UBCHo_e=a$x`ot%8(Ns~p1*g}2n$@?9#XJ6RJy-mj zuCHICHZ8xbku?9+8kflXx29H^y#Bmna*L#?udSXB%iYB3|Ftep&SmWN>UkHE`cLT2 z$844s&5-MVg8qCnkM3PsS83-N^n>BbMxXGgmGfH5TfR(=H~QbIH}mkn+_g@Y#`e}0 zHn!Gx?(ep+xv}(JmPTxq?drCOO&;&kuet|t%HFsoVDIVm)9(Ex&g!j)c+F!Ab5yo3 z2&&;a&hkHOZ?w0I?)-OL*KV{fjJ<Z{z=zfiR-T-H+oMFThfXVPb5mHrzHwr^!HY=F zuV#0(79=QhWOw*Kd@|QpPvd*RDv_0TrMg)$x80629oN0Rto-@aZ7;)lkFK;?cT{ve zU*W<9zh2h%&JlW2;&%AV4M&M%4PL%oQ>tgjZs#g&G^jifC*tb<QFh*oTeVy-9LgA{ z=4kL{>3rB_DsBAY&*tYxTuPO9*ER=ElUuuY>7jj2#l70O{nxUpXL4uToZmK~fBB`F zqR`fpqKuPgb@jME&eAho(CdCwOG5us*{Vma8r@qb&Rrew{oFatxl30r?q-zj>D`ri z*ofI=hHcpQjq@&E+p%(rc6zaup;WF;W)<r_^Mx!oJn|UM{CAbs6p&7BvNNn|)N2rU zVY+GNJ$Ba6gs`Z`;wxr_&A7q#-r>zd=gQKpKipz>gzx?#vy`FzJcnV`gO4j7omiIb zJAKCG0*2qO&YjIJ+_!%}cfZ?{%&r-t6}NM}pL`JQ;ZOJ@%Nk>R)MqJg`^td8#3@SU zB@;>mjU>Fh?gkyJ)<|mp80mbKYtJ*Dc&+ZOJdusb0oQAU&%R{|;Mkq7HS>;l>34^Z z+waA)-4wBCx$!}`ZSy4gCo|1U?boin81j~VU3TK?jrxxt%!uwabryG>Jj3W!O~7s* zXO^kayfvvQs*&e9AKY1JZ`Xb=Y5yF<s<=t#C*9j`P{-r!Q1;PHPt$*LLd#y}Ig9S{ zCEd(0-d}mG!RyPc$cUA4T?>}#)%?D`Q7*z~=Cq|JQyTIjr~UIYUFxtTq+`meW){n& zZ>RQ&nAbHg;fgH3I{ii0Ggmg(UG^uRd2DQ#)(YGBU?JyCMZx1dGK}w<dl`<msNY>^ zb5{SAc(cjdr9Ei^%qmXr=dC|~^Mi=ruQi%J+ilJWn4bDk5dP=<|FDc%2Q4RT5WIPK z>MlnoQAOsLzZRPJB>v)KuPBhv=(j!G(HHV5=DlKYp?+-5^1O>zFCJG2eUWpE-$=M_ z^8UcIn$}IrjXX4&dy|88g*MHoi4Kicbj^wX*S&G`lq*T8JvR<aJN7(VsO}86r+Z4E zK+kNhua^`{!cMKY{<iz@`OwJ3GaC!IjN=~0EKK_pY?mSWW@61Q=ifiqU1+~_d0*2n zr}<m1ux&N{*miT9;-Z?>ZnI75Ca*rTPNSjo@7gHN+{l%ef&ye&vq~j$!Y*|&edZ~9 z{qybotg@ONf_+yKt+q{wdC<#|HhXH+FGZzk;hiU+Z_2)yZMyqg-2T6H*AF-MuQO@T z{2iXrP?`U57q`)d)QxS9bG1w*4zuVqc4%!qP`+U5L+{t+rwo=d`1P)jSb268FW;}r ziT@5xeZVes<|v2CA!D}M7Nt2^$ur$1E?&N>yG)n8X98o?9__M!H)`+JUTvJ@r2p>C zo_9;?ouUOc-q`T<gjMCvo!vhVt>;#Xvyn-D->sr{VcOf8lsw^uIlqru@LHV^4LJQ{ zqSOM*&*euiUiCDxOzltC`*e85!j8noGa*lx<nm8nv?+Am>fEp^n#vJZCrmbYD8SZb zVwcgLvv)z+T`7x?oBXd>nN2G@)_MP8?%iY43LaZMHreA??{hWvw$J|wwkl87*v~u8 zXSr>r!uiVbPK7KD|0idCf?PI!7jQA;c(N(C>g?hFALf{B=V_8ymCCT<ov1^Q*R$tL zt8*kuc5;|7^6i_jU{1+*W`B+?=FaW!c$eH<!tC`~$y-J8fYRQ+TZ`<nB6pPPitkuf zcJF7*!RoT8*`gEJ-^Cu0%Q0`;*tuV;cE{Rfrw{G5xWoSNqwV8cT2mMFf9GdPmE)1T zy={fe4AC2^hO5I${cdN4%RFr~T>H)Zj*8}yAX~0C$2x<i&RM&*E9c~fz`R83?pJek zvvUHqrB};ccXjsZT#~5!GvdMYeQ{Io=bNY={&ZK*cF&cauTHHLpIDUm`QwG4DSO{` zZ&ECO-N(A^)V7kgxR+N8mxMD0AA9q70^5s{HSa7ZzT{hdY@N)eS;|(;OJ1)ms(bXh zD5LL<>xTc=i?jJ}R@Q7NKUKKR<Ny1jd3p9de@}1pu01vNWZ{bo-2vwn%x1^0l$X0y z61TPg+=jMm*K;q1y<-h~+o*G?_)5Xrtg~yQimp0b6xx|)`bzBHwV9>8&((ImidwKw zi6hEUz{GWZz?Q%ddt)opy4ED$x8LI;cfTc5XtM67W8Tg(rpFEiF38IWTqVSIW8uj+ zhd%el^%dL@=80M*eO-BT=gj)>CpR~)Fi!rab6~^6(}!HL1Qy;iK7BN(C#gHilQI6I zo?HyG`=rb^vBm<Ysudrnm|giGaaJ_e?xSf^*7pUT(Knnzy!1}SW&LrRzKWrKvZvRg zRQ2%iy|-Q+xqPuQZriRh4Zme2*_JzvHVW_UZ1hXKc0)zu;EC@iy;_PNOqdqRw4$fG zVpG;1!EKS}x6PhWYAXNbfTsnQ)t&sg(fW(JllAY_-g!Ug|JRiN&o}d{%iGN>|7O3Z zzP@Ckd(=+uggREWha%bO$JbSao_2U_By(2!R91$P%mbtQq0_&3{Qr=D!TP+u&fTDu z*R8vSp2psI5+ik<tITR;#C)?k2Sk|fZ_YjUCujQ$X@z@r-=CT0XVjF;4WHVq&K>a4 zR;5eh(X$rj{#_fk{*v4@(W!I}PiV-~?4LTDYZDTFPHYUSW6n2-a5lQOJ!<JWe*KJN zn=V=%2(a1uWRm8hiMxbl_&cj_2rLQtBeefi?UK|m#}&Pi8|zOW`S$aYs<Fqvvr|&$ zo!Wk<?R(-MIWxm2UP}KLM7bRF6}Z^<U5eNLmWr>{%2v<g7Y;8s2snKHk<(nQ1rfr! zEXQR(pXTlTQgd{BMf1sJy>d(v|Ag~XUf55`>J}+%IqYLCmA>bBbALb>ujk3N8(cFr zZ1lgadC0%`rq<OpT=PG_TzKeMtefXUp`vXbUT&AKEM$J!KQ-0Os3qj&B*xix6Ryuc z9Vsc~EHhW>NmEgxY4Vwm$EU20{x?J4;z50q<;~+y^Sc^$i89?ec`Pu*>s?`1$c1Bl zS<YSpQ2|pn$j=dwW6?M}Rn2#OmrLTY+3jiXUL7qd)MmHrdm?nKeYV~G&--URnzZhH z#p0sxLG@3L>u)ul(W^J*`aHdwCl2BH8qXB$_vubBk36$hNFv<9P*-Br<_3nXGPZv@ z?k2jr?ELq`aAlQ{l=YK5r=J^Z4fd^l7xQ|bZgKPK(wDw!nci_9rdJEUG`n}AIP#Qe z;?i@We23RuE7}(#Iq|>i@h`$IQBsfiN`i#GIlaHJvgl$_`sukR{GXJy9_ya}!H(_z ze`&+L9WP@PZFlgwHEx=6DQx=TTm{!RYl@}i)%WP0sNfOba7K4d^PQ}7t5fGpWY=1} zcAKzhm_v-r{KNB`zvSu6-q?2k?Jd4n6<NW>wrA>J`4>NXmg({D0psGj32&tBk8OW7 zJL$dHyrTCj+>eC*WS({G_ue*P*GC6Ucq{Y%Rg|4kHk)=Ju4bWuY$5yKX@7aoUrNaQ zlPf;^`}W**_5Dg=8mrGwv)leufXC$~1G`?N!IGl7Yi^eA7heTj4OG8Ad!LDp?1ASd z0wRAEe6+8#*H)CdUhLkGuKlyT_3aXY{adCL^?CL2bC*u3_*Zzt|7BL+gX0=(KV-g0 zd`)WRi?`NFVB2@fqd#)CtFV-n+@wQJZ&jzPxpZ|SZ&#P8VvYFceH`!D*SROLOy)nv zbKvn6n*z4^DHq@QY2Vp*LqS{E`r4h7d1t5A?F?;tv_j(I?QhMqb2XZqm)88h`#Wwj z@BHpJ2I22a=7;W>^S*3f{x7TbOMfos+WPtL?e`OA2Z)zF(aW3n_3@@OmRZlA@EvVU z?zy;VkyPlma|X+`+rNu0u8EU4c1$rMf8Jk>eUs+p+3?LhJZDOk@H8vQ-t`s#)wUn} z!nE0|wa18~>BiYFG3z5g8BLZwH|6>i`F$xJ>n^RkQ7QiFZqC0c?V{&eQ+bPh{fsNU z&uV@(nD3&#vVDPB)Z;mC-!-&cP<}P{SXog0#Kj`>W*IIMVyZ6vAi=gNK(@K$P~GdF zJJT8iVl$I>m6rQ`{!wSK@7T{**Iy?T&0Sx%Cn|~Ufu^Y2&m$4XjZd>oDO~$Ts6@{3 z)Zf#8dbUROxF&6IO7r##D?FcMzeJ*D+1i`OI<?MriAIR_9y1OS{`NUP!(K|-eL>o> zD6e|XcWaJZ5Xw@{c(Q)!&i&IT-&wsrsjyHh=3&d!69K^<e%sHV?@w({t+*<%UY6}l z>Zg(~KL55F==|OJ+jf1lM3dRa&4(_9=Jf78n7JgnyMBg6dfdW~=?8t4c<qlX$nWZz z(-5bo>u0`PX!W8OrOJXjUCgnG*TT-N5V_ZC$9$Wk?bX9+53F}ZGhH#2|NpjZch$cq zw@$9Pc8Ke9|Jp}Sa>CCnJ@op|+`V>=%~vieJu~246dr7$5y{bgH*;Ft%d@{2WVSu? zkPZx-t#|fN@%BcRBAYic-)*zp?{P)R#CaU=@Nz9bI=!!GqC&I5%bF$Mmj-JVec%dp z{oD5G;^eG(7w3viy%_7Zd-7cS{qNq@{8x9meWUL0T#29gU*BY|^yBT;4)j^GdAS(d zHvgMe3s2=q9yq5p?UGI0{fkqJ_k4OeXI+8wWgWwa7OrhZn+2Z;o{h|G_gJ`Mi&Vsk zU6~Wt|CY%3cxU0_HTyccuJK!~xWi`mc<IH7{_R`N@aZjl(yf%8c0epaws>3Q48ve8 zt%;e>rtpRCYMv3HZ51q~C3<%DF~_2`bL`(gawOU7f0^}ghq<ii-{@?SKYMCku9whl zmv#58w_9hq+i|AK=hyl#w4?T_1udE#KGm63GOqZNsB+Nhg+_dmTN@5N?lH`|up&z= zUd?8=mez*Hjvg$5W*0R3q_yI;xK>T8Q(V93fVP;9p+x2so5?Qro>ycAmhRmA?%ezr z_nG{QH=OaVyL@(C;;wV|AMO9oZe`VW*XN<8<HPmx3YP?4X>fS&&HLmm+LCuoFXsfi zUnYm8*`)S!u3yDU&&S1`4~mT4RQ%jiH~Qb>p!k-TPbH2lTv(f4am{JsIUe!-zTUS5 z8pRKuWR?5Qmo2T{qcN+rXItTdlI^Rv{oL|GYoQLW(AyoYzptD>=)hXP&FkB&BH03o zU8l05gV((bdLEW{HTJa$Z^pf<1DZv@Sr1KJwMX_y{EQEJ{OQk|Z*>Nyub63ZY}Kp0 z;NztYe&<9Zr#^@|us+O~LuB8L$dqqi0w21+<q3M`b1&xm$;ClY>)##;T$nJ^I_m0{ zJgpUBTMeYId|n%FExe~faSESM#s`ziw=Ytcl^6WXjI|F4w=%dft7;+h+f~xuK331I zGpjdz_u1rgf0J>n@QF<)W`7P^_qw1$caOAwk4<Iw#LU+LYFc^Da&DJ4E#~S@xOC~% zu?ucJTIc^B*)0*xJJo((=+r51E_~BF9HG*^>bb6LipUPnS?P`QOWw@#kvctX|Hl)v z_%dJg-`U?b_h{<OOUvRl4!2s&eHM4&&75uOecN1?g%>L*wp`?}eblpQ_BKbWMGN)_ zx&J+xwe+le&-!UURjkBP?fhyowT#~^PSZSgmtkAjpDzy&&zkrD#B8pt+utvhCYMjD zk3FWj(KO|M?bYw5^BH*$_vfi@)6<^4Y_+deXxjh1!tt-~6h8fY^y>0sQZwIg{5fy- zzRj6A;ZGx5PHi$woxb9>O~8gbJRfq!a|?p5-+#5MwM>_n^-}foOBL>myH2SmRJIn+ ziT}Or{r#n8pMqAb=#F-34}Zduu%g=M_$RqVuBS6=yVdH~oqF>^$$HZcKJo2;4=E&t zEI4w>>Bxyso{kTft}yJ(bhEfHJus55>BQmJ)}C+Dw`B5hGHQI{Skp0Y()@`(*D`-C zoX{q6VY0@YOY5rz=M)?Xbq!=o*eiZgJHlz9x86F(NL87u^M5e1HB9h-ra0U8<vlOI zZ*%0&sBr(+w9#41`ANow!~6W(F7x#jnFc@iX_x)ToLIU0k*=-o_WJOe^I3r_86A$@ zdXvO(dD8*0`{&d*E)}}fne#DO{Fia-Hd{~jjk*3;0t;>nmx;u3KQs-jy5&`I-)`5N zQ=GT7c0Swv^T{@cy>qY3ntyJYZE(`<iNzDHm9faGZj}vm*IX-*nj3AuI&|lI`~B~( zoOp5Wc9_$tU6%?IpWdIo?DipNtNZ5!>m;O`OpW#wEezSEWtmyBLi^Vmi}ur-yp5}8 zAL?dFpHi3C=Nws<n6pjurb<|Jo=6;P^KM6xKXX*(8_kZ~W5jr2S?656rc0iaObi}A zW$t>Y`g-2_uW5;ub9I(#*6^3UIA^6>xyItvre{;X@9Da|;L&5#0vF9$mrM&fm6KlV zG=1H6#$)<}n~BE@YJ&1Va^+82RT1_gb=?B(ADemCmt0qCvx(kN+cR0$kc(aO&*a1z zcCaJ&ZfH5cj@+B>tNmmDpML>Mw|!!oabv?i!wd2&ULP0HZ9H@N(ut4zM7Y=8^f+bs z>{s9=eJPKb?6<j6)o$;*a`lDZv5Vc0Wows2KQey9Fwy*5Y{I>1Mfo8qZL_Ag7o6U| zr25D2<??|UOXIJw^@Q!K3`^pQeDa|tDDSb?3dUJ0wsEiMdckgBcKmYeN2~v5Qx7Ta z|NN_Vg<SF6)A4&()@}X#>TCJ?!(8vrEPVRhVxdq>mSDAGE1z3`!?M~7J(&*;8rN#g zYF~Bxz?$1RMnd8_^PMhvwg`wYSsCs-?QrSHgoeWw8FLSD7B1lvVSAC#BVw<ZtW;}$ zvd6+<r@;x232}-7Q?$RnlxS&Nw8QmE*P578Go}FMH?P8M-C6#Bf8lWc>4b1jkFT4p zmR>z{KX#+LLHeEr#_da3ojbB-f6?~jYW;e(&#e5!!e3ugf}iJ43)r8KvoZYo)FLsN z_K#mavuED<+1t2l+at~6U;jvV9{j18dPz;8EHSC+ZP(=$RYzZ5ywoGpkl!a1@!(F^ zf<47k3MU;YnYtw4)af<LL}u=ewdCMoRxa?k_uts-<mYWU+#1alxzgF+gYE95Z$I@b zcK0UFj~1b#_Gj4Qj(FWZbLsWIobZ1Kq^qqSO`5NkT;%DZz3HdhJpG5i3!~p1+Tp&H zPb6-R*Y3%?3k`M`eo~Hk`m$`P8QX2{m9zD`oulXHyeeFpZlB20^2u3qJKN2e3uoTW zik0a(|ElVYN>Wj5V!P7q#Cvh~t?lBbf39j=t|h-o%w)6iw`!XQvK_JRi{~=!S~TBy z*Q<LCGMDuy`8(?5|2l2%w2w*fK)JztN$qf9$=Tf7wd88KzAq9;o-1~Tb4s?h+q{YU zI;V7Y?#R&&F}TFH$9=EBmZseE->o;WJle|hCGBvk<_sRI2#0G24{Q9|tbF=bSg)~G zWc9CxO1~W{!V7v{>18J{Oj&8VrplSIjOpjuT+f=zYdUmN#De?%zH5Iykj}l5Ss+U* zev#iJP6;1*Hnyef-xr7-iZq=f_H@FOu$QKZn!Wo^=NcXH^v>bz+vL`3J@2lV(4}Q= z8AiUWGp|lxI@QtawrJ$B+iSGHcP*5Cy6@&W(}yQxisr|-h+o>PXq*`_S*wV(?Pub2 zjvL*-_D);Iw8!MRzj8?dPu`8CX}6U_^rcQ$MD6_B^riOK+E<qwYt{bL3%ycTo6Yrh zeL16ho1c?=-ptgs3a7PtZY=%byY-rq&QcvG{)>En@|Pa^u_5HP>F((Prs~?7)8e*m z?U;6#wQTd6{c-1B&zY@r_1JE!(yhxZd-6WN;6Cmb8n#rv$VcMWZ{dZ9#eeHo@Ya6t z=aPvi@cNtLIw?P+rR8f*Ui+CPvmTwOi;hn5UoroM=^@{nEA6Us&3sA|=f*cp61uu) z*;UUCKK&*=&*!9FIdx%%;fAN7M{kuTuC7$NGwEJpX>BB<v-1D$f=`onIqRSNH2c<5 zF3$Pvf;p!eo7JN@q^|$|Y5B_N>5R!et0Hs1s(UWk7_Zl}U*1u!V6(}>edo0oYUf{B z9oD4|J4B+~e8cTiYMPghO#2{xaDB_qzBik9D7*^m=qavz<8(qWQ8eZfN3G^l#n9vG zEnnAY^SzCD5p&i!ye{MR2eVJ2|1SsTzABh|L2hZ*zQ2optzlmKa)wrlu7B1}j{j;~ zqK|q6K3Q6-HJ^jeGWEeJR=G20HgEaJbufz6&8v7q&_;Q~eadWZGZyT(aBB%&zg^?S z^oZj#!scI#KKNTGO1AB>m-QxZUg-xM+ZH^u;Ii7aq^3D^MRYE=!Mikx$#eF3?{zGQ zvdFsTey(gPPi%nXYR@3Y03!t_MV2VOwW~C8_Zw(k_gvSNbSdQht!sYA?Lt1)G;Lqd zUM}kDvNG(Mo7Uu+o{0sDv(yCr^5tK?)OlsJIYDaaWY@=hulDS5nanq>u_<xN?!Qgk zZ%$lm-RYdP(R6p)x{@@ro?N46lW$4R;`v?k^S|x=^V<((Z2oFL>6+n<sjYKdlLSui z$M$9US~L}%Jo|3>oZ@+}Os}nBnV2voBzmsSmuAMDUy>p^_L%&<(_^Y&zW(gfuK5M; zv}NwBRMPslXGfLCoezKbEG>NmKJEUv@5`$z4Sv^`s~I)-X{*#fKl*TXl4Z&YW5F+F zN6)=BzyGq*H*`;5<%)N2p7UsJ42W&ZJZ@k4V&y9a|E{GWJ6@>E)-o?Sbm*VS?$_$` zKR@3o{m$FIa;IwCtNi$XzEdN$0=CQfTk{{%nOk(>ll=031~Y2!E-%~bxxDZ=gR=?$ zoIm?&|9<@)E9utX-@h&O4*v!1EG>77C#J_rRM>-m%f;6+XuV(fbn#1%MJsdrn@bwp z^PE2&Q>*Q>aakg$$NR!;ebnDK&q}logO0WM6tw5O-qM7I^rjE&ww1H$`wpHtso=wO z^|qqN<2s|AX6sf?xfQxkHFjlCe^aP{ME9{xva73?ohdl{CwJ1d=tD{e)AGw-Xl=>8 zcD_!_dG|`cx~c2=PA%{bZjGwA6Y4jcGwR<>N$*KN`I_QSM6S%6o|AU!;sy&jQ@70% zr$^a@mR5e57hRhw!(RM9%2sz~sKMO$2cgeRmQC37@pLEGueEw7KD?9pX@7!IT(ofC zJSS7<mfIdle_YFB_e^uvSRrzcQ};}?lA}VZP&TiZrN<?a46UkGqvDFF)bi;Y{@yB^ zmE=-Zsjanms!>PfJLN2n1n;X3bvY~N)VOCkJiOYgW;kuTICKBW?aqQXHLi#LXz^9L zs=DHEnqk9&lb0%YKPvEGn2-`3RF?Ee*O(!D=A_-MXN6z3w3#Z|NtB*`wfg9j=#W0Q ztAS^>{_0KY|I;gGDH_;(e@SrVb@tUU0x_XomF$;PqBdNUU}WrFTAj1*)Gyv|vs72F z|Nh}<`JZ_@K9?rN*PgF*IPaoyNu*ynxqh7xpQVUx?(x@Mipf&bQqL=>oY9d|?t8S$ zMzlNJvb2j=vmkC~zs1P|51Bg-Jp8MYFv;e7{po+<uUik+hHFmvTT}GU?)k!^4L@gF zTsxkX)Bmia$fDg-#b{Q_&uxqPY^H40mJln?zPaL?>vzrh|2A&*ua>-WW#PqxVMo2z zY8}sB>ak*)?o6KLUS`b7GZtE%nEtHs($6LqU3;s!j#o_&t&Vh349jLsh?(Zj78^I0 z)0N><=ErBNuQ$JDnfLM1)%HBTgo*#Yo3B?Wy|?Gz<L~u<`Xxi%wR2hJV#T939oC9^ z_bsV=m-_tN{SI=IPwqG)6{{{?oz?Fh(#^K&vOt6ov&=L86E1p*Th=q5?=P4aTDs-z zs$Z95e_dF!<YQLa)TntUPoL-Va)0_{*Gii$a(`dAb}XI0N${)0M(f|71h2@>4~*Fz z^GCDf@Wzj+`5W){PJOjPt7HXN8n<?7*@M+Tc}wy)PW*6SXX|q#zx6*i{m|sGw-R!D zE4TIi(NAs@--*l!IWDI@lY2>9)xpnO??ijZr*)oI)7N2G{$hvO-oW5hS+klOXMf4K z{A_~suFUwWfufq*dYgU(#-{EuTNl*6`U>aqrBAos60^14E-<NhQC%CC{mf|vyj)9i z8MeQEwd$~L{>~l$53f-WU$vupqucCMwm_q=)<P~yM=kOW>Rw6u-O6QqcVfziC9Ja- zxlc%))(~}dYnXqg?8eWlPXBk#*<~fET@$_jlEkI9V@xqC_&mFHb)&fA4(4t<z0y)- z?#84Q{gclBEdQ8uGvd?J@@SR_rrZBZ=iIzrm>Y3lUDC$tYVzwBrz&=|&SJ015;mA5 z<Miv1o1Ce6>H@c?*IeDBI``k;e5~f99xM_3&|<N&&rc@Sm&FlR4txF4T$9pgb636a zDC1(^o3HX3jnt>^J8@P(%&D!)cETCmj5|+fS1mYaV&ZYhB<$#XZ*S|WQ+<NTTTVzU zWehodVfxL5MPlNg=12?aAJo=;8+CMs;@4enrg{}-!LrA=+?0Li+U2CIa4k5sdCL18 z5nd`s3O7gW3oZI}x-R<g%t$@?19LKX!tSIM_;`tE)n#8g|M{>`N9d|nb0g{H1)9qG zGLeZw3q?Q8*=fNmdEeAgQ!;hp@%JmucdB*YyD?czzw_u?HO^D5%fDO3$ym<5;#4@r znNyr4a(bp~P5Fuvv$wCc4&S$FRqZ*GdPUB>`O@7;!KnvlCzO3}mKNUFmcMD?rrKZJ zylka6Vy|tl^eASPsqA_F;Q;fsoQ<!~{cJ3eSmCIk$f)Nb;`hFeVKax5_H38PegE#( ze33t9eo1Wiy~ypg+xYzR*E`=ZKHWUU=STSsb!NxYHs@m7GDTnbCP#8_OpNKjdqmY! zto3{DwuJZ)&Ay&L3l=`PtiDt3;<|v?UqRP%OJ7QG1?TV_U;pvZpL^?{M;m>K?vkAr zT=jkWVci<tf1x!J?1pcavCTK*-kTP3Y~$;QnFk}@+$pZkX*<gPv~D$D-Q#4_^m3Ma zVgE!Q@2>4&*E8ljcy6{+@iFZmZytR-9s5zeX~z7U=h|fDUpgMmyqsH|E~fC-`1sDv z(_3>wOm>|~==r2{`CUro7t!KXA@hA$<~J|C(A4EK&6tZZ>$~rz7ZW3|-U?55Ww|PO zc=tlC*boM;xYW&3ZOrqpMwU9t?w-G_`4A)P-^uBDG4-os9vpqDb0EE^&DMQQG5dA? zyPG(@Uof10yJXd!Q@`vV{tEnB@^)7Lm6&~NGk7eWpJXjut&+d#6T{>`*5_xZgvx*N zwl5CjpMK$UW4q~}r7`ot2U-S5N2T`$9F%EvT3fZMFGFU*?C1YV0&LXIaNj&S@B5)2 z`$Fv)F3vN#HuL+c9m}5_K6@i9eE!KPueDabK9%IEtMTheuZMe2m;O%u$u~SsImVp+ zX#aFpD6e@I+fE&KCeuUlQH$KFtyEINjyz4jBFsPW=jIc;IddBR{HUzWOxxhAyf0nY zddv2yKXWDJmjrZJ->clZA^pW?BW>~KnKO!iZ44C7zP(xDg-i75YiUjD*REv+a&+-s zU3D-(C*-YRqX;*vJ)_CdIjzr*eoZ|RtW!{y7vL&wAJZKvvMtG3@H<09&VnlaDM#6M zeQ%4(S+Mt0MYrnQq`V79%Y^<0-01dgy~EzHvGd*E0EyWe_vO1bcK&+x*ibCWUR@*E zdS@L+&aq!i&)758EU%QGa;$3A_tva6%lCY$=yjF-^wCjT_o=;E(c-0C{p|N6g80%B zEux-vv%40We820@a(v^K7dp%{7VkYJb#ddruagd0T{C$hdHbVhqP1An%Xtj_n=^D7 zo)(4)ayL}Xi9GVBqQ8%)imf(BdCOLYqGDzHT@&MV{w$83`TbZ!PT-lp4GPgBCG{pA z+YgB`aK5~;s{L?l$?5~l&Ca_*AKl}axbE-=NwrTW54eb(XW7RWma>q~v|-}UzGp9; z-NJ5dmbl{~Z5}gGSv&NX)Q5>jeT%($P9D2<eSwEq>+QF<yaF$5@i0%&omT3S?sD>& z+SO#QX{Tp1M-+vf^t~`?>Z5EyVeU15$^_L`|Gmm$9GP^>_`;H>TmEu7`-;`pr#<#H zGk>#DP(A(XJ{If9Revrs&6{&|n%1u+TP^*?>o@J#b(U$Nj%L7lgDGMXr@Bt;NC?#H z+Q{v^SZB*2!AYMImn7!}oC*@2H&OGs`!by@`Qn4YX4&1wj9T5tw|I94MNT=nEnuqa z*1XIETHL+!8Y5<!U*z4qsk2PCVCmiop>6BdRBf`8s9XAU#xBvO)YwpQw&X|&*L4ol zj{baZmoe?yqy3yVr<wTQb7y6yKQ>;IDtc|xjtYIY+nby|FJ#bL&1x%jDm9r~^~%$p zQ?@quQcKtE;eV0(_{fivME!2*b;pnG%hC8N$?#d5Az|0I<JX-J=1jVtu5rfFt720? zhw%b~bk0M@a%tT{^VSGhJWMp}IHcT=v}?*fl@l|LU902EIrB&_e<8!nuuI-8lQP%- z|Kyw+HTx^e2cxxLv)<NTkTSa*^=4I4`njAp+xZq`rd}}bUSt^@GjE}ZILp#V_43@0 zCerGM++2LKdFLgXzUN>4^3aXH`8?5=PfccJ%DL6vxb8+yhwov73jPUa7j3=5nQ5&5 z<6p$=uSe|##L{vb{pAEUZ+qr1A-Z|rxwQ)ny@kH>^!==OFk`Fjj~yH{zcy_tm~rNp zn7)wq=514cGp1epoGBV$oE^R0<HZ?c+nZ}tDwfS{?{>d%=J}gS1C!g=KV>pxo(q4! zzJ1wGWgYg8J=3g%_EsEh;M8)rm?S<ibI0RevkS$GQ#f>cTI^+ek1|YY+pk`G)U~zx z=G7%j?h97^lTh#8D6_Xb$)fd<<JzY0UB{;Av+ym9vXuQH@3S(XSLfTYo2Gv{pZ<7~ z+G<qJ-F?4IKB}djqa|wxrvvY+VCl{?w#PNLZDIC3yY2dn3_;ltu@EW!8}pd<d({ZN z&NP_g7AJN0;iG6tu}OQM7V2<M&fofd>9&HEaTjA(*IHIgn`)nM^1uIm?wxPge(jL| zUB5!$+U4-b8}Ib$BSN}_QlI=Z@eLH>kzuM9oVq7xldk>Ur@~L36<t)d`0$^*>hp7f zsS9=|xAbRd-1)~SnpD4ZL&GcU-i-|jEZbMO{dEtLTwi@QK*IN`qlwf7Ccc8*T&r^4 zeTj+||1BQ0am&8hx&o6uRX)E{^f>4L;#0M*e%E!6d4IXZTz>DqdDS6XW=p~{AF)q@ zCl5`I{irzYMflmLXW9N(tbMXzYMDHTLwx?{n0vb>?40OuOVrq0%Hwp>Ev2S2N7ra+ zb-ZCwieTqXGHyN7#<sGl+2l}j2&2=A);n8{&Hk}Y?bNgkMg0Y{Pd<yUbN-gA|G(s! z(MExciIrUuEPGDaJUz#0XjC5f`9RN^*c*ESls}7DnBO@Ovo_k~$qAdO6#_RVR%#ik ze>qWexJ2=T^5zZhZ!TBx{_Bu!T*B78M67iQU;7cp&Lh0tNBZ274lA#8R>?e|lKIBl z&Ea_7CY``nrXK7CZr^yTe`jxgSZ3d|eRKBT-NqN{*Y&qg-|^Im|03ehp-ttfAI#?l z9iFz$*e!J`Urz9xDOPjqeI|QeXw<h}*uVSZYJv4OC02z@m796YI_&;9@%{O*`@dyv z`G=2xUp_r}@#g=$=c#3N+a0G*i~D!`{r_7(|E~C4z5ny?`PTdE{}*kxmP?u^d1m6W z1Djr*?4SL%LDg&7%S}G#DxN27*AXn+>!tlWEX#B0>)G9bHlL)oO72vcxVY*d<I6qw zHbvZP+HrU7+HG317f0%@zwvBc?$qpUtiJwb>(eI8V3equziXFcn_2$0X$)pt)?Jda z*rIuu=S4u$x#XtyEX!5w0;MlEv^I6DGU9Eypk=pQB!t;CL{4+Yj)lLbG#WURpHWYJ z6Yx{XonN=^_pNVh-2}GAHD}H;5U&zFRv^AXVbRCV8)vjm)}&@L=by5@XuWmj#_EcH z%FCr52ZWtjH_h9ZtNs7-H=3aq%U7)yaj#v)R`aWo-(7hIU)AhN(=(fsZ49M+H+LRP zX8e3>%DQaN2hS#%JJ`=WcC~Lqm4d~VsLqnS=7r1JYW)6cavXd8<Vfx0mJ)mYofGo} zW`1z=UV3g9-=c{&>=WufE5>nJ@$HfJ?9SU)$em)h=s?AlCE^dZ1X*|+NQJLSo_)=7 z&X44mp%XWKpLW^v|D*H2#A|QqpZAIN`+Yh#(RN4qi;hPJ_g3b`>m4le%C}!${_@|l z;$M=o>!o5WHk4<sT=+HVVyf@<i#JcLY`K%!@o)0(8&C4gF9n~_SpDFubIJBf>j!7N zUw$Zl_ux&ki2dc|%e9hJkIOCkB;2ughL7e1u}M2mKEKbsv~UXN%}-C1OgA6gcD}g3 z&9<^q=n3b~25~vj3k(|?`J`%X_BF2A5UTRDuvx)_Cx5Mm<dYvPv(wJXP5V_TV6yV| zg1*I<OgOf+JN9g@d?0<(>Yl}&eK%k3tK0gwX?yG>)w#3hp3`V(bh+EZJ-y$3e_)!( z+W$Epwri9gXLbmg^8L@UxTtoohhc|*D+XI!>s}qw<G-?pS!g56s#ZhQsb?D&I{fQC zU;Mc&ByRfFjT>9ntO<O2WJjltna<8#kDQPBM8!T}T)jU_%y7kQ`4cnLeZNGz>}5{t zefOenD$lkor^$Eh)#A41`89qN3t63XW6!TRx5!)1#Wci!HU8rKeEP;|{rc0I46SG0 z)J}F{?OqV2^kz!_p_EygmS^)jGf&!1jr^jzHs+UEK#G%?&|ibc4Bgvb2#PIq{Ny)J z^w;dS+QDm&ES{Rn(zN!|p^Bd!p+U1dgL1t6MU`5EU-mvWy1c1!Rm4g*{i~^#7qbrT z_;cWp$KQ1~7R4ldFHQ06z5L1IBG0Wk{$}TEy8CJ`Eb2MR=8zHiVeevvExNDk77E;& zR`$PwL)R<DA)v+VZS{^59J*N_4?Gl%y7J_np->d>_2&+p@%8~u`<~2E+jmv|*~f5c z(VT^jo->}RKU@6s()5KpI5xk1|EXZr*Q(D3jf>};igfs*vAyUSzv9)lc$+<M|0YSl z2|xB|>$egmU(@`Qu7~e<@0w_^#iSqZl&P)}i%sO29`2f8!X0#=k<0wUUH|Fq?e=eL zZT9W3v9jEM!}_NE9-Euh^*ffG%YP9uL2qu0;XDqWFFH{QuXp5MHhlHer%6#t?81wn z+;8`--@H1*|0M2VP1ud<>0F(>Awn0uZ5@rP=CqdlmR!4K_O?^gw*Gp?rGF^MxVyXb z#=_pvNnu*kk~QXME9b6Ot~=Sqa7AbTo4?<0cW$h{sc~oOCG(}b9<lV7Z`>HXXRkxJ zQdL@Pb*wjcRzu|Kvl;CVSKf%&QYo^K?eziU&&%v)Ml1;}(`iq4bl$tQ_+XEXx8STP z7N*&G6?_3!#txZ(r#=3t>~=kr={%>raZX9Bt(<<@mZMMpls;M)s-46Ze^~V(|FOU# z_k+UoN{*Ovd-n#%@>aO7jxjU|dnvP6^W5~%iPOzD@Rsy%bi4X^{oKUTz-@Vl9+X8J zbyXfLJ-=<{l4owU6$aU+-`{ws$RwSzd7rnL!#w=Pg6wO%WTMs-=%}sVHZQ4%iLK?# z`hbT^gHP3l1o?fE+5KbISN-NA>mKCteJw5WPPf=#^5I{wTx##>>r+2Uv>&@<(U`0J zk14To=4|^X>z=F5V+mZsQzCm*Dy&=oi{I1IpB(E~RDE1?c=nSuq0C!~BI@6TujQ8Y zKX}TDC1``#KQ;9ov4v$n-o5zq=*{{qfxn_xa;q#ncjJZGA{7zU<4MOk-^fe~I=Ec^ zT)&>(iACEdubCXn9(ZLLU)P#7uHQ6eu7@Q(;+?CRe6P2_WR~9#uJz_;ICRcj*l0F4 z>Rr2YNl~G0c-r&@ksH#*Z*Kkm>+Sd5^RBn5_$_Amo@8(?;F)uBOO7Giy_D|Q-B+^Q zN*4U`n=1P{faRR%G5;L3dCQb4`e$s_ZuVbOBEZ+js^HtB(<xz=@Ilif(JZ(<Ajqn$ z^-}EAo<Oz)?xdGxe-_AB6|(>Hy1yY=r`)-2UusK+#V#vPwI%1C@!gyDR=aIq;B0r< zXO3nu)xWjeG}b%6&0TSaf2mAHN!Z_~e|sj~kds`^w04_Z?wT2$w|sX$Xyo4C+o%0N zr2pNyC(G+O-&q{)3}=Zlw7+_~dgbT&XV^Ar?Kr)$F=xg0dk*JLY!;FBcslFdmE`lk zkMH`MT=?VaTyBGHlGd!vWl2im4BSfdn+1MoyvgyIQ|NXkWa96R$BuPjj7mY_yDv-) zTgzi}$@8a;srVQ9$L}fv4flxuopt*qw~pi74)HpjZ8EoCu6P^iyfS<9IoI_0P5VyC zpGX#X+-dj!jKAjWbMoEC`&)Z2vhR9V7<H4|bKA+>Z~bqgX1&+^W*IY~<jGF2B9Y{` ztyMoHOIA+sFEhJ->UZeO*k{L5uP_LzrrgS1<F)e7-B<gXMI`lZO;+o<WNPV_S;F)n zGc4xQ^Hu9Mxolo_$t>v39MSut&AKlWye#&M^6E?zcp0^)YhhDXx6{+!1(L}xce@_& zJsKp^T#>bJ(M`edoH?4Qp^5XJPSBGRZn}R<^@aui)2&mv&hC;Zo?s-tDEd%+QnbjC zpuN(%;VkPXPmJ{XH8VWoxa8yrrNd&kX2&NU3T8R>(Dd=M39d5zPeKnLTH|xbzr$N1 zFR*pnpVRY=HkMbJtUtTv&c85@^;iAYZnjSBUinj!b?<`p-to^$y?)<w;9M>9G5v=i z7u&y&i=|#0H3@3xEq}iJgzy!wf;;OKr^Y&`tj=9tWKqy*GGX4|9oy%(8(o~ZL$$-M zFQq2kCGYdGg*JBQt_tpI-aGIAx-6$T?(Q3x+}}|8c6u>SDC-qw8_6rbctcsYi|Jb| zntd%zMZ<sgTju;U%_*zPE>1Y#(<hmpd{uw{De3AJj30&1yS$oc{`biG>U4E?_4j3~ z-%IS`-Nwnh^`-HHRTuZxvri3>*}vhm`J*L?el>r?_N%#n&WU-OU3{=oUg1PVSX7bQ zpDh;Ir`ms-x|-BEe@<vUz)^kBM0v*hl1b}#@w#ccp1mrPdS>_X%EtCh2h^-XcB-(y zo?Mjob_JW|^!&|^qS_7DRMeB!p7lFgwB+jw9?L%-VM~)@d7>u;Uw+Nw8M^9JR*{~s zF1NW*sEguuvAwU})!eU5jq2G~Z6;yccW{LYKXXgUk!)|t+{i@D(BS?P@sT?2Z3~s= zAH85>GD~T~o_Bw|um03urzFv~t+qC<FK$hq;lH_Td1vlV_b)2Z&e#}g{E0DE({!)t zl5L8c^_N(B*vgeXdazCTq|iUkpF5qO3or6ikMBzfK3nzbn$o3CmW?LUvUh2)J2QT} z(EeNekb6PgC8zJ_JPo!V`FHQ<!XICs9~NH1u(Tr3=uKSp%w=UO=X#odc^>`f>A&{L z!U{i&f@7xGnPnAqUU&I?-t6c@!ztgqWah~v@P2rk`k!z5wfX1l_N-S_(vb7;TE@4^ z`qeCh9cFP_p}$1gW`)|9eP~bmdfM0dvE<Z<W2d-Z-hZa-bGhfx?RE0+|5jA&iK~0f zep7+>cur}wz2P^ZRp(wGHTu+cZQ7T-_m6iUmQ<blc<)`KB+Y^*jrFh31~}TiTC(?n za>a@{7e$`gSS@X>`74#b^Y@bLx3Bj#U1Ho^S1_M3F=XN5)d!}mzSrLSu6_A?J^uf{ zzZ|}K^x@5?2QU7-*MGeImi))R50Bow_-|+0wl6L*$9?CfExyaSaV9(8b<cT6T4&Zg ziu+<ZbLJHB>`${J@9bTFWXIHk{oMw6sdxVWI(?={tl(v8S+v}{Rj1EvlK;_k`pl>I zwQG+iR@la;ReDX2yb&3BHd&SX*&0z7OU}HfeN`#BllY2n#Q#0;(c{|H8LQD3j;JhT zWk0^@yYI!{6O+s>jE*kUv1#Pk`$D0^=FVk-tZ#z$&MLBZ3QsS;A={cSyJE5A{2n)# zhg0hAb|)C_n6~4={O?MYM+L5nUtbU%t3FX*<(a8Q->Z{0DXOz7{l3*`F)uo=uv@K* z|FxQc_xZP6-<UKv#5&1`Fi$SLSM<63=y#hw@2}|^o3d7S$8Ai#sr&QHz32+>rCTT8 zdvsjyOZut&>PdV;cjm2F%(GqnjmA;2L)nYIeCa&B@nv}Iv`0<nzwS-l5fEg}X=Xpy zw|d!^ZOYFTcK)xget+xUj$Re6=bP(U<ClJ3Huv%*)%fQX{$>49WxH%2ce`z}w%)zD z-#K{8(HTmjL7Q$*e)qpFV8;XojtL5`C(D%5%5NzZYKm}$wmL0b71P`n61^_ax$CUS zu0+oFDp|f;6;yWyoibT`y{|1UGsio)skZI6P}23)`&1Rb?c23maAq!xXP{l;^1z>G z8brP4?#yT_EWCbTsYLoT^Vjv||B4b)JSq+CI#!BQ^3H3Q%n+`3emXt;Rq71c)3>$< zJdQrGr%@(UE9zCMV)|yU76IQa)}{%3CpnWQJ(|9u<%^8wQ?|&u3D>R9-mJZJT=JUD zaj*CX2G1L{mwlZ&Y0<SQPiDHZ<k~6nm>)jA;HB?uvy%zu_>CF;CSLZCn>j~!_T0G> zFY{Th{3`p1r$#P&M+i%mR?FU8CB6B}_WyQ?<UT#^?1vC-w;ztPmu#KJzJ8yjTIHt# z7PjL8pCfO`R2urJy6brb&vKFBiC1{k_^7s4<L1(Kfg4B9b-vNe|8`!Cagi%)-T%8; zf=jl2x_<2X`YC~h4e<|7>|dFDF;e1yWcj<UC8=CuYPzbs6}|rQ%uqRMrPL$YBHTPf zt@B*d>BUCo)=St{Jh>r#+*7&U^IW7P$NivOwVg&51)b(Dms%$1n!j9BvDR=!L5`40 z)y1}!e~l(uLisZiRe0a|a-=M=+y4BBywHz4iO=paimpn+tp|j*^*N>Y$vSM5Yg)F@ zRI+yUq8PR%KR0kJ$@zWgpK9WglP?TzA6Q!OC}P5o)pFAqmi)Z&=gd|AUu}18D)V() zR5;6=nsPL$*?3ta*Ik>!E9aV*``%x8*pj>Qw62`k36;*rr=GK)blkec;jGeiQBjSf zDmB_NE4%izJU(-)V$-ZdS3Ne#_HU9C_IH}j-tge%mHI<|9T6WpBX!D-h5y*MbDGG( zB-6W-uQT&?82{^K)R4RLaLUICnb%|%6?SaNuKGV?r{%}@LjTu1Sz;5LwJP<%Ro$Zj z^}P87YkU41ad!I5txn%yK0`H1;_I=k$z{y5t#sJ;EO@*yd2hi+g-pKZOa3qz&Az0p zB~(6Fgk?upQ1Ifjyg|u%mlyvjR|zm%$Ch3B#4lE;Z`;us_F8vd9Xu59=6BDHtJ_oD z&umHN*)sj!k$Vr8+VS|QmmLk-bYp9(h$oj%>Orm2+3FFh9Md!-R9AQvW^$g1+PQ^A z{Nt=?Rw9}WZ;Erb@b+w6+Q%X^-*v*L_9x5J=3T$BQeJ)gTvf)1`p-9$yuY$M>-F89 z?R)xLY=DaWx%YP*rTV^J+2_sOc=)8q$Coefnu>4ydTaapy5(>Gb5y-BaSFH_)%!l_ znc=mD4FMUq4U5*ceLCiNI4id)?bp>?o65f3&V7CVsEE#X1vx9>e^clC3h-}YIm;XN zUiJ(Bl7MIX)33Z;GVj6RBku25SGhWCwa78*|G2owcXw?$dzH45@D+v!Pk9p+GiC%x ztt=2w+@;E!VAt5-)n1cqWAjv6tw`@<#s6oK^QH({GM_%vKl=*v_OB`ae^`HKl;3*$ z_ipU!yLsh&->g39+q}6yxA|`F>dn;~c5g1<aQEKL&9`p9z5DH-dD!l0f?_ts29xS8 zvq@N2K2?|*bFVxzAZ)FJ-us__zc1VR^{|`%96Q&0cPrBN_B&O#h+Veca=I|8!2X2P z0rr3w4bu-yOS@tJ>-;m#M_P_=%={-UscH|~e*bN)O<vyiThjJ9wSRYQWIS8FU1qZ9 z%e7xGEELz*tCh;-o2FeL9rM<A&JL02cKc6zPIsm)tLfhI<i>?VbEUuRvSIN(o~N*E z+w>{k>mnCkQtN5G($!(%!@6o)nUd7cS65yXi!`0%E1kL3;m?6Cf6s*N{a2D)zw10V zx}r2Mb7|P02U}*W^_FR})w-^9Wx*wn+pFF_zS+G{Qs)1A-PuRvqwXL5P#^HwIz;_w zjo56ZCbP?KSs6;q?tEpdox}VWOGcDV4wJp`N_W`}{}WQ0x+Pb6_gXJ`{{4Y#l-`G$ zKBolHLq@J!FNS>(W;w;!`2WJq9p4p{SswBiY(L3%KQ%z8W4RtjWM5#--(89s3!-=( zBf8>s<|t3O;y1-5AvP%X(^}V{39iaVS|{9ldFDcSQB;S$`6bbw?2BvTntxqWvQbw1 z&Z?-ua4z%hq&&^#BC9{C`NnwdX<pG#VD|OoLxHG;EB<P*3htkl_}JQjL7*)B1^dT1 z;okio={FLBoBz43sa@t`e_8vF!Jhg4f)y;gW^ggo8A*SC7koJD!nF(WCCZ;Vdsrq% za8DLx|E1O_rnT^uX_LdhpvDj8-#r-_lX|{BY%p2&;(nNN!|XLRKi6ORzwY=t{)4L; zW@TM4{PcDI-E-g0ty}SbVG#T6?7#V<=il$w5B+`n*TJfWJDrBSM|kHvcHi+O%{uvr z)1@ToPQ?~W)rKV%PCYljE&M4s<4wn3&ByHCN_Q{KD3i9|{lHt)V#n5*TlY7AR%mKH zzwzK4(ZzRd>h-5@dAajnN6f_|$Cv8}8Qi+M*Y&pLjotEdA4mIdIM}?pE<?I~Vf$1! zok**t+E*oKZ?Spw`CUGz`m@c^QM`Hno>~X=1hopeK9slpF1yCu%)<Yb+mT;^?cW!* z!$04y{VrLgrN-dIWVG;eQtpnEg|a{2v!+X2nWW~&?ln<(|DKc2zCL`@qHj<hbGWdR zGbC|d`Olv(-@8AbIYXjE_2lx0tr5$%rEq2*<94}YuTfz3P5PE@O4-z{X4Bi1ST)yi zMgNiw_v~5exmD;In_f~Bqi+PO*ylG>OEdOnWb9CRt$aA!!_F+M<CWJB@tFG_rcsyT zAD`pT&#|xdt>ccG_>keo!gW6#TCCr3^Lu3EK5SgNc*DI_k99Md&GW>1qlHz95_vLi z#Y%{~Ta+}E8Y%wF&ivDrIBS-!nNsAtwEBwyC-Zz(9N?F(OA_w%IFse2ap2stGV=v4 zo=SzeWuCQipB)3b3>cRhzv{Kn*In0UJHL0bRa0N!vc4csPZ6!s!nH}0x_h3i+G6N5 zDf^D9z@#sWuKf@wU9fgWp>oDGR+YlP;V*peZxdTAe`ltaZ{orpZ}WYr6V#W6#jvyn z1-o{vxwP5S{#F~0i2LW854TC3O<DHtt~zt5%4E?``3cJ&EaN$M*L&eDk@ZKPICO9@ zE;+-@bxi77T&R}jyGB2a*AAXGriXSigcQm1iiUPr2R3d>DLT6{-)-tQj+aNCz7Pzr zyg5aqIYON`?UtTr?bSqWUQfNJDi3F^n!tPFcTotl>AdC)Cl3wNndjzhvECB0G%Gi6 z(V_j4Q+@WEntfg#a5<t(ax0I7+saghhcOvz+NLU)|5xkoSafuQKuhR@g;#QRxOlDM zS$55>*ye%CWs{9_3)h{}=}13VrFis)r|s*{ycZ`IP7(QAXz0E?^Q_OVqN4{Z4+eI2 zI=S=(^h8c8Ir6EDZNlNBa_U=Z&CBj6Rh{ASei8LM^!lt_qQA<DBNG<31=}4xYnbT% zXGw8Pdho5PA|6q_;JvLkqVr#;tewqrMn|=?bi-m5(>D_;?DB&vHaWZWvaKuYkzhQ! z?YHkGcI_AaZ!#Z!Ir*5OzTw8%>oaHi+4;&dZnaT9(7mfpOkt+=SqrE6YBQ%>GSB_` zL_lfwXODA!^OpwNxTZ!;cyV}D-{wN0$<ohDQ(`}|9WqHyUAQ-+FEQ`mDaN^NJ~=0} zoW2UCKRJDk|Hk%N@?2&mJNjR~yVI>(w7HZ;F}>mb!GmY`qh}tghzw`kX1+5kQ<W+5 zRe@!*74y<aw@)IHSBk%`nxwptJv{mP{0E=gB2WL4%s$%m*f5uO_RcpqKBZlovFp3D zLc@|+R=qQR3{#_ePJU`i)ZMcwK-sceEAeOdhsl?CQ&?XIsabJG@LtUbE=jw2=WuHH z<(tnm<R5kK3t4nNexFqA6mz3#OQQOmT34THO*{K#-|~ft!F!ZW-4!?3JmY!TdDD67 z?VDP4bvPprSw7cxno|(4pW)jKN9RHV{X1742TeVE%h)bgz1Qc>%4=uNc^Tcio@{!C z=gzNJX=!;Mosv#Y{?BDq*d!3V)naCUi+yLfhOau4`Md=6#TK7;vlM=kU_BAPyj(v2 zja<BoSj4WCCvV4Yn7PVl+kvHpQzk^cn7;Lzw(s%dMQ5|V%*j1AVV&d?Z?%G>J`DLu z$8Al0+Yh`edbWhkCPOwXZ2N($7TVh{8J8@+uchrd*Ei%{*SV5SKTfS<oX_-Ew<DzS zgO9;#kqcQ@^t!al=9(9(F4!06^M7NjNucz!nfE+4b7uaWW2G8qHSNgawLSM2YW<u# z>$vJ!<I|akS4`CUGEGS89DAz=yRh*7LLFzX9fFNaRq4Bu7pxN6u_P=tV~LlHj?#8d z<qwtrmHtlry{WMB<142*M;Ff)%XM&aO<OYalV|<XC0TyfZAqeA88k93{qml?{ObeB zD9M>hky<glhj+R0T-+UU$1D5qrxFjPGXmC@9uqGw&XW%-b(j<<x={S~nTNaha+Ozy z9&X(<`9{_eW0PaMr-W~uHT%#`hiBOnZKm!%cuC`S`yVw+>4*l&C58J6Gje5Y1P&%C z1za|mY#Wq$k$K;;udRu(?nW!;$8_I%dH4J}W<#Dm5(!nCW`#FZc=9E(%(!&AI;^-Q z<pOWRN9FgOE8mK}^3d*|&-KN$uXe|ysh4F|F_>@2$X@Yh@9&V9Idj%6mdY_xba5!o zDc!~&mHQ?Bc$S~8UeOGZ?8(L&AGU;Z3w;)3(ulJPlF|$lbLQH~=<e>)z1Z|5ld|W& z$2E19J*WO}o3;H~n8n=Olafat?7EY(>#A1@)1h<!BjWd6(CT`W6ewx)(#XkTX4M3l zOW)VJTXPj?C?A>NY;n-pzJ?=C-1*)7a+S>*A}tKNS}#3kWMtTuWt5XQ@$$DzyKkM+ z|0cqI!}I>jYuj${KPzeqD|vSA*h3Eip{*q*y~}^OIfl1fNPBtOO^i9<!}SZ?YmV7p zoMxiymCha<6f`X~?a`<C2baHldG+H3r~h+gO7;Eq&hh`3e6aiKnp5I7fow5<g=Hmq zzi~x()_FbjJ)zg#dfeudW7?w+79LzI*McqDeeT`gJZDwHyW^F*$>nB;m$WdyUA*h* z3RnB?S-EQ}p6Slt!M*f?f>|+({=O=Sjm{rLP8?=oeXp}lL2SW)hm3*`wV5@)Kd?PK z@T*nyKP&Su?(pa0J62CVa=b<2s)`@C?@Etg&Bd%1{Cn;{Q~9aX`OSH9X~QC?RVs=3 z3q8ehUVZ#Hal3K*McLlzo_^`u4g@dkd?<Nd?cbv<j4P8ZL%Gr$eYg9+`KrU?EyNg? zXtmpQmUpN@P{GOk&Bimrs*b0hJUZiw!`sxh_G{S^j$+lC*?H$$LVRR@>-vO9RQ_+O zSodS@^JCBSSc9c|<V~bR?%X*xv#jfx!o=lWdzm;gIP!iedMd3AdQuw1lW>5s{>0y+ zw`~fZ-gg)r_C)i?=QBU>^x0vd`;o(kBl}b1)QpEVTP{5JU-L}dSzv$n=^uMm8uXS- z2)Z$?*6Fp|58M0u5)y)xf9H$*%i?g~8s7amZo5ij`E;*GI!#Uwr)`%|HOi{K%d+|E zMpFyZ<5wPpbgQX<GCmL@Gjq{WAvfy<?&rD}%RLX)3!37_lIrO?!6oO^i&<SWqupC$ z%Y9Syt=EJo{WWsjXu{3#yKL#r=hCre$tAa0zEAl$r|8Dzf`t+1TT}LI|8(Zyc^Rq4 z{vSU`-%|PKEuwU5t>OpyTCPX`bIUh<jK9S`xAf2SP@4_+rpf>J-zeD7>Yr52E3lO_ zaKFg*6|Hxs@0hxUiPv&@4{w^t(R^9M9@z<cx=A;-i)|2=Z+g_XXU394%?T%$Fj=ng zR=WS`+OHU=hPBBy^B+A?R5pC%yG!`!0ux;qeT&qLN#_@GcJ52`{%*^8<ka(c&wc$j zzV*NT;_;B(eAh$nbIIX3tj7gBxMu__wQoMdle|m)W6S09q3M&eeaw4rS6+U>_A2s; zm%Vv@wEfZkpnr#7t@QsRe)@lI<iGdwZ`M5h?=|o0iT}SMEZ3_Cbl-7)&emBcrn#kG zm@jGG-Q)MKcOCQ&<5Bn`>eHj;Z{C^jd{kr7Ccfg>AM^GqMqhcNeq_y;N0P5z3a`8M zIX8b&&C%yv?r~GZ`kf5ib|_aEyY+mSld{T7v0=LU-+4b4)fY|K=ka;6@K63n7k<?- z<nLw-)6GaK{#)+ybzk@72S4_-Id#udEIM#>WmBSa+oX`qGb$KQFW@|X<X=t3+xKtZ zI(Y4go~5#P*|QSQ%bZ%*ivEY%z4~iE>!t2V@A9PZYn)t9>eKVXC;h*D`}f>$QUBII zitPPk{^8BJk55(KIiA|_pwoPI)G7VLFaLaf#VWQVbjy)qe~(mYwiOo?pS@r2Q=K4u z?vhmU`#a9By^Z&NkF2bZd80dz`?>bS_NssWm&=4ys~5gaVEljIeNFtM|8txFHk<yB zKe}1!U%uE|tLk5>Z1!p_o@J$T{FOvmpZ|Ft^etuM!%1za$}2aDN$GoJY|vHz_G@;V zau>VnhlL_@I;9_aY_&0Yz?;wM7|mMb8y&W2F8@^L&2o<OUSFJ`diRck^oE(ncDnN_ z*UicMv~%IBg01J5-O0JsnX#j0*0Sm^lNqi#`P9p9mVb6yDt(9jvg^M*YhPXK`JeXp z&%864ufCrV{UP=v>_<j#lf>*Ne=8?l-mIx6oUYHecJJILqUT;(aL>J9zhzzDuVt?K z)wK)17ufA?WVwCkE9)H23HPR+U_XB4{LCw}T9deiB$xjFdF#YV5&f5MmMz$%KK)RI z$kYj(^V27u751HLwP4?BC%##hS3K(~8Xc}}z2L-_tW#y8Zd6>AuypCXOFB=T%ujmk zsAIkEe|YIUvm)u%$)UoV8S_OvZwTmgJ~?>0P3z{fF6YZ1ZTG0PgnUk&#;UsM^TSB4 zSr#)~Uav4%qGqTRmH+PU@^YQWs?(3<F&+?F<9K_HnaicRiSt-wJ==U1oa^#<-L9-# zakXOsU(Zv=tvpLS^{0BzuMV7)9=tVC)o1qC(6;Q=|7+gujh5}N`|tlg&p(6hBP$OB z>+k=uTi#B8yMON6xnKX)i=KaVuD<kE$Dg=UG4t=p8};ncjO^0<skHB=lI6X^UFCY~ zRqo&1wC&eSfwi+Xs%<Ul+q0)MA^6Fo3iH?3w@tn3@M8Mii`NpiCM=FR6X3{xrRFIc zcWacs@5S{Gd5_6tw*3uS^<$?gYo{D{6yLI~KMt-uU$m&Pqcpnd!K=ICOPXV@q$ypL zKlH}rOVi8^U#*W!zdUQpiXAJp4v1uN?S1e)@J;W@GwIo{zm>TPKXdtZW$za?y_hY& zTHNb>87^%J7F>1WXmH>AeQKdQr*p5%ZH{Z*aKr1-N(+-uRSTpNo?R|#o7tL>*(}@c zC~?wS?%h((RL$E04=(1k8SXat`ugh3kMVcjIj;Y2+{U_-O}v;*_tSry8`-Cy*IU2+ zyY=7xuIE3${_pDAyXKI%Rl|k4>vHn0R)ubNA8ifeEziBV=~Yju%fH;eQHw6DluKDU zYsZc>eI7sMPhWP~s2sA}Qe`(Q$=vE?vZ%Cr;hTH+oR-X3ZWDQJ(kZRGbx*DMUUyIN zt9w?a5-RjWr99%|5^cYQ`?Ai99}ze?^D*m@sqgPZ#xE7!f1vqxO8u5U%^gC|Ke63% z>-(FZxbyrxr~mW6HP-wut}oBm{U82ukHP=>pM>h(b}TMBVmRsHsgAGOf=^m)_j_fY z<FtIruyBgPs=~Il_j$BT{Vp!5$^TvUK;eeDZ}!}FWpR}Z<<9jUe7E(Lr8D{XEJd~3 zq9b*)Yp1PW`^Y=~YTNP-=4ET%7JqH~@#rl>e8$a`Yw2gdKQerswQt75Z#C9oeZut` z<_<AWkM_J-vR-Q1k`+>0CfP5z(-yS#dcmDerSsEfMeWsl;lo{!SNk+gA>Tal-l;_! z1nMhQU7k!f+^%Q$>OA|w8B4Xln;NIz^7+bLnV!6$siQL|>Q!#vCh<DnS*N-CK8Hu` zRGpURu=~;6i)QAR1vkAvs<I->bJN939H&#omvYTw$ZUN&H{4>T#7&7Cll-)wwVWxP z=)bqCbk{w(>zi%=9k&1V_kT&r=2?ILe>)gg_J9Ak|B+`mANs-H7S`a)d)x8J3O?q* zlD+Axc3z)+q}$@tqYS&&d-u<~dr0jUadtkdXUk+2zh3#g{P9M0=ljC?FYIp2>sQu( z==Q_Biq$K2I-|mDnJ>OK=C5b6&U~`=-bDM$imE~zTbUY;-rJ|5$z^5rA%0a*@b2q@ zXU(^M`Z7o6xBa4G@xm=P=IVa_v;XqDH)SdR@1M)7&ix;M^7ElL|0`xr_p=BNQhcBp zy;zhdbK=7&=?dRl4nLFougaJ2d6dkzE2?<S=`Ak&>6S}^grbeldF#knRLU*BzfbzO zQ-aUjcP>E(_|pXxe)rANJ6g^XyZM8>#{|i(6Z4f~vX#5<NT+wPu})21f5T}zM|bOT zzI!1y&-O2ooz**Qv(BeX)y%Np+CFvly!k=<cep02z4XxD?0HD}L4>!F4p*M+#n};) z&)q0}_xPs^pT1l2D}m*<=Xd&B*LK(bSYy7{+skb2_p&$N6ra>3ci$7f&Z?cAlcdQN z-j(=taVztbYYyu*w0|TWO|Guamv=nkymIHq6X_XO&doN6kY01s<SEm>$|J8#Ypv&* za$Y{z%y-EB2J^$!2XA}CyK%iNOJCnB^04jIt~A3Ix65(QW4%}MFK!Jk>7U{`Z_&rV z=${!Kr@Z5ymd<$6`b>Mr_H^N&&k8L<Z{44k77|nx=#hNg-Dl#H@QzNQl}VS2kGx&* zb>W5UsTJ?ps$R|u_kMj^e+$D$<K6q(#Wp-RIDgNYk2VwDdl{$JpPadAPvDJ1ikipN z%g;p#|M66BJD}bez)~@3D%)yfagV6h2p{)CCgnLxpRTF6l_r02f%V~D!JXF|&d%*s zSu-(1R7rPBC12ytQ)i;N-o)(oZkFeh>1}L3<aXinTA>RsXR7;YrADzbv8ZsZ%v24E zGk*~Dnj<QGdd?B$TZ!))6PJEfDG4)np3%Bb`sAjm)sc@4eyq!qKWg&j@b2XgMdFl2 z_1uE^-)VeGz9h1;w8hFGOHMyX&bdRl@9z9_nR!*GN}u>!Zp*3FUb>)jVwTOU#V18? z3&cJD5x}w4m@C=Rs$g-ac!Jb#ft!7|%P$HjuBwvgsfaqEy{!GphOb4&Gudk23kscF z^>|~1gYSj|{{%B`g#2*n49l`yn0O`O(<y;fS|U0uYS$H~YO7p3a`E)%tc6UHGR^ZR z&I!@IIqg%slZsQde42=Ltm@GNjUD-p(E`?{D>oi*+S#n#BciP&=kL){zRo^XSz$+& z&ID2S*hjz5^pzhx`1#ZPof9k{ep%UR{8n|ofW(6J&vRKf)jrTVRHu;1AyVJ!zkXTo zH51Ksee6@VKbVwbnKad;({JHk-Q31tm2H~^45qI?pqtU2S-=={UutK<$!@!!Jr$N) z5*Iai-pv#1b?RIBW$o9^-kVJ>^HfbctLm5#`TY*Zq^fhr;&K+o#U8%tsU>c7^m$^B z)sHPwTRGhr1GeNHEr|9#aa1nnX!6V4%cV=q<6G{p*txPbc+cb~Gwd@iADH~U=;=ol znaJO7%g$YzHu+w$?*!3mw(8dra{Ld~Zs>2e{G_xpd5<;w?Hh`1alfR_=bteDq8U8X zRQ6`SuU%+z9e=cux3{!cd-kn3xh~hqf~j2EqJ~=Q_==WvrtjvQcGNUGe)G3ol7Z{) ztyV~26kEsm-TbxgtZff@ni3b<e>GVmD(|^Tn)_um?*=xrO?NFHe=yuo_t7n^_}^*8 zf8Uv%78=iwJUj8K!++EK?e!P)m+w$i-Q#Ghaq)@jxAocg5_01A%Vjm5erKF9Nj7Bl zG{uugSk6C@`<S)bQuppbu@6fY1<S-ZdgNTNUcB7wsddX^@xKlo5jF}*A4B_}h#9tA z%8fe9`C+2wuZxcLx98uyUlQ}<m}~1s(}hXG>aW;XUu`>hP`4)MXrpcKam6L)pT+%N zvHX82_rz5XSG=5m{<NLW>&>!vkA@j9(%xyQk)n2NkK@%J#syrLTj&37oXja1>$?5R zg#vy)zBOwn{%&x&xFo6kPoKr@i%M0WH+N_;Gilp*+1&hM;}V|8QzaKynY}o-x;1$H zoeyoo`scSSzQ0NBE@vKVYgN9Xi)e!(tApFW&3P6}dnaGX;`N%^`OQc1tl0#fgDe8M z+OwX9OzT(IIBk?)rxfz$E>DxpwSQ4>m}ecFRx;zFWZ&zO854i4IGT9OOSj!giBs}v zs*dQ>w?f^~ivOml`EV*KpWnxQ!KdO}q{XEVENM9rFMfo+>ev>UrEz7-;)9}@>+23o zy}PD@Ex|cZ``1UlrFwTBAIoYpzkN_iqr91Y>#2|bo_yL<T~<_E^5@^HW))Ebml;nV zTrjyPe6}yiw7~39Tf%46I~h;zoq5ldRu+7AMbM02;)hT3H$Q%O-+%pY@#fR7Kd;{W z{W!C3!OGv;^s@Ua>*wqFtv}bdzTdBFw{gG}lfSc8c}MkXGyXXo_<d6}M`l;2@)B0L z%0RgUuCGs{S6k2TeaIxV(`AViPw%XQ@!DQ2GJXAx$uR}<&AB%;Z4*iMGOWGDcXy`f zwOP&2jXp9Q)7;Yi?C-AovV8UXBxGX$mlRd4aaHFoUUhkb$Gk5UuXoS+u>4!bBUT=Z zO{Kv~PFpu$ZCcy(LtXKpa5YEAiu;Y#v;Rib=r&wAZ*lt5`MtlVTyJ7xYzv8KnfC7G z%cJM7A5Z^#y8cO$+T_QXjdqh)?vQ$Bpivh%V`Iy7zhedZAI|$6z4>vv!lUO&MeFC@ z-ka7GIpMA3{(sk`mQ1hx{L#|l-TZl9c1>3oe||k(++E5m<H)|h3WlfeEGx2H=y34P z)+gFk=POpenb=-bn%y9s8msMSI^p^ji7gt2DxY|qs+NZzKK=M$>Gu2k-F8d<ZCR#O z&g6J{o?3mk-@#eu&h6T<zW>GcZSrRiymYnt+I#BHJ0CNrpXPHXZK#-K`fY7#rIpSt zdD;2p_vg#SpH`h(eN=tNhYK8s+Ae*_+;)lAXQ@mH$C}sw9{f;m(Ld5^x3IoS{cr#A z=2Hj!l)sCu@xRzC{dLbv37w8-vppG>m-jr=oqqC({CkNB9B*IdAO9b*MENh*lx563 z2lwi2xN{(3r-4a{_Tg(+7aY8E?VU?qWC8o~sSjo6=;_=^JZ$?Z&2_@OxS9hwCpw<q zypVL7|Gk}3$LEx_%NE}|`txTYe@b7SY3i?6g_b){mzI|pt-11eqPX?ZxoKZGqkdoE zzGD~l`ChuSfxrK`e#6t2KmCg(cE+8OOe#rm=2~Ch+NhbQ?|-iE|LaG4Sk9`*USW9u zg-`f<W<`3^|KAt(T3PL6*}%K-=`4NroVxcN&9P;x9WHK8-?pCpS@i29wxp#TQ|`Sy z`SIt|uQxe^uJyMce%GFS+11e~dVb}>nbOC<&5ce|<+CqiKkn}EV7d5RWtX?_+3z0g zbiA$^Ez|e*gsfsw`;Lpt@A;;<&y#DjxvX)LP2Q$v)8d{@@w1o4zBqE>(Y*RI3qN;1 zt9~_Cbh_g9v&LzE*G$Uqa=wz;#^jOGZd|?Uj*LolGgt2HjU7RY*&9ygr8s6>?afv< z{XB^~ZLZTa;VZLj4|TRajBM*V@`F2AZF%O-^g}noEa%+3m}B?W{bBDL*Tc0dKgSr} z&W&AOY;$DR<hQNIzl43rxm1>Kn(@EaxA@tkI={okOQtL?s8=spUeu@_Kg;h~YU5`8 z3f{XnHm)`bpJ2vlkzG~(_Nc)N_0^TEDQ6b>EOU3*BWUyV?~T9tCCuJW-S>u_bxcgu ze|+b4^Ui8f?Y`QInU`m8_}KL6`@7)6k14;W7<IH=m0A4KCS&WxdfAg(?-Vq8tHj+F zDfm=wSaXO)Pj)%)y{o(Y=13KOPs*!&WxIp%(mIhhm!8{SJ*R)P?{(4)rZZW6k%u=F zMJ&_j%RXy-ly!I7EbpXQ+4FW<&9ih^Z^L`JrzL-DvG2;)yKXGw*g7l!n&BpyW0IcA z)roV2^O9EGTxs_$(Q1xdqZ7~eYd6i891Bv}wQt_;2Vd{lJo$BR?Q0v$eZLKP-X}+{ zUvNJw=1Wk0_l`ij*P?urmzAFTomjB?^`&`!g%0OazsxocdJ$%N%eC*<&eME4EE$zE zZZ53jy{4__rM=fbi(#ioYN&mK*Y@0x|F^h>x}_J0?LKl_&7~}k<)3hr>cu;24I0vS z{M@{+E;Q%i-y?=spWgb~I#0~-op*B5&1<45M>!nMT<7zD*sE|Y>*s7or?Z>PTOyu{ zS6Hs#*kb>1?*j2+!#3+@UduS&Z##EF|ES6@6~7g)Uirwe2b#}M+~cd|8NL7P-4~pi zEXI~PJfa;tW~yb2D$SaGY8uBT(dhhy*8Q9B83<YaxmdA=#V>*JiNJGTuQW%F_nyZ+ zzlv2%Ui~NH%y!#bvmFYiKB=lGG<_i(AJ6Nz#eL5iO{0w(GIi!&F5l~qY_xYw`SSQg zccRJ-{UG@Q=OW+RCc8wER`GsfW->pi`lD)}@1NsccWS$3PKb)9m}&p$IF%g6`~B#S zRz2xzRayHM)(Ov#=H#fEJWM+MDJx*x{u$2B=M2ABn9VlZY{h5u%lTc8g}T{^&aTDR zi!bSR^@Yk5J^!+!;qJt(yM8Us4Lv{gO^<Q970=x2ay4V=Ngtz~1Jq{C?)Y?d&e^A5 zBM;lyAMc#A>AhDlZ}Cq@!;2~Ad+)rAziQ~5x85}1z-Jk~71i}CT|O9{*}DE_L*|aH ziw<sU?G5Ie!}Yp2GI}1{Ij`p?H%~3?&oJ`U`CH<4IoVU&eWRv#N$h90b;<hLM*f$o zw$89gDNH|nD%|+kbfY8cahsHaH7ADnw`C;xi$*Vh^iu1IUfP`24LpS=FWc5#+O}Sz z>}+L|BgdLo4;I<ATXme}H{5W=;*&yQ-^qqbeZiX{IcF-lcjgHO8ZjR)H(WiZJTr9W zzrxLTSf0<@o^dWp=n7Z!j2+7Pc9vVt-SL#LojLd8k$d~^1oLl^^sG~rZ#lcd(bc$Z z*7B$f&f^anQaocKUM#dx51X)~@Jo5^!SgTl^>@7fxy?LKsJCLyv@3HbHa@6QVzvCB z^^lJvG<9Lc<UaF24yV|xn}0eU&I<H6qB!eU&$%Bz9`eUjFov)Bc(I?O-IKRz|M88| zGCS>lnHX8fondas?o?!s<CVR=erfI{0dwyj7x_z7I=eNmO3f0RfAP;kXZ7Y3_4li- z?j`*3@L8U{GVRKj2(!tuvu#2@1xP>Pzgm(rC2jqZUnjo1ex6Wl`q_v>-)2kBt<OS> zAAMf9sIp+fHreLRz)PklU-}zPyZmdBLuS&f^~&#cu1g0z5O^=}<JQaDst;$s-lnCx z^tVdl=P%N)!td=>=G91Qe}42Im&csf6LOxIPCPmH#8bw2KC{P7JY88aX53$xyS7ea zw)`SAV@F-L;%2Gxx{BoAnVz4b7it$6pZWXq?EFs;Z6D2Gxy2-tf0W;^xaXh4ZnL5< zF+2OqmfyX1|L)dXZ_A!1tY`jz=<vV0FH6eSoO^fh-MM=Q%c|4QXXTfdZQs6s<1N#^ z;NNE+?szcU?7)qa+TyJbb>8nb(O4a(F#Y=hrW?N!7mNGNS9+gkv-zI;LR+WPpXQbd zS?I2Q{reh&-H~etT8#_KuiTRO*8gvF<txiPf!$|?Bcd|YUnxzy{I<MWzJK=Zwcn2M zM`!rv2KYVuH*FTHQu>>-0{k=G^_JZ5Rl1XKd&-h80;TO~v+q3!oh`)HE4Ju~*y1NC z$-KNrf^ScZTFAp$pR1Z`v@!FO3CkzmzJ*N_WqU8}?VI6YvG*Cn)=iqNt+D6y9<TaV za%<Q8`#S;~zMR?dv^CoE*dynhU3UboZszry_hMbOad>;m*3Y-5b1YNpv@!YDw!ZL3 za^H=aI|M6wIB(lO_%W^jN5$F)AK4jnvnR7}|MKliZ=>C=)88FZxq`1BNT|yATI0fy zS90logRlJG-xsXhH*a?|X0p4rLREULrAM-F(Epv+1irqxckb^(>&<BkO}EL%RJ?bc zW-F!G)z0($@=xAF4<z0i<sIhO&SskY``*?=(SOQ04$7>l+vMdT{;pX%!d!1v%k7$9 za(}zm%kJHr#D7F<&ylwi^PEF&G`*GjW4ZZn^^faY=Njh9H_Etiv@TIOq@TNvHQJi# zaivAG^NQtq%yt{M6fgg=bNZF#Z+6^E`RJ{<OvsmI<6rA?H@|<zdlMG<8P{I-y_9*{ zOK*Y7-I}9)MsquDi;wjjUh%Wfs<ARO@ALBT1#v$YU;n>Cb()-^&zsCt)eR2+U%%P* zUFC0nb$R~U|7)K__Wle1JLBQniLZ97yeeD$=7r;0+iT^YK4^XQJb7Wk#gD6I{J!$+ zZw@;fL(s=V&-@;W`0_k|wYX&B9E&CERmE+*{@Kr0O4)rf^UXDrBKbW9a^@#J(;^)M zw*0?;*M7o}|L@*?J2&h9`bUwr|I<TCTRY#Zf9N}FdF0^=!Lth|)q1r&nJ~vNZq15f zxpRA#&HH-hnbPeb-uY7!?7050cIwQ@k=$@8)2C@k-KB!7Y){)n7&}jITbbpQpT+n@ z?37oh;s>K(fr_RXf0%CXIk53t`G@)UQY`kjI!x|Odo0==a8)fc%YAcNh4$0ihdz7C ze%ZZfZwrHQ*<Vj>x%}S4ALR7JT=I(T_IAG!e6sbSy_x%u4MMq*4?6_y4xO%eXR*$@ z$h|kD>{{-OlUxN?JEr`;esn9xTv0V^-6Qvk47b+L-rf0V!6*Mqsul^t(@!|~Oe%Qt z*tH|rRPXq@qhgLhH@w2ui>s&p-{01Bwq|4AxANF6Vk}(OD)sjq?Q9JF?s1Q8o!NR` z$#%vc2PD2On9e@)*=@s%w}j2y7WY49tx~RJDG2RZ)~vl=c3PLZSl@^K6^2qT>-Q_| z+;o65VBf#(mmP1-+w(vF{g&&$?rY7v`l9~muK7zQ+-Z<4)(-RzIGHrJW!qhqE4#0G z`jkv!64p;;$@she>-5l9`fu*MI9B%V@a@}cyfexaKe}=r=$Sv6S@fp<nt#H4N8^?p zGGw<g)sb!v<~vw?rRLz2XcMk-In{Y0?5j<G-4rcbX?gicfXYtSk9`?TDP30%3UIaL z=p-9DNr@})UTw&pt&?=Z^~2=1KRuFl8V?;xP|)UNNn(nsEK!b{q5P_Cw)Yk3MXxPB zyf)fX-pq7uLU`yKL-C`@CYxjLZ%)1!J)t_%yz|rFP=^^aVxz0Y)o;H)v~oZ1@#X&i zbL%c^=-)Jd>YQ;mk@xJktBQ3qW<)q$d%vf;D6&RJ-*?Nt^_#B8Pu;-Dx4`7xlU~`= zhOx8ODVs+YOb^&NW%`73k(W<9tvKm+Dl;m+<$ehB%A{Ra&5B)^xu2UHJudfe5!dvE zIrC>vUi5p@m5J&OvvhtOaL5vTbD{Zep@$K>dBp~~2W5&oE*yBhTte4r<<#2-oALtL z9|V4W_Ez`MzNy8FuVpozJiY7gAM<PxFWrO9yY{%n#yvi9rq?{5k<}vNy!4CY%?npO z>TzCO_(xJEea{0vCWfWC8rlyQC0V|B{XfG>QgFYz<n@w3kNBuZb06L4-1AcBnZZSu zyW5N|#+hENdEchoEwuH|2fi-vrz?NHl2QrtlSwJ<+ncsKG{*Jip%eCT1>I@f>>nFW zdcBEr;fU~%oO&_-n2gq!lI*|V>!Z&`bDweYU9$D;vzInYb{C}clnc0B`~T<se#VLH zTuq7w-;J*Y-&Sv2&-rHYG}Arbmj#>XRB{|B-|{x8tgTS7e8KW>?_NIrc%X^HI&<xO ze?9vso#{)z{*~5azxeax`I~pv-~S)YTsW;nYQ1u~(78L=9dS19!5`a}i^bJEJGy(D zRIiAVT+6=)KQ5m<8d}H~Rgw1aj^ymK(VZ_3{r+abw#x6BkK4z!%i~|(<nO+{mvzTf zmgrf2>sgE|&zfl6c+mSI*y~=e$C8eK>E81-Z8}BTCj7J!k;pUsIBij6aFA$vj%G^K z_sDhw4$-@-_?*vVRxGfRS~+t{=y82Fk+Z>VbGGg5*b!RUKEMBh@rBhZ?<qtY+1wPJ z;Lh^&S)FFL((zmT=DRXC)U-bHVVuj(C?KTQV;;F<M^OFAyh^*!+n+iny!>Xj`<0>g zM8~74VS>&aydA6U`fKYdPMK}JXn23V!>p^5UoU?AJ^Yu-1WyO&4_osidZTamTlP%Y z`}@S+na|ahPgyrD{8U+-TlT>Z`Vyi+=?^^KZt1+-W5(eAOGHKBJX?o}=cF|uD)ZSz z8-MQ*(s|-u`^dz8=Cuu~3X7j<PM9UF5q$HNm*#(drw=n5mLL1_@7Kva6>ls<)~VM$ zzCDRGV%k-K%|{QE7JcP;eaJzxsx;f>VQxs)$~`i3u58Nbxfq!FRpdp5cSm~6h2Xm@ zXMNuN_><{#@inuy?A-91$9MXfJ2BgutxhcLlQ|b!b-}Ol=i-IpGei!{oUpo_tWg!4 zxFdD*y>Np&p{?R(Z|Yf<<6JM4EZ#TYzCSukXA+m{$Hs*&jx`Uo7B=2IDzNo>BTt%N zN5ZwBz<v+q$UVkaIyS24C44{aC7F8ZZqW6Jr47d_&radXopbrdrDhrNZ?RktXEGcN zRWAM{{#uLm&e{0&Y!`E;&TiYZTVu=7xkom2T~+zb!58)6;B{B|^pCezM@VkA4Snfy z_nT66l`5aew*Nu_QaP%kZx)K&U)z|`wQc6<h2p~6Z<LlyO8#0U8IqKd9U$QGEL1X4 z();Q(MMdvj6aERVuhNuX{5yWbwbikIkNY3|`~U8_#+v`x>FMdR|5H`Zzux)({N3N` zeU4V27pcWGZ1vQhw$u7NQ|{!jX(ELRo@U>#apo@BY`OB3chZa^Jr0-C-sj%4-qrsc z79QQ^nB)3uS0vM#O}xq9XZF;Km#w_Gqda$6@qyzJD>w_|&o0tC@m!^}HPqwhn_u4^ zSuHx$y=&r*NgZ4r|Kc+ZSR4NE3%N74ZQ@(_A-!_SFMHE&J+ZIWwV%HJKj*hw`Dpzc znK#?7f0PgVw8r6oee>V!uUVUZMezhrU%Y2k*Moi8U;m`8c<#}V7&zPU<ubXOk-1%k zO7bg{KWo<C(9t|;x$^#mcP0JCg|i=N7S8B2?(0!HRm8Q(Z>7}t&J|JFT3W8IleY4i znIGtq`k!OcG0m_@)^p*6sWz-nB{No8o$3kL9b0d;?fi4$Sx;SFMQ_i}F|l~jqr2yp z*w^lsiEJ&5{2!ja4b>Olnm)bk;)?G4LvFe?A1>^BEqvSfp>DAA_V;Zm`yU%{EZ!Hw zUvqc$q)XEEDgIkOpNQVFAR+6>Bb%)s+NHPj?mD;T)|1O$3WM)1KC~k7+Po~C%X<n# z?g@4J?oT;1#in$ti00JGlam<F=LICq)tl<%{`B4M;z>8JT#7onAT(n~)zNL5Cm(%W z#GLkgX3i!dz2hF6J5H*m@<$4Li7xI4Qh7Gpd{v}YhD>{)M2-F7gXOcz^B%YrWYkt& zdAmGK(Bnf!<>vRvZ`jY@XiYtSO*!Ovql`!1losARjlbrv1e7xp7nooA!MZW%l$-KI z>$`b--Tzh|oI63uvVYyIv(Jilco^3eBz*9EH_bFUQZ#zuk^*NB#@R1|PutA)*(I^) z%bdem0s4E|+W0(QXMWrg8q2#uPr&MU8C&T>m1Kd98Y{RBn;TZu$G-R3H*IBb=gxD= z{uX*(g2g+gKKS=x_mBT|?EiO9Jv8BMgMwForw+5gjvt?<8~c7__`EUh;%m{^%U#dR zjoi35M}#*lHS}7{aN>``-?RmJPxL;#-?8+stWH**j^=_tht9pPu2tDw_hGTk|ATeK zzBgW6D`E+G@c-()oA;*v*?;Ty>p%LdE5i!@DXS?T-%{FAmhw<ISWP5o?}g{VTV}4g z8FAIU_+NJ@<Lo1yu`}33p8mgmd-C=A<(tp_-##nd^xynRjE!sx%bp#RQC5!M74j>6 z<KoZuU3VuMb9t`NnYgJ^GA?K8g2;`*(f`y=SnS(obEWCQE&Uih&7c2&9)0?8gX!-% zr$3yTU-NJOUAq?^KmS|(W`BDZv`)gge`c-tTaojU*MkdLSd(2;?*6_Z8x!^X?&jo8 zZdJ+Fv$if+_~rHT#|J+=c{E4gq0)BB%WuC|3Eh1;MSDx(lioGU3-a!=KU8k9=!rS) z_P>AHCh3K|#<!l@O}J#}UH)%ggsKj^Cy)J}-~6xDkJ#Kz$YJMmiEIAAyiT-z`)2nH zjd}jd|4n|{ldHcWZ(@j3{NwU#HXjt{v#nwXJe&O5j7$Am;EOxEFIvC;Qq=K!;oWc6 z56*luDV?PvbN{#azps3y)0wXH-{~};@6hXQ{p0$bS4Cf|SZ;|;s$FL~@9Z+eTYv2B z?6$qp;F51_&zm^e{d(tirs~&>8>bm`-MpJtbHku9=AA&T-mC|1(bCfPe-gfa6mkAm z#_^KD=0hRR!=;Sjd<$g$Sm(!Z>@h!d%TnqKzkQ0zj}x2UGaWIud9EX~^AG2N)Jqp` zv`rKE?Jecx;j6905a_!m(&yo>8lRxklcnN(q*|H<d8Bx+%-bTlsI#tT&rP1ce_xzE z)-KSqbDGA-OBcADjs$aVs`yd5^7ft^uXmj9<$uSsn2kHZ<?ZEymV(bI6L(C@U^4VN zP=9ac&ug+;z1}9XPd-|@Jn7P+|G%zg{o=Y`t<TVVtWa@NX|_X_s&~!eZfA+4h5+-5 ziFUU*u0>`{%xJPnu}S!FiD$*k^uO{6hS!ezUwe8yd3Al^m-j2u0$o1nwrqNlDOKg+ zbv#*5=l?NIrNtb+oD3)V*k5`jeDsVs!O^`fd*h0Qn+>DXJ)hLq#4c2kVO_eovcb7W zefk4o`%_VSrL?PWy<ERo;5$z+zvbHIn059uk4frXpY0Rl=i4Tl@o>f`{gw$=gxfA} zGR>2FwAJ9`TAw{eZZZ!x1qVFo`nGLTdf$WQPT7Y)CNi1+y(2qk{+xP?EgAiX_s?I( zGtDJ?*5O))2kRfo$k+ELPJSLx*mk|aoo|n_I0uu(9S(2#BbVHZ*}09)D?ThTaF7>_ z{n+(^?fUv;c7-W9XWRm$`RDcK{ysX}`rPa5PJ0i2+RIyOU&A6<R$`}OZL737QN@Ep z@tsKIin9_IrDFG_9{#%BB!{d0#d6=pu1{|4yShbz?cBBV9#M(sgmy^iOE0Zu<Yu_4 zvTQw*j+4p?N1-)2w_bgcG~R8zrBE{IWveT9w3$QF9Y*b>X(e)*-#VZCtNZ@qjmqAG z{~piYzQ<unr-jcFe>ur6L9R7v8GohP8Dm!e-}uqGY_F4Wf}GM<?IRQaB^_LN_TRdz zGPztQt|uuAbK3Fi>WeGhOqeBA6EHJ^U2)+?ji3X2v~rd;&JDirJhys&(=)TRt}4A# zy*CMc4O++KCI0O2Nk-K}>yPYhJ>&IeLFlxk550-9vkbl(71Zqcn`yR~^VfVyse;SR z@hZ%B`|r=+ozeYq@64=QM+!F=r%gP)sMSlk^GEXH|B9-!c~ni;)L+UFIjeTNQ6aRP z>*Dj-zG5r)O*yh@R`@i|g^OP%?=UM;JIm;zb7JkSBZm!^@~*bjRedcy%VWypaCZ*x z8IQuvN@Mz#*Ka>?ry^tSokwRE&wZzU`RolFwsj1%x0hc#vX8ymmnGV;y6yFby^)I_ z^=)8e>q>FYuy2twwA&Hba+UYP!3`a=TJ(Q5nPtwE`52aHrhiLgPKUv6AEnx@ZVSDy zr0<E&c=FkO%|Rtwn{RF<)4fd0^ZZvO%=?(QXhYzFq}7FTeRu3;^8Y+#Fjseud(T<k zspZeb-H%^auk}2|x<c1^bCbr-f-lSd=l%EZcF}N2$`on*)PMh?e7y8*NseFQ&EA}C zTzj3L1^G<gvAaQurPHvhamSZex6cR%f9QPtgIDzQ^XdPjyK=tF{_#=8x&C2|&Ee^V z9h!$H+8Q63v(M=;-!kuKCR^O!=gR9OOuV>h;hUT`i>s4One$Skx4&E5TB5%tB6&^a zp{}RW+XSL6>}v1*(ERqNgY8<C9oNoJ;F+7kb%eX^hV9z-tW!T9yfEWi#H>C0#VZbe zsQB=5$?^pDWdc*C=bkl*ky*v_-#^CdUQ^_k%|~x^oPW5vRYGxt;Of1dCmVv8=Vsmr zF@F`iRWnMWa{8wDJ>Qn@eeogw!>{*(iPe|Pr_9XpJ@8>x##;MZ7f)m)E@0gfT2(m3 z@pIxz%b)*W$H>op+Z-nS_j={SDf>R8xx`7{IS_xdVaoKz8IR^gOwjL~cTVTn%e5Nk zzdO#UEO+FPKg7U3?O?j+K7T&ziI?6s)OF_vY`l@Z$9L8`q1PAtbcGghe)*&^=e}Se zhv1wUyKZmtW7?$LV0J%pq5Y;`^Q%|{Y7S(u|4?QAD7!8B*gKx|wV%^GPw%+uUh|&Y zJOBGPG2Iu_N?8ORv@9yP(o?~7%leYTzH7JtEw7mTMYR1NbKuFn7W0%1_bJZd>k|Hu z@LSGhe)4t4=#w8?_B6ZZs2rHSPHD-D#rAq{tu?E|x2{TIsWqRaQ1Fmpu36X(G4A>^ z@}i0JXFutCb7ZdTJmJR&qGwc^9@sMX#;S+T%f265c4>1k_c0Zj#`ia0ur&B3e!Ss- z(7Ur|O~#Wq)~xgQm@;$cO9b{d{19Iwx8l-2d9VNSR<RG*`}oUdrL_9Ld1>^hzU*6> z)yyCBtF!;lpK7!E<Nqs?ON3W*ma*6_dvY!L%Cu_My~j755@`#aa-u@+;^eJLD_Rb} zz5d#IRo8NknX!i$M6FUzo{qmc*VOF(13r<;8?ov;Y`5$)30}KZD<bDtY@>|k)hEqA z4$ZX{_1F9F{-nudX|<5Z=3k}_O#k-pzkF}{kN;*uoZ0{OccpLr_dh2y@X#yaLyzWg zaAw;-x97eSf3Q@xI_oh{sGLFk!iQVb?%tWQ(`f;x_jWNReRqxq&H1dRmBzg8BBG{u z(i0}nH(TYh>k}LEDr1*u*K{$rCk)k0-)>)iRQdeW%VqPVm-6}k&N<Y(e9njOr<ZG< z_PFelEkE1;<@)4rhchg17YMNKiV?YCx6;d@=;Qr0-S;P-^zl)zY0Pi@+R}ebqoa^Z zzP|78M32~-n#1Ym6}KP!UN$NG$EsgCB~Je@?6P__TWs%}udVkE|9qo1M>)$oc2UwJ z)2#l8Nxc^G8i$X3+Hy}vBzl5Jr>*Iv5Y4<rryAyYr#5KZn-HPES#ZduFC{DJ>6g7C zo6h<OEPBFjn`E)3_?K}-((hVVA$M2)HCwI-*Xoup_PU{@;-L|DFY|A-V*ZOPkLwN6 zT`bug(_9`{t}MLj#q?Fja*LF}y|oKxN1N7ZM$Y9wAJlQgQ00_s>%<MOZ-CcDUX$Jv z_u~rN)da5(EN6>;@pU#iT3viH!OX{fI)9kGOs3*$v&Y<zH2D{#E;ywkJGtaV>am`c zN*i+W&g{}W+!ud8?Ki94&foP_HZ5v5omVg4#JE7?|K+&oegF6G-M@eTJ<xF9*?;r- zi#4)MK2>{_q)&NaakSl>C16&IN2s5~PQ`2S+n-!u+%hrs&2MAJ4AT$GpZ}Ys9kOR- zg0ZyxtKRtA%fgr!#+NlmH*+@kW*M$#mA#<7ElR_rHnXgbH{alrhw+=~L9frR)y!bn zxIiG$s9S!{uQTdW9TD4AGuGbw>tuDpb*;MQOT{Hg{Yi<+6&?Ed=9h!G)_OOq@W0z) z{~=oY+p&~Oo41x)?_IRBNU8c&T$QkR9)sG{*6V5vnYUJQgg$w6vu*MJEn44;4yNW_ zSp6*P+rLB3%In!zF{at+rq77vm}V9s!yS81rcmEk!~13%Lx0-h9!u7;y~)4#rB!<W zlTZ0RarOUdj*Ii&UN#V$y4RuWk9}GBlRxWs|9)HgXa7{2)z|;etm8dmx+`<z53c;s zY3>_+9(@dK59TnryM*_DW{hLp<XJuH=ePWhsh;eTIcM5Q=M8_^AH90!ulIj>llY?| zeIb@j4gd4szd!x2{`T9wkTu0o|M`z*hQ&QO?xZ%aLgK&YkMhWBkF?cyLs`<MT*+3f zNX}|oWtor?w|u=ylFH`C6BxdqG*!%rJGk%m-P_Ruw*Hl~XHE+V(_H=(d5NW&*PWZC zll4qm|2kFQITNoOILAzxt@`=7Us{__oc?sj^Gwod`{{bmr){;_s`CF&y5Y|A^OXLd z|MqX5%>UZ$o3~H<zq(?Y&i~Wi-?y4CJ0yMCqwn<gpm3$*pRH=A7R3l&cHZ~wwEyX7 zy^h(N_DI+#TwdTLw7B`v(WU#srcdmh!qUFO_X*RgHGy-Y`Hweh*~;k^Oj)N?Z(QGz z&&zjUr`o*~_O4m)cQ#)MZDN`AF#fSY#l1q%;z~Y&dILF0y}xII%PxiYItQ75mOdfh zxUM%ORaY*#%D3LwU;A45!q$NB(3Lx%ul(o6tHZ!(Sf}++Vg4(_<xjuoohh5TyKkm( z?y{!%d*v_o7?@taadd9`rp!7?$-?43%jvP@Y25v+Dv$m)o10%&-1vUyl%-iNR?3SD z^}N<-i}ElA9rxNPQKY1`$*@B;mb=$ua<=V!Inmd-du4U6c+aoCys0j$y6F4=?%3b{ z^OSzq|905-|K`ox@$>($ds6B7{r~HI-}mo(_rHDTOU<S0!(Hw^S@$CNsnN`2DX9hf zxOw_2T^Nj8>#DwgJoZkLt+3p7-^SPS4U6nQ2mX0^?!^BS{_FnCcgvI2OKANUzkAc4 z`?p`NIsZTWlg<49;!5j;U1Ho>^%7<#ZLMky<cha$+FNonzPnPvyQsb@enZVa`(2R- zf4=|r?_6KazulYn_x;~C>3QX&{|t#MC;t~?{V_93>9@eK`~2?iaWZF@A4tA;-n~3; z=az%sR;lZL%E>o>`WknqdhYCivqx>`tx%7<kji++v-V%_rL^_yj_sOye)iO@Z_kH2 z3Yp9G#;kNdc{gB|fc9%ek>5WixfHy6@u0S`?8}#L=ev84ZOK}yeE&c9T0!xThi=T( zJ^O$6<(s+kTT=hOKljh--+ixnq9^`)ReGO(!D2HrOQcy**C<AtWxcba#?z16g8a9K zzj=6!>6&bmtd7{n#GgAK3NfTV*qGg4W8OD8bwOb3vtW)a`#G*J>ff(O?*7r&Q!n<9 zxpV5GS4Y*pZe16s`$<{&r$|(vVUl_OsxyM~tRlQWPWV5mEW;+_oONsXip;1EZJ+9T z-uy}4UZH&Y;+z%h6b_$h<KUnESdEiU%(@_Ttwr+no&C=z>poo4E#Ytb+%ET@?zW{- z`BBrSOp1E{_Qu=Wn>Sv)utU(qY@<m_MdOAa7qysXWhZR+J;S>%;^U2b_inrY{cMn` z#5+Z1joGf6v<t5)K8Cul_goZUFV&?PDY1t4U7|_265l-7x=;RN;B}uL5|8iB-Ld{6 zBY*F=yz2D}xkA$!5*bskm!8rz%Rk~g<)h9Hai1yAdb+IU_qMHAapT;gZ`li<a&5F+ zapb*~p9O!KYm<F+RKkZt4I(@JetT%~6!JZu@nXN0p{e^DxhQ$A+Ss=5c?(QjpM*|u zIPJ%ylJe@8T+||`3lpED+P3r5=+CnJ<$X>jGhsWcdSZ|DxuX?@D<*&Ab$oUyws3*U zX^v@edNo_P3}5zLlCgYHvMTQ6mYsHsjLO??D=v!l&`(+9!0|Bg_Mb<`d6J)9<+Z&2 z#AqS=`k3Skg`ci5-T2AI`QVEB54q)h`g**Ae!{A^7uaa7l3w^SsIe{bfc(Yu${DW% zqRUQl{JpaMQu@O8Zkt@5#9d>yx$ix9gTJ%=o@yyS#dqeHwj`-+P%x9S7xJCB>)6s} zhvF;IiBn$O7g%1_w%bxc{Ib+c|E%U+`xt{Il9sIPdzQg>^wpv4ucC|#liX^J=VhJ< z5KCbCC2*53Md!1^1tX_V9rNGrN%H!^BW*TMJ0|?Zk+~P!k~cQY5@<|TUa{fg$4;Te zSB&O!>Q{#H1Wf(P?!|U?(xM|u-(%O5Tza3Wy&zw*=Fn1!d)4XBmS41Hsh^wk$SR8G z-QEwn8QhPgEhI}e#&j2~cJ7jp?pL2*kQ@`f>W00o81MYW@*iu{{_lA(p>pGyb!MPN zpD%Z0T%TIwl+dtj&hnP*PmEl%DlQ4ExYPA|;ViSL%S(1xJ=&4xsX9~s=%tgdV=l)< z%@qE0`)1wEze^5WH9t6IB|~OVZ%o3IqjPH5rYl@=YgAJCx+9Whx6H!7(XZ35OFisa zH1YTCJKYMZ7FmA|e!gp6eq<8wZowrkb9?tnJU7st*SRE4u{+vw_T|Q9p{c$fUQ7sC zpS0!QvaO|$S))HjRNXF-eR)>=p?OwbR_<A~%es3sw%2XgcIahJca+Pv9nFECV%OQs zYf;YLfA?JEo{r)#0eAN&mPX2OMNUrNP}%$Rqd;BbdQLO<IF-_#?fVmwt&Uvqj(_}< z_h*}3s@CRZ%D)ARmEK<~esI8if4lC?%%!|b51Z!d^B-L#*k;ra+Q}z+`q;XK6^mvk z%&A^lV}094m2cj4pUk*<mv3C!S(SMI{MqRxtJXBlV>Q^Z>s|h}Xp_dnk}fCQ>t7vT zH&yYX&5L6{F37D6<u%x2in&Pi&^+V$j{82d{aRnS`)_v<|B+s`M1fZyJC3Ps%yvD^ zru^&I*8tX_vh@Yh^&N+PUQzmaLtL`i$M}QKJHhs4lDB+s-(&I%Df!f>&GEguD*elj z#Ub$pDGS->cN}0=Vv1M%vpu7Cdgi$-zXolei~W4RZvQ*;Z`tC5+kb2Ktl$)#tx&X~ ztmO6s2Qj;Cj}FW`_E@0M?BCY@s$cQjCoJPTm;CSN9+`ui>~3F-%`sKp<utq5>0iR0 zXQ938dzfdedv%9jCjR^jg<Ya;Y?TEC3Aw#@*j4=0M0Y>lzVT+CSYYdX*JlzFLVpH6 z@thSpDT?*PSDsy;<Xmrm<5G{=naQgjH&4`U|978V!sl*smtIfm&|*mDYUufse%DgW z!<%V##-y+>`(|i`E|9uhnDSbUS?5LE?S{0uQ&V5_Okb>{|2*B}=-aajCmw!Tf0Su~ z<eHt?o#);~PtNYVQlq<0H7tu=<kN{$9eT-a8u=v=CrtjN8+&+VNK}4{ZTRrsGX0^) z=6^HSCM>+{w^I35+RB9ivwg&Tm#qAiIITLu@LuBm0PRa3-IlQRJTA*(3(cq&blH8d zIqG;teNp8-TkD;6R(17X9Upy@kdWG-&m|yZ!oTV2j;(@1QcYW@eV9G5+IYYAjPt&x z+FpsT;(7G#dHUMx?f1Tm=h0h#e*L+7^88y4EcLs)Ys;Nye`|MH?6tDqXJ@7PPA~rP z#gfbg-!rx@W4Xice)n{qVa>@O{cmR0K5?xy(3~<cf9<;(vo>o-zHP-TjyXE(ell+s zI@qeL{Yaqm&hxWOEeqxzo^i=@{x;|DajjdQJ=o}N6JP(S=BC=bxo=<Bm0SGznN(2n z_wvb?8^z}8oM`d8-`Sb{<XX9<qxzeRN4O;lQreffv}E00#Tw1}(ckG)**5`!!2QhM z&3<qFQOB@yexc0M`PJVw*R!%R@vPjyp?ml8<?i|G`_KQH{{O^LAGP-1Otoskg{Ef` zz5gsSc+93hx94Hj{rNMyHb2&PJaYc%lQ`?`)n{2YE8N!pYV}-%%`YqO&5clB7q*8B zqW8S#`>K+3#oIE}`HGrQQ~#We=EZYw+BnU<Xx(qYl5)+KC*E;)<)xY4`?j)We*N>2 zzwh^Q^}X+&o;>>V>&>GR<@h`OWPX2R);KCG&7`B<B<a0DGHWrD%Fan{4+Lc9t$Pvr zW@(qa+^MS{CGw_}7D`=ph!fs?anX`HN>Aok?+}ar82q4Tu>r^PLjJdjwp+q^^Ye|D zTS>0r`(JqPx5W;N{X3-MzU!Sk=co5Md}`$VW!@ZbWmq|0$nblY%AZj`EW&ik<IyA? zJ?5zQU$QDHZFao-_WODUdmNwgH<O>ysY}d*ohzhYyl_k0&#<qu$^IGt(<gtPe0uS> zwEV+DiH)oLv^lwbn_tfQar0Z^<!BRrkstGSFHbf5yX)R7nNu+fg|!aKe`8bs>%B?V zP)W79Z<XTwPjiC;p1;3URB+yEHS6<Mt|JpfPRL)66kq?c|Hbx?1rg`Je0O&VYW=bJ z@05*wnY);yBQp<Qcp11oKE>18?)^S{+kNLmLRSU&7i?T3*s}7|lm0iE6OXC*E)8&9 zoyfKH`9%HwA9&WZ7_4}``ryj41iuXByC(}ze@|Pr&OqbBr2i=fzjs*6d|N(Y>4s^I zJI>si`|QF5v3K{5Co}uGJ}5i3F6zY7oT>ufcPv*^J|Aw_ZF7}lliTqV4NF{KKKQYG z@_!STtS9%X=6f&x`bzz=+@qhlt#S$Z6}2UClfEP-SCq`FHRtO2ZEI=2>cV>Q9;3gD z$`?DFR+w_Lc2d`MpEnto7*tu8_s>4|rS15)qVF;W%haU5D}AxIdB;~Jzkc`h=~aD8 z=N-Snntfoa?QGXo{IOr|?VdS3LY+lui~rs;59jUNaHq;{Qv51^`-%G8GfVbuO;KAi zePdMFRQ;sN??T3$*$*Zha%?|vNQPfi%f&19yWcPQe)g%2tkXE2|5G?xb+3d+PWss$ z?gKAnm0LBhTTFZ(yF5aD*1UgZfBIdmF1^3A^d&?2>^N~B)5av_70%AvjdEgnrOw#S znsY**``v>rMthnsxAv|p5U~1`)>`xQ5p&p|-m(O<EjK<Lwhs9IIj3Y+UzPat=f`a~ zgo@_xoV>3pQD6sOr)a>s-HRtDE|u%wb3^l;Npky=t^RutycIS*!E@&F<j={$s@_*m zJ6WGxa?m^f(LZe-pTg?OqOw2n;?Gqx)Lt%Nt5{w>V~77?YvKGJ{=2IePxfZGEfBTt z=g~K*N%+?XpZxjt=Es5?e+zPUX~^6!ZoWBFe9q3ooXIBJmuVON*l2BG$HZj6_l2Bd zR=xcTK0lsaem5T#<hZ}%m}tGE)b?whlJ%!A1{pc37ByE3KYTdZXC!vmYR}x3Z@hcw zeUd#Rvfb;aUsd|f`JP`^_c(`!X__Apf2C!7k<Yt$(Ur$r`ELI_JI%OWlvn(K%I(%y z2CHsg^^1O{Iz7#dRqMj?*{S^x#M53FE>lvnOKIs`zUbU`vE8ja>18If{eK5mDBt&f zu<y!~l{4RNWUF_V^XrZOa7ejQ`;I{1*BsLswdt4VgzlJs`9ZzrRE>B4grtJ+{#OO9 z5q`>){&9&f1E0{bN<$Yr&?yBDn{<5YU&SpiG&m%_+|7K0Ufq?|$7CeL_I1yc)>SP( zoOpC2zkYF*aG8I=zk9V>dh^~i2IXDYFe}+)KKoj;U+b0c?l6rxE0n6A$|rV6-RHrj z!dnm4FT2(mtQ<D)w3Po|c5{bY6PwI`{aJ1`bMcLI-aCN}A!p^XC3<Gr|9X^gji>0W z!gZcc{6`enIiAjIb9Otl-70d)m26&{pq9|HDz7E_XL-9_s)&=A-NIm;b#G<y|3~eY zl><5$XIuYno09I;_nM=KJFdc8^&8THVBZDzUqzk?3h$25s=g-uM$Py2I*s;&Yu9;K zTODQmH~nJ%Igf?WS2MnT)2_9<`)H9>v~uE?BBQ%=8vC4{-|L;#k+f)e<_lKiu=0}2 zQn{&aNqPOJ8rB$lJ!QP7BDVU}2klkjRvWVCT;+Q1p%ZR!?$qYs<5xN+NS!^sXmZf& zo*hpA1f-652A=9pk1Lpd(rl5mmbioCDUn6;SvLhDe$=lz8>jiaE>Fj6JHK+?@jE}X z8L}UwZ#YsR>hf|A#~*c-#zi}$6B*76Sf|L|Tv|{ja^}FvRHn<j`^~pW&eu3B|0<2U zd*1JwM_+a<o%@_~u1?Vk_1=_6=akL|e&TMcifYN;VQ`Ntduz=d(S>O@e`v4y#ND$$ zh~?INgMX*GIb9DKZcCZ9;aRC$ou=AF^`Cwrg5IBgwC(!Ib2>XncE#7*cY5bd5Hg&+ z_<2xm+l%%!p(mE7ojRjry`y-o`G!OHBl9IXW&UN@gfXdaU?|%1TTOMdLd*9hkC#+& zzx%R!&$TmWHEwC>6ukU~Sc$B1ae`IJhSifhO+S6u9k}SsA9tDG!Y*$1eS0L_n)3Z$ zDbKvLCE-T3e9v3Ag_b_19(4{6Zv3&zn|nH7HACIX>-MYfn}!Q5{I;(!>$dqr;nPK; zLEHAvSRK$;eG<I*IEuxl>iMLe11jn)!lLKb96#)ma&GkpgOe`{8$UB%d-clJC&V_~ zN^*wfWyKkWX-38~l8i12OzF&1SyW@1{<O08n!)+=g<<R7?7kFoIHoSZ$K>Wg{qkSo zr9v}qXY-1Duu*S(buV5^a8J+U>DP0@Oz!OASeCu@%JYXIbJV78mCt&xrex2owK2ac zOfMg~)E{nYJ8g@yh;+9Qe^CAtt8YS&IMsQ>yH$LqZBfeFkfr*#++8lk@hnfp(`A0b z#_5lq>lLkDw0EKf!<F?(vzN^O^>iM?RI9&{1%KA@cxc*46z3S{`QF%IF`+~_I&*b& z7T;^De`a>S*4b1V%}HOne9e)C6*rj+n=@T(E=Wu=pZdJ`V{y@D<4;|eH5$Wf`MUki zd(WK{KF3y-r!6?V#4UTmj0IM&9cuYX?;QS<5TR{;Hf@6S*;VoN0#fUjIjb~$KDYIg z=FE*=F)R4Qbv4p%|J6&I`qeC^t@ZZK_v|TM=BITx-)SyCyRh1c{}6-PyA!kh`PLej z3%MoTP|uye@w@)_E6uvgwygB9;}COd?sAP<m$b_FQkvFjgRked@9pHu6}9D_WMpg< zac5sgHhbJtZW-ML`9Ur!(K8KRzm1+yQh3nNOUKnFUE@>7gO5f94_R9Zj<g?BTA^mj zktBaSui(kA7ne2aeJX2<dpBG>w0dFk?`|{iTMyFuE`D~7dM~7SmHnD;+m$VER(|KS z;%Ih$z0i4M{riKG1@TuuvPGXTmd-0)qO$!!h;+sF8;pzWXS3Km$SPX@y70->uPZl4 zZq?SB8)Lq&w)w=Y^)C0W*el!$-n#Kf@IBr8WisY{4+UJk`2GDR6knVbCVIVEIJp1R z(#29qjdtxfJ{=7Axqq!cVcqdnER$!|u~c8kU*UaIp|hmDqw>xZt1?B)6^FAX2G8{F zd-*f#P3+$n-c`{VTRj;9b+%5h=y}W{weEJzj5WvR%HO+D7uE46ETd1x=Kh-b_D2rK z8z(dscL$ve`}4r$_&VE9g64<)%&z{za#Y^i=H_izZ`$6td(-+x-upL^Z{NOs`|X=~ z*zS7^SIxJaa}#=0-XeoJPiv>MrC#NF@<}e@QnY=}mqRaupWN+DzxG>Wi+jh$J)8ZQ zmZz51-j_PienV=9g}{pyTMggH|4sjVrTC6Q*=+R#iWkamy1v<T`~5dNIrHt&Z+qpp z2~58+p+tXCDQ_qHMYi>cGo_3LJ-11Cs##aAknzuT&uZM{{%7mdDVZmjEd0e4?|XcR zww7A@yP#@Gul@2lldo8v)lfWSRx|x$akW+M-Shc(G#pmt-T8D#w_qC&bI6Mei<s{T zm>%HuTcx=s@r=24<d!{6>P$D!u9|(}o%FtA5Bn_-<v((J@JLHS&EZ#sosdqc<1zWA z+t&EXUAkm8*_`dxJH7kNqNP5%EsK{suYP`BG4?R0i+b6O`|Z~(XKmx<VEMW^+ZMEr zS$9sRMVH{5YdLS6WM0gyw*KD!?#!&#Yd7i&9_|&7{Fc#j!p3daqmsJj3FdCrb8Z_P zTI+cB#=i2kAH@F4I?d2rJzt0SQtR&rY}b0bwH}(y-{=1S(eJD8*W6$h<kv5(UUFMN zbX!6*NBy~+|8oCIbJKlpyDPK{Iw@*)e(;{1eK2j(feN{E4=nz#Jl)`bPRFu-#T^6d z;AcOMJn?H>oVbcrv90#`xsJyn%QAhAaA=nZUh_DVx%kx6bt+eDd?yu6?*y%7p1MMk z$9z%M4X(%kcYc~Lb#K;5&L~sW1rGnp%gU@K{kiYRbpU*3$EH8)4=-7BMRC$(xvgS> z{a=5Cz7oAOFI@TU>KRk7xC`9m<6&5`XzJP7hvv`kVB6Z?<)I{V>ALilP5o{El_&O_ zG*-%-tu1eyD_`05t^RGZZRh{;ZPx6dDXHgAKmMQcgUzAljwhQwhrsEN6XKq-mUl3^ z=5_qM5T+#e%SoBl+P86jagc*5i_yZnrU~j>EjBKmDjjssdd;C<TVJl1;`qC1R}Sx| zH@?^G;vL(4`6tIuUXy(L#BPl_{!4i$S(+wATh7|&>b^*k>rTl&=7Ukk{!Nry`lsLN zert@%fmm_TfA>Y+|NnM-)1UnJdGFUh{jW9e>WTVerHiC*XIf6o77lbz`N|M@yV@zY zsUzIL_4vG7Kh$;|m-5yQ5R06@BL4mNtm%yhB3}4jFL|f!BQonNzk(aTt`p1Wn-VXZ z{wsOvz5ma|b=b{j|Ie$X9h#dmIo0`Nk2iKpM9dMpzv1a>55AUefitHkEcW`>Ur=Q~ zKTq-QYr~#*%a8m|t9)K>&A$87&-;Gq<!Aqge_T`d-@QY7^WVkm=W6iO@#aTO`L^j@ zPKx6E&-1-Kc{e_s^l0&gf{s}ke(&8rpS<$z?{%%fu0DZx>n=0yQ+s*1Ea9uXpy!e3 zr%O1lN^Ux=WW#=E<pnOk{v87ApH22xIsEjpN$ED5wx^8I#p3@D#(6sm&HC~sKfgSE zcKOfVLy<39{w*xM`8u8Zy-w7ZS1bNI9eLMX`RR$h^7E&+>aDA*tvCI7zopzd`zL6Y z@wdI_w_x2F{a?=+CkNhg+E$n+eBksS>4e6WAGf!^__qGx+0&Drno5_dc7Cqv-6@&7 zD34!-Gno5_Y+zE|<d0Y4WA<u3oV_F<L*e4r3_qpX;8~Y@=1mQm#kXXWv7)@<pI`c4 zygwYhcJ)L+-J_#DZO_gqx3E6<6l4j^(hr`or7*j?qk4g;T>X~=-+yXWyLx4L#5V7G zac1LoyQm+jQCF@TIqLQaKVdC*f57{k_1y(mXW784OEqU&)z;fG{$F9TTfzB?;lE4H zjJ9WLZsmP1d*)_e$@nqU`|qYJtVNp3R-EnO{^Qdir+sQ>x0QBc{>=ovXElAcQGJt4 zb_$(K5>R&DBduJS;8i{^a!PQ~bF*oaJhyDFeVM7p;r=e5(3#mY`Q7QH?<SvitueG% z>GN~pd$(1Z&+V>Q>Fqo0+BWsbQsH;6R`?ltXGgpYmdFT~O)$4VvMw?s)^&%k-s)HE zt}V`?OL!JNGIEbybIWV*f#!6bz18b7!l!$6UTe9r=#-D=s%4uR`&J!I^}5*jf$^iB zsH4?<WuJ7pW0yEt8tV5+$gE@xYk#T3cO}w$#W|~{(r0H%yO>Xy&ofS38n!|1qIfgc z+!Jy4qbB)TTkW!X9WOuk#Oa`^7cCZ>Pn=!+tng)V5D&-cBnunan3$MveWDftCY{$} ze;nj(a9l0r*T$51-Q!iG?s2!n6Fw)-FzQY5T=us1cx3m~pO>%1zMRqZ$XR#ccH`)l zKNoKAHWK*tqWtPJEA<4<$|VabPaP3l_9oJKU#mk?)g0dE%f00S>L#uTHpsZ8IlFbC zg<fJ{%AuwkEv^}QK4lvsd>$RT*OPhMWI<xt>{zAj16`lkBo1Zt&GA}su_Z`{YuSq2 zr2+?XLR@2`Ef0#m=2}1Fekp6o;;Mv|8r%MGu%6CY{lPG*^^Q2xo9%{Q^)526c+q~% z=!R43AychmsS{4GaQL#~QR>q7;+->>%HC*VI=x|&-UESt>8(eMJ2YAPCBilKdbdpD zlutRqvG3DOmMoUNeQPVuxja{4z0jGJDqwnT-b9Xdv-lm}`cJstzw>Fo^D%Af_;c3( z=h|76?)WeEv;J+)dzlme_RnoD{nI|xM*r%6?`b0WKOf|%^^{-Es=IneHq`xZ)O@l1 z$1W!s^0_VDe2-~WQk4GsZmE_hD_Bllf6Dr3#e0dGqYuryrZ(@HxoOSD*Zxr-E4piQ z{kY5JXR)aUFJV~xC?t+cVLGqu@|U54wtk}KelOy>R;sxN2OkZ*9GPyk@QTQr)h<U2 zOU-{RNM7&XT6L9w`TvVgx%HHUcYn>6VKe<2_~8F_yBjwJzwSTx&#^jv?f<ope#+{8 zI3{iMyw`a(<IPmQ?b{N*&7LB3=tW-lpP#vpWkrs=DTSCF5zjfXJ5$8(ph%+%|0AOr zZ%y8ukgPTiNs-%mGJ0K|P4n;DJM1dopRM`RC^wt$e_a-5u8L~@;fzZPg6)&aJ7OOl zc=F(M|1F2E>>nK>?oL<Ruj#uuew?WEk^98Uc%|}J&39R*{%?J<<oB<>L$>pKLq8Nf z7Jc}35!V8i$=7rglilntaBX?`{pRE3ht}*@d?kLZn_H&rRMvBQ<G-0N*8k6m_#tqS zsoZPhq@Dv7-`+8u-WDOoE~AsRCU;G0tiy*D?)qi-6&Xz!e>%F%{Q6>H?2+E=yFVt} z=5gQdq+7X>iG$Dc<m>gBolCOII954#yF?4sZWI)BSoQGviM?B&+uagZ+;T(Vru)Mq zueQuSccU*S{h8aexBkb=8q6dnK968g5KEKFS-12Uuk~bU>$26o=CS@Rn%gHm`{dTq zEOGfja*(Z*b5G1unaIVKaxx-s6y^#Gu~uyJ*MH(DtjY4UZLY=NYsPO5d4}>xz6z1g zJH0EVC9k#de@gFLiJVGd{l1NAGLt?OEDH|VVV4yvF2r@>NBo6V4=R3y`c64yn(3z} z;rOE7pnuK{#*7^?&bn_`w0uv_Zz*%U#GtdS@lbMtl23+!zqMH8q7zTMYIL3AYyWJ~ z(wpvPdA{K>@4xtEVIOWQGrx6OE_Hxy?JXVEH2v-yd)FwMq_&vtTHdZ#ldp1KrLz1P zW1RIW{cq_%F6C+Oi&cEa`L^zZ6zdP~Z#$NjY-YU0RV^4bvw6ubztoh<y?0Wq=jJR~ zomuFad$z>W;rZ6q{k{c$6VLpvVLCDU`lFqq6Fn!*ieNTcm*dzdaBJ838B*JB@2<Zn zlAu!ftaIn0{a)OcW}cfbD8Bb!sBcHcYc2y99~GM^305-PW|3xEubxc{I(4r9&dj$z z3k`QCc?OE#+*cqw{VM+(!L@5*TjC6g->39Vb70Vo@D$dMJtA<tscu!Ao>IoDGjsUV zKlM0?S#&(~v^`lY+I&wU+PCn><KqlpG8WAbuJqcg*};9o#N{%l)R6?al8^g-PS}+y z;wdhsR&tcX`=+N-O~kVD@5Vn4NaapADwuoV|N7kJuhajoncwvMKcl6)${U6}P6hy% CUWH8n literal 0 HcmV?d00001 -- GitLab From 74bcebef47a94b28117bd89d14f9b6719ad4bbb8 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 2 Feb 2025 22:06:23 +0100 Subject: [PATCH 36/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../main/java/at/tuwien/service/impl/DatabaseServiceImpl.java | 2 ++ dbrepo-ui/composables/table-service.ts | 2 +- dbrepo-ui/nuxt.config.ts | 2 ++ .../pages/database/[database_id]/table/[table_id]/info.vue | 2 +- helm/dbrepo/templates/ui-secret.yaml | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) 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 17ba0bd60b..8b4c73fb2f 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 @@ -216,6 +216,8 @@ public class DatabaseServiceImpl implements DatabaseService { } log.debug("fetched unknown table from data service: {}.{}", database.getInternalName(), table.getInternalName()); final Table tableEntity = metadataMapper.tableDtoToTable(table); + tableEntity.setIsPublic(database.getIsPublic()); + tableEntity.setIsSchemaPublic(database.getIsSchemaPublic()); tableEntity.setDatabase(database); tableEntity.getColumns() .forEach(column -> { diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index 45268d6295..5f29074524 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -255,7 +255,7 @@ export const useTableService = (): any => { if (!table || !user) { return false } - return table.owner.id === user.id + return table.owner.id === user.uid } function tableNameToInternalName(name: string) { diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 92403e293a..28505257a2 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -15,6 +15,8 @@ if (process.env.NODE_ENV === 'development') { } } process.env.NUXT_PUBLIC_API_SERVER = api + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI = api + ':3001/auth/keycloak/callback' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI = api + ':3001' } /** 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 89e2714115..687358f029 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 @@ -15,7 +15,7 @@ </v-card-text> </v-card> <v-divider - v-if="canViewInfo" /> + v-if="identifier" /> <v-card v-if="canViewInfo" variant="flat" diff --git a/helm/dbrepo/templates/ui-secret.yaml b/helm/dbrepo/templates/ui-secret.yaml index bab14fce20..3e1a6c6388 100644 --- a/helm/dbrepo/templates/ui-secret.yaml +++ b/helm/dbrepo/templates/ui-secret.yaml @@ -22,7 +22,7 @@ stringData: NUXT_PUBLIC_PID_DEFAULT_PUBLISHER: "{{ .Values.ui.public.pid.default.publisher }}" NUXT_PUBLIC_UPLOAD_CLIENT: "{{ .Values.ui.public.upload.client | default $uploadEndpoint }}" NUXT_PUBLIC_BROKER_CONNECTIONS: "{{ include "dbrepo.broker.connections" . }}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/api/auth/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/realms/dbrepo" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "{{ .Values.authservice.client.id }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "{{ .Values.authservice.client.secret }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" -- GitLab From 9fd9fa482cba2f37eed158c9fa5d80f9fc9129a9 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 3 Feb 2025 09:16:59 +0100 Subject: [PATCH 37/52] Push correct urls Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docker/docker-compose.yml | 1 - .docs/api/auth-service.md | 4 ---- .docs/api/ui.md | 1 + .gitlab/agents/dev/values.yaml | 2 +- dbrepo-ui/layouts/default.vue | 1 + dbrepo-ui/nuxt.config.ts | 17 ++++++++++------- docker-compose.yml | 7 +++++-- helm/dbrepo/templates/ui-secret.yaml | 7 +++++-- 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index d82f3b45f8..4d33cc34e5 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -305,7 +305,6 @@ services: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost:8080}/realms/dbrepo" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" diff --git a/.docs/api/auth-service.md b/.docs/api/auth-service.md index 93e87beaf2..7b28901a9b 100644 --- a/.docs/api/auth-service.md +++ b/.docs/api/auth-service.md @@ -88,10 +88,6 @@ which is imported into Keycloak on startup. ## Limitations -* No support for sending e-mails through Keycloak by default. -* No support for temporary passwords. -* No support for multi-factor authentication. - !!! question "Do you miss functionality? Do these limitations affect you?" We strongly encourage you to help us implement it as we are welcoming contributors to open-source software and get diff --git a/.docs/api/ui.md b/.docs/api/ui.md index 30b32c0a0c..b82058c19b 100644 --- a/.docs/api/ui.md +++ b/.docs/api/ui.md @@ -101,6 +101,7 @@ See the [API Overview](..) page for detailed examples. ## Limitations +* Changing the OIDC provider URL requires to build the UI from scratch. * When developing locally, the `axios` module does not parse custom headers (such as `X-Count`, `X-Headers`) and/or blocks CORS requests wrongfully. diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 70ada3ca20..b4f5790706 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc3-datalab-dev public: api: client: https://s155.datalab.tuwien.ac.at diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 50aa155d86..bd2b12e13a 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -173,6 +173,7 @@ useServerHead({ import JumboBox from '@/components/JumboBox.vue' import { useCacheStore } from '@/stores/cache.js' import { errorCodeKey, makeError } from '@/utils' +import {useNuxtApp} from "#app"; export default { components: { diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 28505257a2..911e91131d 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -110,22 +110,25 @@ export default defineNuxtConfig({ }, oidc: { + defaultProvider: 'keycloak', providers: { keycloak: { - audience: 'account', - baseUrl: 'http://localhost/realms/dbrepo', - clientId: 'dbrepo-client', + clientId: '', clientSecret: '', // inject on runtime + authorizationUrl: '', + userInfoUrl: '', + tokenUrl: '', + logoutUrl: '', scope: ['openid', 'roles'], optionalClaims: ['realm_access'], - redirectUri: 'http://localhost/auth/keycloak/callback', - userNameClaim: 'preferred_username', + redirectUri: '', exposeAccessToken: true, - logoutRedirectUri: 'http://localhost', + logoutRedirectUri: '', }, }, middleware: { - globalMiddlewareEnabled: false + globalMiddlewareEnabled: false, + customLoginPage: false }, }, diff --git a/docker-compose.yml b/docker-compose.yml index 25e0b39733..8e81d42e04 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -335,11 +335,14 @@ services: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "${BASE_URL:-http://localhost}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/auth" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "${BASE_URL:-http://localhost}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/logout" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "${BASE_URL:-http://localhost}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_TOKEN_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/token" + NUXT_OIDC_PROVIDERS_KEYCLOAK_USER_INFO_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/userinfo" depends_on: dbrepo-search-service: condition: service_healthy diff --git a/helm/dbrepo/templates/ui-secret.yaml b/helm/dbrepo/templates/ui-secret.yaml index 3e1a6c6388..3afb602785 100644 --- a/helm/dbrepo/templates/ui-secret.yaml +++ b/helm/dbrepo/templates/ui-secret.yaml @@ -22,9 +22,12 @@ stringData: NUXT_PUBLIC_PID_DEFAULT_PUBLISHER: "{{ .Values.ui.public.pid.default.publisher }}" NUXT_PUBLIC_UPLOAD_CLIENT: "{{ .Values.ui.public.upload.client | default $uploadEndpoint }}" NUXT_PUBLIC_BROKER_CONNECTIONS: "{{ include "dbrepo.broker.connections" . }}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/realms/dbrepo" + NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/auth" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "{{ .Values.authservice.client.id }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "{{ .Values.authservice.client.secret }}" - NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "{{ .Values.gateway }}" + NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/logout" + NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI: "{{ .Values.gateway }}/auth/keycloak/callback" + NUXT_OIDC_PROVIDERS_KEYCLOAK_TOKEN_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/token" + NUXT_OIDC_PROVIDERS_KEYCLOAK_USER_INFO_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/userinfo" {{- end }} -- GitLab From 9715320a77aa172f3475c744702823240207fd1c Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 3 Feb 2025 09:36:19 +0100 Subject: [PATCH 38/52] Bumped keycloak config Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- helm/dbrepo/templates/auth-configmap.yaml | 36 ++++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index ffd14c4b17..05163f32d2 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -5,7 +5,7 @@ metadata: name: auth-service-config namespace: {{ include "common.names.namespace" . | quote }} data: - dbrepo-realm.json: | + dbrepo-realm.json: |- { "id" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "realm" : "dbrepo", @@ -35,7 +35,7 @@ data: "oauth2DevicePollingInterval" : 5, "enabled" : true, "sslRequired" : "none", - "registrationAllowed" : false, + "registrationAllowed" : true, "registrationEmailAsUsername" : false, "rememberMe" : false, "verifyEmail" : true, @@ -2140,11 +2140,15 @@ data: "protocolMapper" : "oidc-usermodel-realm-role-mapper", "consentRequired" : false, "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "false", + "multivalued" : "true", "user.attribute" : "foo", + "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" + "jsonType.label" : "String" } }, { "id" : "a7bd6723-e58e-47f7-95c0-2925ce99283d", @@ -2174,8 +2178,12 @@ data: "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, "smtpServer" : { }, + "loginTheme" : "keycloak", + "accountTheme" : "", + "adminTheme" : "", + "emailTheme" : "", "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], + "eventsListeners" : [ "create-event-listener", "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], "adminEventsEnabled" : false, "adminEventsDetailsEnabled" : false, @@ -2223,7 +2231,7 @@ data: "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper" ] + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2249,7 +2257,7 @@ data: "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-property-mapper" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2265,8 +2273,8 @@ data: "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "true" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } }, { @@ -2277,8 +2285,8 @@ data: "config" : { "ldap.attribute" : [ "sn" ], "is.mandatory.in.ldap" : [ "true" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "false" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "lastName" ] } }, { @@ -2289,8 +2297,8 @@ data: "config" : { "ldap.attribute" : [ "cn" ], "is.mandatory.in.ldap" : [ "true" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "false" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "firstName" ] } }, { @@ -2301,8 +2309,8 @@ data: "config" : { "ldap.attribute" : [ "mail" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "email" ] } }, { @@ -2315,7 +2323,7 @@ data: "group.name.ldap.attribute" : [ "cn" ], "preserve.group.inheritance" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], - "groups.dn" : [ "ou=users,{{ .Values.identityservice.global.ldapDomain }}" ], + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "mode" : [ "LDAP_ONLY" ], "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "membership.ldap.attribute" : [ "member" ], @@ -2344,8 +2352,8 @@ data: "subComponents" : { }, "config" : { "ldap.attribute" : [ "uid" ], - "is.mandatory.in.ldap" : [ "true" ], "attribute.force.default" : [ "false" ], + "is.mandatory.in.ldap" : [ "true" ], "is.binary.attribute" : [ "false" ], "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], @@ -3014,7 +3022,7 @@ data: "policies" : [ ] } } - master-realm.json: | + master-realm.json: |- { "id" : "afe47bd0-61f8-40c3-95cb-04930407ebdd", "realm" : "master", -- GitLab From 1fc439a38b2e0da300e0e4a9080708f2616f446a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 3 Feb 2025 22:24:26 +0100 Subject: [PATCH 39/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../listeners/target/create-event-listener.jar | Bin 0 -> 10125 bytes dbrepo-ui/nuxt.config.ts | 5 ++--- dbrepo-ui/package.json | 2 +- .../database/[database_id]/persist/index.vue | 6 ++++++ helm/dbrepo/files/create-event-listener.jar | Bin 0 -> 10125 bytes helm/dbrepo/templates/auth-configmap.yaml | 3 +++ helm/dbrepo/templates/auth-secret.yaml | 2 ++ helm/dbrepo/templates/gateway-configmap.yaml | 4 ++-- helm/dbrepo/values.yaml | 14 +++++++++++--- 9 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 dbrepo-auth-service/listeners/target/create-event-listener.jar create mode 100644 helm/dbrepo/files/create-event-listener.jar diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..a32aab676ff3184bf63aba72fdf7e4b1b0392d02 GIT binary patch literal 10125 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 Q1Q-MuuCXvMEK~yV01bA55&!@I literal 0 HcmV?d00001 diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 911e91131d..66232b6d1a 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -14,9 +14,8 @@ if (process.env.NODE_ENV === 'development') { '^/pid': '/pid' } } + process.env.VERSION = 'bun-dev' process.env.NUXT_PUBLIC_API_SERVER = api - process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI = api + ':3001/auth/keycloak/callback' - process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI = api + ':3001' } /** @@ -114,7 +113,7 @@ export default defineNuxtConfig({ providers: { keycloak: { clientId: '', - clientSecret: '', // inject on runtime + clientSecret: '', authorizationUrl: '', userInfoUrl: '', tokenUrl: '', diff --git a/dbrepo-ui/package.json b/dbrepo-ui/package.json index 7110d273f2..d7d4917e9f 100644 --- a/dbrepo-ui/package.json +++ b/dbrepo-ui/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "build": "nuxt build", - "dev": "VERSION=bun-dev NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG NODE_ENV=development nuxt dev", + "dev": "NODE_ENV=development nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", diff --git a/dbrepo-ui/pages/database/[database_id]/persist/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/index.vue index 4bbf0e8d2a..b66e8d706d 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/index.vue @@ -44,6 +44,12 @@ export default { cacheUser () { return this.cacheStore.getUser }, + roles () { + return this.cacheStore.getRoles + }, + access () { + return this.cacheStore.getAccess + }, isOwner () { if (!this.database || !this.cacheUser) { return false diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar new file mode 100644 index 0000000000000000000000000000000000000000..8341d4a831d07daee3ebaba9eda02fc51bf394c4 GIT binary patch literal 10125 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%0Ata96AJT0D(m*K#KB5`We( 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 UtZX1f0t^BS*H{=B7Ak>w05r{b761SM literal 0 HcmV?d00001 diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index 05163f32d2..325582daa3 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -4,6 +4,9 @@ kind: ConfigMap metadata: name: auth-service-config namespace: {{ include "common.names.namespace" . | quote }} +binaryData: + create-event-listener.jar: |- + {{ .Files.Get "files/create-event-listener.jar" | b64enc }} data: dbrepo-realm.json: |- { diff --git a/helm/dbrepo/templates/auth-secret.yaml b/helm/dbrepo/templates/auth-secret.yaml index a568ef2500..dca0f861f1 100644 --- a/helm/dbrepo/templates/auth-secret.yaml +++ b/helm/dbrepo/templates/auth-secret.yaml @@ -11,6 +11,8 @@ stringData: AUTH_SERVICE_ENDPOINT: "{{ .Values.authservice.endpoint }}" METADATA_DB: "{{ .Values.metadatadb.db.name }}" METADATA_DB_PASSWORD: "{{ .Values.metadatadb.rootUser.password }}" + METADATA_SERVICE_ENDPOINT: "{{ .Values.metadataservice.endpoint }}/api/user" METADATA_USERNAME: "{{ .Values.metadatadb.rootUser.user }}" SYSTEM_USERNAME: "{{ .Values.identityservice.users }}" + SYSTEM_PASSWORD: "{{ .Values.identityservice.userPasswords }}" {{- end }} diff --git a/helm/dbrepo/templates/gateway-configmap.yaml b/helm/dbrepo/templates/gateway-configmap.yaml index 66a8bc945a..8ef3588715 100644 --- a/helm/dbrepo/templates/gateway-configmap.yaml +++ b/helm/dbrepo/templates/gateway-configmap.yaml @@ -44,7 +44,7 @@ data: proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://auth-service; + proxy_pass https://auth-service; proxy_read_timeout 90; } @@ -53,7 +53,7 @@ data: proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://auth-service; + proxy_pass https://auth-service; proxy_read_timeout 90; } diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 626aea471b..bd221fd89a 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -87,6 +87,7 @@ authservice: fullnameOverride: auth-db auth: postgresPassword: postgres + production: true ## @param authservice.resourcesPreset The container resource presets resourcesPreset: "small" jwt: @@ -127,8 +128,8 @@ authservice: ## limits: ## cpu: 500m ## memory: 1024Mi - ## @skip authservice.extraEnvVarsCM - extraEnvVarsCM: auth-service-config + ## @skip authservice.extraEnvVarsSecret + extraEnvVarsSecret: auth-service-secret ## @skip authservice.extraVolumes extraVolumes: - name: config-map @@ -140,7 +141,14 @@ authservice: ## @skip authservice.extraVolumeMounts extraVolumeMounts: - name: config-map - mountPath: /opt/keycloak/data/import + mountPath: /opt/keycloak/data/import/dbrepo-realm.json + subPath: dbrepo-realm.json + - name: config-map + mountPath: /opt/keycloak/data/import/master-realm.json + subPath: master-realm.json + - name: config-map + mountPath: /opt/bitnami/keycloak/providers/create-event-listener.jar + subPath: create-event-listener.jar - name: cache mountPath: /bitnami/keycloak/ ## @skip authservice.replicaCount The number of replicas. -- GitLab From d4c4931c4f21c30018c8ba59e3c30332318c0baf Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 4 Feb 2025 07:05:23 +0100 Subject: [PATCH 40/52] Values schema Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 16 ++++++++-------- helm/dbrepo/values.schema.json | 8 +++++++- helm/dbrepo/values.yaml | 1 + 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index b4f5790706..dcde0bb2ca 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.3rc1 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3rc4 persistence: enabled: true @@ -71,12 +71,12 @@ searchdb: analyseservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc4 metadataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc4 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.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3rc4 rabbitmq: consumer: username: admin @@ -106,16 +106,16 @@ dataservice: searchservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc4 init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc4 storageservice: enabled: true init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc0 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc4 uploadservice: enabled: true @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc3-datalab-dev + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc4 public: api: client: https://s155.datalab.tuwien.ac.at diff --git a/helm/dbrepo/values.schema.json b/helm/dbrepo/values.schema.json index 9ade1b0749..641287b434 100644 --- a/helm/dbrepo/values.schema.json +++ b/helm/dbrepo/values.schema.json @@ -126,7 +126,7 @@ "endpoint": { "type": "string" }, - "extraEnvVarsCM": { + "extraEnvVarsSecret": { "type": "string" }, "extraVolumeMounts": { @@ -137,6 +137,9 @@ }, "name": { "type": "string" + }, + "subPath": { + "type": "string" } }, "type": "object" @@ -224,6 +227,9 @@ }, "type": "object" }, + "production": { + "type": "boolean" + }, "replicaCount": { "type": "integer" }, diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index bd221fd89a..6422ca38dd 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -87,6 +87,7 @@ authservice: fullnameOverride: auth-db auth: postgresPassword: postgres + ## @param authservice.production Start Keycloak with production profile. production: true ## @param authservice.resourcesPreset The container resource presets resourcesPreset: "small" -- GitLab From eca03168d42cf5ea35fce5d04e9ec431d22feb54 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 4 Feb 2025 22:19:13 +0100 Subject: [PATCH 41/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/installation.md | 6 +- dbrepo-auth-service/dbrepo-realm.json | 335 ++++++++---- dbrepo-auth-service/init/app.py | 16 +- .../tuwien/CreateEventListenerProvider.java | 19 +- .../test/resources/create-event-listener.jar | Bin 10015 -> 0 bytes .../target/create-event-listener.jar | Bin 10125 -> 10138 bytes dbrepo-auth-service/master-realm.json | 146 ++++-- dbrepo-metadata-db/1_setup-schema.sql | 2 + .../at/tuwien/api/keycloak/ModifyUserDto.java | 26 + .../api/keycloak/UserAttributesDto.java | 20 +- .../java/at/tuwien/api/keycloak/UserDto.java | 52 -- .../api/keycloak/UserIdAttributesDto.java | 27 + .../OrcidDisambiguatedSourceTypeDto.java | 3 +- .../java/at/tuwien/entities/user/User.java | 4 + dbrepo-metadata-service/pom.xml | 7 +- .../java/at/tuwien/mapper/MetadataMapper.java | 55 +- .../at/tuwien/endpoints/UserEndpoint.java | 80 +-- .../endpoints/DatabaseEndpointUnitTest.java | 9 +- .../endpoints/UserEndpointUnitTest.java | 122 +---- .../gateway/KeycloakGatewayUnitTest.java | 243 +-------- ...nticationPrivilegedIntegrationMvcTest.java | 8 +- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 11 - .../AuthenticationServiceIntegrationTest.java | 8 +- .../service/UserServicePersistenceTest.java | 12 +- .../tuwien/service/UserServiceUnitTest.java | 4 +- .../java/at/tuwien/utils/KeycloakUtils.java | 77 ++- .../auth/BasicAuthenticationProvider.java | 4 +- .../auth/InternalRequestInterceptor.java | 18 +- .../java/at/tuwien/config/KeycloakConfig.java | 15 +- .../at/tuwien/gateway/KeycloakGateway.java | 28 +- .../gateway/impl/KeycloakGatewayImpl.java | 230 +++------ .../tuwien/service/AuthenticationService.java | 27 +- .../java/at/tuwien/service/UserService.java | 6 +- .../impl/AuthenticationServiceImpl.java | 40 +- .../tuwien/service/impl/UserServiceImpl.java | 22 +- .../main/java/at/tuwien/test/BaseTest.java | 21 - .../components/database/DatabaseToolbar.vue | 4 +- dbrepo-ui/components/subset/SubsetList.vue | 1 - dbrepo-ui/layouts/default.vue | 4 +- dbrepo-ui/nuxt.config.ts | 18 +- .../pages/database/[database_id]/settings.vue | 2 +- .../database/[database_id]/subset/index.vue | 3 - .../[database_id]/table/[table_id]/data.vue | 2 +- .../[database_id]/table/[table_id]/schema.vue | 4 +- .../database/[database_id]/table/index.vue | 3 - dbrepo-ui/pages/user/index.vue | 3 +- dbrepo-ui/pages/user/info.vue | 35 +- docker-compose.yml | 5 +- helm/dbrepo/Chart.lock | 6 +- helm/dbrepo/Chart.yaml | 2 +- helm/dbrepo/charts/keycloak-21.6.1.tgz | Bin 133987 -> 0 bytes helm/dbrepo/charts/keycloak-24.0.3.tgz | Bin 0 -> 134032 bytes helm/dbrepo/charts/seaweedfs-4.2.1.tgz | Bin 241323 -> 240716 bytes helm/dbrepo/files/01-setup-schema.sql | 2 + helm/dbrepo/files/create-event-listener.jar | Bin 10125 -> 10138 bytes helm/dbrepo/templates/auth-configmap.yaml | 483 +++++++++++++----- helm/dbrepo/values.yaml | 2 +- 57 files changed, 1067 insertions(+), 1215 deletions(-) delete mode 100644 dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/ModifyUserDto.java delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserDto.java create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserIdAttributesDto.java delete mode 100644 helm/dbrepo/charts/keycloak-21.6.1.tgz create mode 100644 helm/dbrepo/charts/keycloak-24.0.3.tgz diff --git a/.docs/installation.md b/.docs/installation.md index ee0d9b88fa..1c6db304cc 100644 --- a/.docs/installation.md +++ b/.docs/installation.md @@ -31,11 +31,11 @@ settings. - min. 200GB free SSD storage Since DBRepo is intended to be a publicly available repository, an optional fixed/static IP-address with optional -SSL/TLS certificate is recommended. Follow the [secure install](#secure-install) guide. +SSL/TLS certificate is recommended. Follow the [secure installation](#secure-installation) guide. ## Secure Installation -Execute the install script to download only the environment and save it to `dist`. +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 @@ -50,6 +50,8 @@ Update the rest of the default secrets in the `.env` file to secure passwords. Y `openssl rand -hex 16`. Set `auth_ldap.dn_lookup_bind.password` in `dist/rabbitmq.conf` to the value of `SYSTEM_PASSWORD`. +Only set the `BASE_URL` environment variable in `.env` when your hostname is **not** `localhost`. + ### Runtime Configuration The [Auth Service](../api/auth-service) can be configured easily when DBRepo is running. Start DBRepo temporarily: diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index a957245673..7215166ca0 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -38,6 +38,7 @@ "bruteForceProtected" : false, "permanentLockout" : false, "maxTemporaryLockouts" : 0, + "bruteForceStrategy" : "MULTIPLE", "maxFailureWaitSeconds" : 900, "minimumQuickLoginWaitSeconds" : 60, "waitIncrementSeconds" : 60, @@ -1308,8 +1309,8 @@ "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "client.use.lightweight.access.token.enabled" : "true" + "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, "fullScopeAllowed" : true, @@ -1383,6 +1384,38 @@ "fullScopeAllowed" : true, "nodeReRegistrationTimeout" : -1, "protocolMappers" : [ { + "id" : "266edf62-a19a-483b-b594-81428e4af792", + "name" : "orcid", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "ORCID", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "orcid", + "jsonType.label" : "String" + } + }, { + "id" : "1a21798a-38b6-4df5-89f0-86942415246f", + "name" : "theme", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "THEME", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "theme", + "jsonType.label" : "String" + } + }, { "id" : "da0b27c1-ae2e-4baa-bf78-db233e15c78d", "name" : "preferred_username", "protocol" : "openid-connect", @@ -1396,18 +1429,66 @@ "userinfo.token.claim" : "true" } }, { - "id" : "7c94de93-f60f-487b-b4b7-1891c67f74cc", - "name" : "aud", + "id" : "1bc6a1f4-4be2-439c-8c7f-b3fb0bb9956a", + "name" : "affiliation", "protocol" : "openid-connect", - "protocolMapper" : "oidc-hardcoded-claim-mapper", + "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "claim.value" : "dbrepo", + "introspection.token.claim" : "true", "userinfo.token.claim" : "true", + "user.attribute" : "AFFILIATION", "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", - "claim.name" : "aud", - "access.tokenResponse.claim" : "false" + "claim.name" : "affiliation", + "jsonType.label" : "String" + } + }, { + "id" : "7cbf6dc6-653e-40a9-9974-0e5bf7a363c3", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "70bbd779-d085-4204-ac4b-3a40abab9d88", + "name" : "language", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "LANGUAGE", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "language", + "jsonType.label" : "String" + } + }, { + "id" : "b817424d-7f91-43d8-b7d0-6a32582377fb", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" } }, { "id" : "030a1cd9-53d1-4a62-a375-94d50a2dc6fc", @@ -1424,9 +1505,26 @@ "access.token.claim" : "true", "claim.name" : "uid" } + }, { + "id" : "c304ed2f-5952-4772-838d-91998a45f154", + "name" : "aud", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-hardcoded-claim-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "claim.value" : "account", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "aud", + "jsonType.label" : "String", + "access.tokenResponse.claim" : "false" + } } ], - "defaultClientScopes" : [ "roles", "attributes", "basic" ], - "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] + "defaultClientScopes" : [ "roles", "basic" ], + "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "attributes", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] }, { "id" : "25741f6b-4867-4138-8238-6345c6ba8702", "clientId" : "rabbitmq-client", @@ -1471,12 +1569,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "false", "user.attribute" : "username", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "client_id", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "false" } }, { "id" : "f1afc22d-f595-403b-ba2e-6ab19d98205e", @@ -1485,11 +1583,11 @@ "protocolMapper" : "oidc-hardcoded-claim-mapper", "consentRequired" : false, "config" : { - "claim.value" : "rabbitmq", - "userinfo.token.claim" : "false", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "aud", + "claim.value" : "rabbitmq", + "userinfo.token.claim" : "false", "access.tokenResponse.claim" : "false" } } ], @@ -1548,8 +1646,8 @@ "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, "authenticationFlowBindingOverrides" : { }, @@ -1562,12 +1660,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ], "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], @@ -1591,8 +1689,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "782819fe-ba5d-4ddb-9f95-cabb69d79c8d", @@ -1601,12 +1699,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "emailVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } }, { "id" : "ca613fc8-bbf2-4240-8b33-a1874f1559f3", @@ -1615,12 +1713,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "email", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1630,8 +1728,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "84f0487a-1d7d-470c-9b8e-5835294ae235", @@ -1640,12 +1738,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "preferred_username", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bbdcdb36-3ec0-443d-b1af-9993d40f0567", @@ -1654,12 +1752,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "gender", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "gender", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "9faa870b-5491-4ce9-b27d-c9ce07d6a95e", @@ -1668,12 +1766,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "birthdate", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "birthdate", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f0e3c012-9523-4076-83ae-e466e2d08220", @@ -1693,12 +1791,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "profile", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "profile", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "18cfbf4b-0a8e-45c7-a832-c0f72c92f3f3", @@ -1707,12 +1805,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "updatedAt", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "updated_at", - "jsonType.label" : "long" + "jsonType.label" : "long", + "userinfo.token.claim" : "true" } }, { "id" : "841ea785-26ab-429a-a420-09ce3948924d", @@ -1721,12 +1819,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "lastName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "family_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bfba13ff-f952-4e89-bbb1-a693fdebfae8", @@ -1735,12 +1833,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "website", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "website", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "475f071d-5149-4379-b928-76482f5f519c", @@ -1749,12 +1847,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "zoneinfo", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "zoneinfo", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "b8bebfed-b5e9-4604-a0ee-9817f7d439ac", @@ -1763,12 +1861,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "middleName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "middle_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "445232c8-6830-476c-a6f1-8bbef167595a", @@ -1777,12 +1875,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "picture", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "picture", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "65f2e474-6ede-4872-86e4-e49504dd0f2a", @@ -1791,12 +1889,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "16cd5a27-ccf3-453c-ae1e-8621813ab73c", @@ -1805,12 +1903,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "firstName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "given_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f9efedfc-3388-457c-b10a-1dff4525ff9b", @@ -1819,12 +1917,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "nickname", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "nickname", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1858,12 +1956,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "upn", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1905,8 +2003,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "dae802fb-9138-408a-b80e-a40eb0f56814", @@ -1915,12 +2013,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumber", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "feb06a8d-b0eb-4911-8464-368d93f566fa", @@ -1929,12 +2027,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumberVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } } ] }, { @@ -1944,8 +2042,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, "protocolMappers" : [ { "id" : "c6411e3b-6478-453d-b530-5fe175a4d786", @@ -2025,6 +2123,61 @@ "gui.order" : "", "consent.screen.text" : "" } + }, { + "id" : "aa5c6ca7-812d-4fff-80b9-f5095ca82ce6", + "name" : "service_account", + "description" : "Specific scope for a client enabled for service accounts", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "bb359b0f-97dc-4d6a-9a2f-89458b53c512", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + }, { + "id" : "7aa3a4d2-3dd1-48dd-8886-562906eadb2a", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + }, { + "id" : "c4882d39-e815-49f5-8a73-eb8b83572eae", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "client_id", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + } ] }, { "id" : "210cc792-6c07-45a6-a77e-827cdf3b41ba", "name" : "offline_access", @@ -2041,8 +2194,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "8d4ffe4d-1d01-4ca1-8ff4-44eacca61b30", @@ -2115,8 +2268,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "3b6b6914-8ad1-4a71-88ec-444f754aaacb", @@ -2223,7 +2376,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2249,7 +2402,15 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-property-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + } + } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "a407a1d6-a7f6-4a72-ba3a-149de03d5a43", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2289,8 +2450,8 @@ "config" : { "ldap.attribute" : [ "cn" ], "is.mandatory.in.ldap" : [ "true" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "firstName" ] } }, { @@ -2311,19 +2472,19 @@ "providerId" : "group-ldap-mapper", "subComponents" : { }, "config" : { + "mode" : [ "LDAP_ONLY" ], "membership.attribute.type" : [ "DN" ], + "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "group.name.ldap.attribute" : [ "cn" ], - "preserve.group.inheritance" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], - "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], - "mode" : [ "LDAP_ONLY" ], - "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], - "membership.ldap.attribute" : [ "member" ], "ignore.missing.groups" : [ "false" ], + "preserve.group.inheritance" : [ "false" ], + "membership.ldap.attribute" : [ "member" ], "memberof.ldap.attribute" : [ "memberOf" ], "group.object.classes" : [ "groupOfNames" ], - "drop.non.existing.groups.during.sync" : [ "false" ], - "groups.path" : [ "/" ] + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], + "groups.path" : [ "/" ], + "drop.non.existing.groups.during.sync" : [ "false" ] } }, { "id" : "b6ff3285-35af-4e86-8bb4-d94b8e0d70bb", @@ -2344,18 +2505,18 @@ "subComponents" : { }, "config" : { "ldap.attribute" : [ "uid" ], - "attribute.force.default" : [ "false" ], "is.mandatory.in.ldap" : [ "true" ], + "attribute.force.default" : [ "false" ], "is.binary.attribute" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "username" ] } } ] }, "config" : { - "pagination" : [ "false" ], "fullSyncPeriod" : [ "-1" ], + "pagination" : [ "false" ], "startTls" : [ "false" ], "connectionPooling" : [ "true" ], "usersDn" : [ "ou=users,dc=dbrepo,dc=at" ], @@ -2363,15 +2524,15 @@ "useKerberosForPasswordAuthentication" : [ "false" ], "importEnabled" : [ "true" ], "enabled" : [ "true" ], + "bindCredential" : [ "admin" ], "changedSyncPeriod" : [ "-1" ], - "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], "usernameLDAPAttribute" : [ "uid" ], - "bindCredential" : [ "admin" ], + "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], "lastSync" : [ "1719252666" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], - "connectionUrl" : [ "ldap://identity-service:1389" ], "allowKerberosAuthentication" : [ "false" ], + "connectionUrl" : [ "ldap://identity-service:1389" ], "syncRegistrations" : [ "true" ], "authType" : [ "simple" ], "useTruststoreSpi" : [ "always" ], @@ -2383,14 +2544,6 @@ "validatePasswordPolicy" : [ "false" ] } } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "a407a1d6-a7f6-4a72-ba3a-149de03d5a43", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] - } - } ], "org.keycloak.keys.KeyProvider" : [ { "id" : "2f53ccf3-37b0-4d34-83e7-ed497499ee51", "name" : "rsa-enc-generated", @@ -3003,10 +3156,12 @@ "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", + "organizationsEnabled" : "false", "shortVerificationUri" : "" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.4", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, diff --git a/dbrepo-auth-service/init/app.py b/dbrepo-auth-service/init/app.py index f22541ba55..5e42003a19 100644 --- a/dbrepo-auth-service/init/app.py +++ b/dbrepo-auth-service/init/app.py @@ -7,7 +7,7 @@ endpoint = os.getenv('AUTH_SERVICE_ENDPOINT', 'http://localhost:8080') system_username = os.getenv('SYSTEM_USERNAME', 'admin') -def fetch() -> str: +def fetch() -> (str, str): print(f'Fetching user id of internal user with username: {system_username}') response = post(url=f'{endpoint}/realms/master/protocol/openid-connect/token', data=dict({ 'username': os.getenv('AUTH_SERVICE_ADMIN', 'admin'), @@ -25,7 +25,8 @@ def fetch() -> str: if response.status_code != 200 or len(response.json()) != 1: raise FileNotFoundError(f'Failed to obtain user') ldap_user = response.json()[0] - print(f'Successfully fetched user id: {ldap_user["id"]}') + user_id = ldap_user["id"] + print(f'Successfully fetched user id: {user_id}') if 'attributes' not in ldap_user or ldap_user['attributes'] is None: raise ModuleNotFoundError(f'Failed to obtain user attributes: {ldap_user}') ldap_user_attrs = ldap_user['attributes'] @@ -35,10 +36,10 @@ def fetch() -> str: raise EnvironmentError(f'Failed to obtain ldap id: wrong length {len(ldap_user_attrs["LDAP_ID"])} != 1') ldap_user_id = ldap_user_attrs['LDAP_ID'][0] print(f'Successfully fetched ldap user id: {ldap_user_id}') - return ldap_user_id + return (ldap_user_id, user_id) -def save(user_id: str) -> None: +def save(user_id: str, keycloak_id: str) -> None: conn = mariadb.connect(user=os.getenv('METADATA_USERNAME', 'root'), password=os.getenv('METADATA_DB_PASSWORD', 'dbrepo'), host="metadata-db", @@ -46,12 +47,13 @@ def save(user_id: str) -> None: database=os.getenv('METADATA_DB', 'dbrepo')) cursor = conn.cursor() cursor.execute( - "INSERT IGNORE INTO `mdb_users` (`id`, `username`, `mariadb_password`, `is_internal`) VALUES (?, ?, PASSWORD(LEFT(UUID(), 20)), true)", - (user_id, system_username)) + "INSERT IGNORE INTO `mdb_users` (`id`, `keycloak_id`, `username`, `mariadb_password`, `is_internal`) VALUES (?, ?, ?, PASSWORD(LEFT(UUID(), 20)), true)", + (user_id, keycloak_id, system_username)) conn.commit() conn.close() if __name__ == '__main__': - save(fetch()) + user_id, keycloak_id = fetch() + save(user_id, keycloak_id) print(f'Successfully inserted user') diff --git a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java index b64320588d..2b5d9221a7 100644 --- a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java +++ b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java @@ -60,16 +60,17 @@ public class CreateEventListenerProvider implements EventListenerProvider { } private void sendUserData(UserModel user) { + final String userData = "{" + + quoteAttr("id", user.getId()) + ", " + + quoteAttr("username", user.getUsername()) + ", " + + quoteAttr("email", user.getEmail()) + ", " + + quoteAttr("ldap_id", user.getFirstAttribute("LDAP_ID")) + ", " + + quoteAttr("given_name", user.getFirstName()) + ", " + + quoteAttr("family_name", user.getLastName()) + + "}"; try { - Client.postService("{" + - quoteAttr("id", user.getId()) + ", " + - quoteAttr("username", user.getUsername()) + ", " + - quoteAttr("email", user.getEmail()) + ", " + - quoteAttr("ldap_id", user.getFirstAttribute("LDAP_ID")) + ", " + - quoteAttr("given_name", user.getFirstName()) + ", " + - quoteAttr("family_name", user.getLastName()) + - "}"); - log.debug("A new user has been created and post API"); + log.debugf("create new user in API: %s", userData); + Client.postService(userData); } catch (Exception e) { log.errorf("Failed to call API: %s", e); } diff --git a/dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar b/dbrepo-auth-service/listeners/src/test/resources/create-event-listener.jar deleted file mode 100644 index 221bdd325f056ff953e0a44a46773470eb08e91e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10015 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 E0G?_lI{*Lx diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index a32aab676ff3184bf63aba72fdf7e4b1b0392d02..9a9cd149f84ff92e5292a9fdc19a81edcc9ca7b7 100644 GIT binary patch delta 4440 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 delta 4561 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 E0O!sp(f|Me diff --git a/dbrepo-auth-service/master-realm.json b/dbrepo-auth-service/master-realm.json index ef06561e68..1cf53fe49c 100644 --- a/dbrepo-auth-service/master-realm.json +++ b/dbrepo-auth-service/master-realm.json @@ -40,6 +40,7 @@ "bruteForceProtected" : false, "permanentLockout" : false, "maxTemporaryLockouts" : 0, + "bruteForceStrategy" : "MULTIPLE", "maxFailureWaitSeconds" : 900, "minimumQuickLoginWaitSeconds" : 60, "waitIncrementSeconds" : 60, @@ -664,8 +665,8 @@ "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "client.use.lightweight.access.token.enabled" : "true" + "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, "fullScopeAllowed" : true, @@ -783,8 +784,8 @@ "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, "authenticationFlowBindingOverrides" : { }, @@ -816,8 +817,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "4aed5e41-0d8d-4c24-80a0-cd9822072756", @@ -845,8 +846,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${organizationScopeConsentText}" + "consent.screen.text" : "${organizationScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "5e80a7d2-c9d0-48e1-aadc-d8848ff90f92", @@ -864,6 +865,61 @@ "jsonType.label" : "String" } } ] + }, { + "id" : "1be1e284-2749-4bbb-890a-2d519cc1531c", + "name" : "service_account", + "description" : "Specific scope for a client enabled for service accounts", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "c913a673-cf66-4493-a2ed-14556c07617c", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "client_id", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + }, { + "id" : "5c244d68-5c63-4356-ac71-5a586f40c77e", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + }, { + "id" : "600285d4-ae51-4b39-a7be-bb83cf5870db", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + } ] }, { "id" : "0411ea86-a074-4781-850d-ea3ca94590a2", "name" : "offline_access", @@ -915,8 +971,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "2d1400be-4053-4393-ba87-91b64f699054", @@ -1217,8 +1273,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, "protocolMappers" : [ { "id" : "635cbac1-7cab-43bd-99fc-f7084aca2fa2", @@ -1254,8 +1310,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "2b5a3df4-1adb-402d-bc28-2bd43224e682", @@ -1264,12 +1320,12 @@ "protocolMapper" : "oidc-usermodel-realm-role-mapper", "consentRequired" : false, "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", "user.attribute" : "foo", + "introspection.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "realm_access.roles", - "jsonType.label" : "String" + "jsonType.label" : "String", + "multivalued" : "true" } }, { "id" : "f3b60071-ef26-48a7-9554-67f62f84d543", @@ -1278,12 +1334,12 @@ "protocolMapper" : "oidc-usermodel-client-role-mapper", "consentRequired" : false, "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", "user.attribute" : "foo", + "introspection.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String" + "jsonType.label" : "String", + "multivalued" : "true" } }, { "id" : "b757200e-494a-4585-857e-e4c18aef7a0c", @@ -1303,8 +1359,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "e18769b3-778b-47d8-be52-dd2769deebd1", @@ -1344,8 +1400,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "98cc724c-3f53-47f7-bf9f-baf2f7e08026", @@ -1431,7 +1487,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "saml-user-attribute-mapper", "oidc-address-mapper", "saml-user-property-mapper" ] } }, { "id" : "4b976576-c880-48a0-9b4d-2956cfd19b4a", @@ -1440,7 +1496,7 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper" ] } }, { "id" : "e1861ec9-2761-46fb-8048-149492269ff0", @@ -1470,6 +1526,14 @@ "allow-default-scopes" : [ "true" ] } } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "34049725-5a66-456c-b895-87ca7c11bb6b", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] + } + } ], "org.keycloak.storage.UserStorageProvider" : [ { "id" : "3a6f24e8-128b-4ac1-b3ab-694836db82fd", "name" : "Identity Service", @@ -1483,8 +1547,8 @@ "config" : { "ldap.attribute" : [ "mail" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "email" ] } }, { @@ -1495,8 +1559,8 @@ "config" : { "ldap.attribute" : [ "sn" ], "is.mandatory.in.ldap" : [ "true" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "lastName" ] } }, { @@ -1507,8 +1571,8 @@ "config" : { "ldap.attribute" : [ "modifyTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "true" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "modifyTimestamp" ] } }, { @@ -1541,17 +1605,17 @@ "providerId" : "group-ldap-mapper", "subComponents" : { }, "config" : { + "mode" : [ "LDAP_ONLY" ], "membership.attribute.type" : [ "DN" ], + "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "group.name.ldap.attribute" : [ "cn" ], + "ignore.missing.groups" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], "preserve.group.inheritance" : [ "false" ], - "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], - "mode" : [ "LDAP_ONLY" ], - "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "membership.ldap.attribute" : [ "member" ], - "ignore.missing.groups" : [ "false" ], - "group.object.classes" : [ "groupOfNames" ], + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "memberof.ldap.attribute" : [ "memberOf" ], + "group.object.classes" : [ "groupOfNames" ], "drop.non.existing.groups.during.sync" : [ "false" ], "groups.path" : [ "/" ] } @@ -1563,8 +1627,8 @@ "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "true" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } } ] @@ -1580,9 +1644,9 @@ "importEnabled" : [ "true" ], "enabled" : [ "true" ], "changedSyncPeriod" : [ "-1" ], + "usernameLDAPAttribute" : [ "uid" ], "bindCredential" : [ "admin" ], "bindDn" : [ "cn=admin,dc=dbrepo,dc=at" ], - "usernameLDAPAttribute" : [ "uid" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], "allowKerberosAuthentication" : [ "false" ], @@ -1600,14 +1664,6 @@ "validatePasswordPolicy" : [ "false" ] } } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "34049725-5a66-456c-b895-87ca7c11bb6b", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] - } - } ], "org.keycloak.keys.KeyProvider" : [ { "id" : "5b1052d2-fb71-47d2-86f9-908c869c8d1b", "name" : "hmac-generated-hs512", @@ -2219,10 +2275,12 @@ "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", "frontendUrl" : "", + "organizationsEnabled" : "false", "acr.loa.map" : "{}" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.4", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index 173bce7b03..e2bde25ed6 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -3,6 +3,7 @@ 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), @@ -13,6 +14,7 @@ CREATE TABLE IF NOT EXISTS `mdb_users` theme character varying(255) NOT NULL default ('light'), language character varying(3) NOT NULL default ('en'), PRIMARY KEY (id), + UNIQUE (keycloak_id), UNIQUE (username) ) WITH SYSTEM VERSIONING; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/ModifyUserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/ModifyUserDto.java new file mode 100644 index 0000000000..26d700e798 --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/ModifyUserDto.java @@ -0,0 +1,26 @@ +package at.tuwien.api.keycloak; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class ModifyUserDto { + + @JsonProperty("firstName") + private String firstname; + + @JsonProperty("lastName") + private String lastname; + + @NotNull + private UserAttributesDto attributes; + +} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesDto.java index 027955ba77..50718bc803 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesDto.java @@ -16,12 +16,20 @@ import java.util.UUID; @ToString public class UserAttributesDto { - @Schema(example = "s3cr3t") - @JsonProperty("LDAP_ENTRY_DN") - private String[] ldapEntryDn; + @Schema(example = "dark") + @JsonProperty("THEME") + private String[] theme; - @Schema(example = "false") - @JsonProperty("LDAP_ID") - private UUID[] ldapId; + @Schema(example = "en") + @JsonProperty("LANGUAGE") + private String[] language; + + @Schema(example = "https://ror.org/04d836q62") + @JsonProperty("AFFILIATION") + private String[] affiliation; + + @Schema(example = "https://orcid.org/0000-0003-4216-302X") + @JsonProperty("ORCID") + private String[] orcid; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserDto.java deleted file mode 100644 index a2d7811ab0..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserDto.java +++ /dev/null @@ -1,52 +0,0 @@ -package at.tuwien.api.keycloak; - -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.util.UUID; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class UserDto { - - @NotNull - private UUID id; - - @NotNull - @Schema(example = "jcarberry", description = "Only contains lowercase characters") - private String username; - - @NotNull - @Schema(example = "true") - private Boolean enabled; - - @NotNull - @Schema(example = "false") - private Boolean totp; - - @NotNull - @JsonProperty("emailVerified") - @Schema(example = "false") - private Boolean emailVerified; - - @NotNull - @Schema(example = "jcarberry@brown.edu") - private String email; - - @NotNull - @JsonProperty("notBefore") - @Schema(example = "0") - private Long notBefore; - - @NotNull - private UserAttributesDto attributes; - -} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserIdAttributesDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserIdAttributesDto.java new file mode 100644 index 0000000000..3155d75f02 --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserIdAttributesDto.java @@ -0,0 +1,27 @@ +package at.tuwien.api.keycloak; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +import java.util.UUID; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class UserIdAttributesDto { + + @Schema(example = "s3cr3t") + @JsonProperty("LDAP_ENTRY_DN") + private String[] ldapEntryDn; + + @Schema(example = "false") + @JsonProperty("LDAP_ID") + private UUID[] ldapId; + +} diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/orcid/activities/employments/affiliation/group/summary/organization/disambiguated/OrcidDisambiguatedSourceTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/orcid/activities/employments/affiliation/group/summary/organization/disambiguated/OrcidDisambiguatedSourceTypeDto.java index 78b87e3321..f883a034f5 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/orcid/activities/employments/affiliation/group/summary/organization/disambiguated/OrcidDisambiguatedSourceTypeDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/orcid/activities/employments/affiliation/group/summary/organization/disambiguated/OrcidDisambiguatedSourceTypeDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.orcid.activities.employments.affiliation.group.summary.organization.disambiguated; public enum OrcidDisambiguatedSourceTypeDto { - RINGGOLD + RINGGOLD, + ROR } 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 de3111e5c8..ba86e3d29c 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 @@ -30,6 +30,10 @@ public class User { @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; + @JdbcTypeCode(java.sql.Types.VARCHAR) + @Column(name = "keycloak_id", nullable = false, columnDefinition = "VARCHAR(36)") + private UUID keycloakId; + @Column(nullable = false) private String username; diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index c165efdc3d..5dd6ce3318 100644 --- a/dbrepo-metadata-service/pom.xml +++ b/dbrepo-metadata-service/pom.xml @@ -52,7 +52,7 @@ <apache-jena.version>4.10.0</apache-jena.version> <opencsv.version>5.7.1</opencsv.version> <super-csv.version>2.4.0</super-csv.version> - <keycloak.version>21.0.2</keycloak.version> + <keycloak.version>26.0.4</keycloak.version> <springdoc-openapi.version>2.3.0</springdoc-openapi.version> <testcontainers.version>1.19.1</testcontainers.version> <jackson.version>2.15.2</jackson.version> @@ -187,6 +187,11 @@ <artifactId>keycloak-common</artifactId> <version>${keycloak.version}</version> </dependency> + <dependency> + <groupId>org.keycloak</groupId> + <artifactId>keycloak-admin-client</artifactId> + <version>${keycloak.version}</version> + </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> 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 97c0d0b903..cfbf858000 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 @@ -30,9 +30,8 @@ import at.tuwien.api.datacite.doi.*; import at.tuwien.api.identifier.*; import at.tuwien.api.identifier.ld.LdCreatorDto; import at.tuwien.api.identifier.ld.LdDatasetDto; -import at.tuwien.api.keycloak.CredentialDto; -import at.tuwien.api.keycloak.CredentialTypeDto; -import at.tuwien.api.keycloak.UpdateCredentialsDto; +import at.tuwien.api.keycloak.TokenDto; +import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.api.maintenance.BannerMessageBriefDto; import at.tuwien.api.maintenance.BannerMessageCreateDto; import at.tuwien.api.maintenance.BannerMessageDto; @@ -48,8 +47,8 @@ import at.tuwien.api.semantics.OntologyBriefDto; import at.tuwien.api.semantics.OntologyCreateDto; import at.tuwien.api.semantics.OntologyDto; import at.tuwien.api.user.UserBriefDto; -import at.tuwien.api.user.UserDetailsDto; import at.tuwien.api.user.UserDto; +import at.tuwien.api.user.UserUpdateDto; import at.tuwien.api.user.external.ExternalMetadataDto; import at.tuwien.api.user.external.ExternalResultType; import at.tuwien.api.user.external.affiliation.ExternalAffiliationDto; @@ -72,6 +71,8 @@ import at.tuwien.entities.maintenance.BannerMessage; import at.tuwien.entities.maintenance.BannerMessageType; import at.tuwien.entities.semantics.Ontology; import at.tuwien.entities.user.User; +import org.keycloak.representations.AccessTokenResponse; +import org.keycloak.representations.idm.UserRepresentation; import org.mapstruct.*; import java.text.Normalizer; @@ -95,6 +96,16 @@ public interface MetadataMapper { }) DataTypeDto dataTypeToDataTypeDto(DataType data); + @Mappings({ + @Mapping(target = "attributes", ignore = true) + }) + UserRepresentation userCreateDtoToUserRepresentation(UserCreateDto data); + + @Mappings({ + @Mapping(target = "accessToken", source = "token") + }) + TokenDto accessTokenResponseToTokenDto(AccessTokenResponse data); + BannerMessageDto bannerMessageToBannerMessageDto(BannerMessage data); BannerMessageBriefDto bannerMessageToBannerMessageBriefDto(BannerMessage data); @@ -110,6 +121,16 @@ public interface MetadataMapper { }) Container containerCreateRequestDtoToContainer(CreateContainerDto data); + UserUpdateDto userToUserUpdateDto(User data); + + default List<String> optionalValueToMap(String value) { + final List<String> attr = new LinkedList<>(); + if (value != null) { + attr.add(value); + } + return attr; + } + ContainerDto containerToContainerDto(Container data); @Mappings({ @@ -747,27 +768,6 @@ public interface MetadataMapper { }) TableColumn columnCreateDtoToTableColumn(CreateTableColumnDto data, ContainerImage image); - default UpdateCredentialsDto passwordToUpdateCredentialsDto(String password) { - return UpdateCredentialsDto.builder() - .credentials(List.of(CredentialDto.builder() - .temporary(false) - .type(CredentialTypeDto.PASSWORD) - .value(password) - .build())) - .build(); - } - - /* keep */ - UserBriefDto keycloakUserDtoToUserBriefDto(at.tuwien.api.keycloak.UserDto data); - - /* keep */ - @Mappings({ - @Mapping(target = "id", expression = "java(data.getId().toString())") - }) - UserDetailsDto userDtoToUserDetailsDto(UserDto data); - - User userDtoToUser(at.tuwien.api.keycloak.UserDto data); - /* keep */ @Mappings({ @Mapping(target = "name", expression = "java(userToFullName(data))"), @@ -775,8 +775,6 @@ public interface MetadataMapper { }) UserBriefDto userToUserBriefDto(User data); - UserBriefDto userDtoToUserBriefDto(UserDto data); - /* keep */ @Mappings({ @Mapping(target = "attributes.language", source = "language"), @@ -789,9 +787,6 @@ public interface MetadataMapper { }) UserDto userToUserDto(User data); - /* keep */ - User userDtoToUserDto(UserDto data); - /* keep */ @Named("userToFullName") default String userToFullName(User data) { diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index d289c097d4..fea215194b 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -1,10 +1,7 @@ package at.tuwien.endpoints; import at.tuwien.api.auth.CreateUserDto; -import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.auth.RefreshTokenRequestDto; import at.tuwien.api.error.ApiErrorDto; -import at.tuwien.api.keycloak.TokenDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -98,7 +95,7 @@ public class UserEndpoint extends AbstractEndpoint { @PreAuthorize("hasAuthority('system')") @Observed(name = "dbrepo_user_create") @Operation(summary = "Create user", - description = "Creates a user in the auth service and metadata database. Requires that no credentials are sent in the request.", + description = "This webhook is called from the auth service to add a user to the metadata database. Requires role `system`.", hidden = true) @ApiResponses(value = { @ApiResponse(responseCode = "201", @@ -149,78 +146,6 @@ public class UserEndpoint extends AbstractEndpoint { userService.create(data))); } - @PostMapping("/token") - @Observed(name = "dbrepo_user_token") - @Operation(summary = "Create token", - description = "Creates a user token via the Auth Service.") - @ApiResponses(value = { - @ApiResponse(responseCode = "202", - description = "Obtained user token", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = TokenDto.class))}), - @ApiResponse(responseCode = "400", - description = "Invalid login request", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "403", - description = "Not allowed to get token", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "428", - description = "Account is not fully setup in auth service (requires password change?)", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "502", - description = "Connection to auth service failed", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - }) - public ResponseEntity<TokenDto> getToken(@NotNull @Valid @RequestBody LoginRequestDto data) - throws AuthServiceConnectionException, CredentialsInvalidException, AccountNotSetupException { - log.debug("endpoint get token, data.username={}", data.getUsername()); - return ResponseEntity.accepted() - .body(authenticationService.obtainToken(data)); - } - - @PutMapping("/token") - @Observed(name = "dbrepo_user_refresh_token") - @Operation(summary = "Refresh token", - description = "Refreshes user token by refresh token.") - @ApiResponses(value = { - @ApiResponse(responseCode = "202", - description = "Refreshed user token", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = TokenDto.class))}), - @ApiResponse(responseCode = "400", - description = "Invalid refresh token", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "403", - description = "Not allowed", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "502", - description = "Connection to auth service failed", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - }) - public ResponseEntity<TokenDto> refreshToken(@NotNull @Valid @RequestBody RefreshTokenRequestDto data) - throws AuthServiceConnectionException, CredentialsInvalidException { - log.debug("endpoint refresh token"); - /* check */ - return ResponseEntity.accepted() - .body(authenticationService.refreshToken(data.getRefreshToken())); - } - @GetMapping("/{userId}") @Transactional(readOnly = true) @PreAuthorize("isAuthenticated()") @@ -300,7 +225,8 @@ public class UserEndpoint extends AbstractEndpoint { public ResponseEntity<UserBriefDto> modify(@NotNull @PathVariable("userId") UUID userId, @NotNull @Valid @RequestBody UserUpdateDto data, @NotNull Principal principal) throws NotAllowedException, - UserNotFoundException, DatabaseNotFoundException { + UserNotFoundException, DatabaseNotFoundException, AuthServiceException, + AuthServiceConnectionException { log.debug("endpoint modify a user, userId={}, data={}", userId, data); final User user = userService.findById(userId); if (!user.getId().equals(getId(principal))) { 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 5118aec776..f5db6bf03e 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 @@ -353,15 +353,12 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-visibility"}) public void visibility_hasRole_succeeds() throws NotAllowedException, UserNotFoundException, - DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, AuthServiceException, - AuthServiceConnectionException { + DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException{ final DatabaseModifyVisibilityDto request = DatabaseModifyVisibilityDto.builder() .isPublic(true) .build(); /* mock */ - when(keycloakGateway.findByUsername(USER_1_USERNAME)) - .thenReturn(USER_1_KEYCLOAK_DTO); when(userService.findById(USER_1_ID)) .thenReturn(USER_1); @@ -509,7 +506,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-owner"}) public void transfer_hasRole_succeeds() throws DataServiceConnectionException, DataServiceException, NotAllowedException, UserNotFoundException, DatabaseNotFoundException, SearchServiceException, - SearchServiceConnectionException, AuthServiceException, AuthServiceConnectionException { + SearchServiceConnectionException { final DatabaseTransferDto request = DatabaseTransferDto.builder() .id(USER_4_ID) .build(); @@ -517,8 +514,6 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(databaseService.findById(DATABASE_1_ID)) .thenReturn(DATABASE_1); - when(keycloakGateway.findByUsername(USER_1_USERNAME)) - .thenReturn(USER_1_KEYCLOAK_DTO); when(userService.findById(USER_1_ID)) .thenReturn(USER_1); when(userService.findById(USER_4_ID)) 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 aa93963b48..b1a65fc0cd 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 @@ -1,7 +1,6 @@ package at.tuwien.endpoints; import at.tuwien.api.auth.CreateUserDto; -import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; @@ -213,7 +212,8 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-user-information"}) - public void modify_succeeds() throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException { + public void modify_succeeds() throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException, + AuthServiceException, AuthServiceConnectionException { final UserUpdateDto request = UserUpdateDto.builder() .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) @@ -264,99 +264,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { password_generic(USER_1_PRINCIPAL, request); } - @Test - @WithAnonymousUser - public void getToken_anonymous_succeeds() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, AccountNotSetupException, CredentialsInvalidException { - - /* test */ - getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, USER_1); - } - - @Test - @WithMockUser(username = USER_1_USERNAME) - public void getToken_loggedIn_succeeds() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, AccountNotSetupException, CredentialsInvalidException { - - /* test */ - getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, USER_1); - } - - @Test - @WithAnonymousUser - public void getToken_notExists_succeeds() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException, AccountNotSetupException, CredentialsInvalidException { - - /* mock */ - when(authenticationService.findByUsername(USER_1_USERNAME)) - .thenReturn(USER_1_KEYCLOAK_DTO); - when(userService.create(any(CreateUserDto.class))) - .thenReturn(USER_1); - - /* test */ - getToken_generic(USER_1_LOGIN_REQUEST_DTO, USER_1_PRINCIPAL, null); - } - - @Test - @WithAnonymousUser - public void refreshToken_anonymous_succeeds() throws AuthServiceConnectionException, CredentialsInvalidException { - - /* mock */ - when(authenticationService.refreshToken(anyString())) - .thenReturn(TOKEN_DTO); - - /* test */ - final ResponseEntity<?> response = userEndpoint.refreshToken(REFRESH_TOKEN_REQUEST_DTO); - assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); - assertNotNull(response.getBody()); - } - - @Test - @WithMockUser(username = USER_1_USERNAME) - public void refreshToken_loggedIn_succeeds() throws AuthServiceConnectionException, CredentialsInvalidException { - - /* mock */ - when(authenticationService.refreshToken(anyString())) - .thenReturn(TOKEN_DTO); - - /* test */ - final ResponseEntity<?> response = userEndpoint.refreshToken(REFRESH_TOKEN_REQUEST_DTO); - assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); - assertNotNull(response.getBody()); - } - - @Test - @WithMockUser(username = USER_1_USERNAME) - public void refreshToken_authServiceConnection_fails() throws AuthServiceConnectionException, - CredentialsInvalidException { - - /* mock */ - doThrow(AuthServiceConnectionException.class) - .when(authenticationService) - .refreshToken(anyString()); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - userEndpoint.refreshToken(REFRESH_TOKEN_REQUEST_DTO); - }); - } - - @Test - @WithMockUser(username = USER_1_USERNAME) - public void refreshToken_invalidCredentials_fails() throws AuthServiceConnectionException, - CredentialsInvalidException { - - /* mock */ - doThrow(CredentialsInvalidException.class) - .when(authenticationService) - .refreshToken(anyString()); - - /* test */ - assertThrows(CredentialsInvalidException.class, () -> { - userEndpoint.refreshToken(REFRESH_TOKEN_REQUEST_DTO); - }); - } - /* ################################################################################################### */ /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ @@ -422,7 +329,8 @@ public class UserEndpointUnitTest extends AbstractUnitTest { } protected void modify_generic(UUID userId, User user, Principal principal, UserUpdateDto data) - throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException { + throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException, AuthServiceException, + AuthServiceConnectionException { /* mock */ if (user != null) { when(userService.findById(userId)) @@ -458,26 +366,4 @@ public class UserEndpointUnitTest extends AbstractUnitTest { final ResponseEntity<?> response = userEndpoint.password(USER_1_ID, data, principal); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); } - - protected void getToken_generic(LoginRequestDto request, Principal principal, User user) - throws UserNotFoundException, AuthServiceConnectionException, AccountNotSetupException, - CredentialsInvalidException, AuthServiceException { - - /* mock */ - when(authenticationService.obtainToken(any(LoginRequestDto.class))) - .thenReturn(TOKEN_DTO); - if (user != null) { - when(userService.findByUsername(principal.getName())) - .thenReturn(user); - } else { - doThrow(UserNotFoundException.class) - .when(userService) - .findByUsername(principal.getName()); - } - - /* test */ - final ResponseEntity<?> response = userEndpoint.getToken(request); - assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); - assertNotNull(response.getBody()); - } } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java index fa21bcbec5..cbb607792e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java @@ -1,8 +1,9 @@ package at.tuwien.gateway; import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UserDto; -import at.tuwien.exception.*; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.impl.KeycloakGatewayImpl; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -12,15 +13,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestTemplate; -import java.nio.charset.Charset; - -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; @Log4j2 @@ -190,233 +192,4 @@ public class KeycloakGatewayUnitTest extends AbstractUnitTest { }); } - @Test - public void findByUsername_notFound_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto[].class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(new UserDto[]{})); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - keycloakGateway.findByUsername(USER_1_USERNAME); - }); - } - - @Test - public void findByUsername_connection_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpServerErrorException.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto[].class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.findByUsername(USER_1_USERNAME); - }); - } - - @Test - public void findByUsername_unexpected_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.Conflict.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto[].class)); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.findByUsername(USER_1_USERNAME); - }); - } - - @Test - public void findById_succeeds() throws UserNotFoundException, AuthServiceException, AuthServiceConnectionException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(USER_1_KEYCLOAK_DTO)); - - /* test */ - final UserDto response = keycloakGateway.findById(USER_1_ID); - assertEquals(USER_1_ID, response.getId()); - } - - @Test - public void findById_notFound_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.NotFound.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto.class)); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - keycloakGateway.findById(USER_1_ID); - }); - } - - @Test - public void findById_connection_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpServerErrorException.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.findById(USER_1_ID); - }); - } - - @Test - public void findById_unexpected_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.Conflict.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(UserDto.class)); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.findById(USER_1_ID); - }); - } - - @Test - public void refreshUserToken_succeeds() throws AuthServiceConnectionException, CredentialsInvalidException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - - /* test */ - final TokenDto response = keycloakGateway.refreshUserToken(TOKEN_DTO.getRefreshToken()); - assertNotNull(response.getAccessToken()); - } - - @Test - public void refreshUserToken_connection_fails() { - - /* mock */ - doThrow(HttpServerErrorException.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.refreshUserToken(TOKEN_DTO.getRefreshToken()); - }); - } - - @Test - public void refreshUserToken_unauthorized_fails() { - - /* mock */ - doThrow(HttpClientErrorException.Unauthorized.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(CredentialsInvalidException.class, () -> { - keycloakGateway.refreshUserToken(TOKEN_DTO.getRefreshToken()); - }); - } - - @Test - public void refreshUserToken_badRequest_fails() { - - /* mock */ - doThrow(HttpClientErrorException.BadRequest.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(CredentialsInvalidException.class, () -> { - keycloakGateway.refreshUserToken(TOKEN_DTO.getRefreshToken()); - }); - } - - @Test - public void refreshUserToken_badRequestInactiveSession_fails() { - - /* mock */ - doThrow(HttpClientErrorException.BadRequest.create(HttpStatus.BAD_REQUEST, "Session not active", new HttpHeaders(), new byte[]{}, Charset.defaultCharset())) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(CredentialsInvalidException.class, () -> { - keycloakGateway.refreshUserToken(TOKEN_DTO.getRefreshToken()); - }); - } - - @Test - public void obtainUserToken_succeeds() throws AuthServiceConnectionException, - AccountNotSetupException, CredentialsInvalidException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - - /* test */ - final TokenDto response = keycloakGateway.obtainUserToken(USER_1_USERNAME, USER_1_PASSWORD); - assertNotNull(response.getAccessToken()); - } - - @Test - public void obtainUserToken_connection_fails() { - - /* mock */ - doThrow(HttpServerErrorException.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.obtainUserToken(USER_1_USERNAME, USER_1_PASSWORD); - }); - } - - @Test - public void obtainUserToken_unauthorized_fails() { - - /* mock */ - doThrow(HttpClientErrorException.Unauthorized.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class)); - - /* test */ - assertThrows(CredentialsInvalidException.class, () -> { - keycloakGateway.obtainUserToken(USER_1_USERNAME, USER_1_PASSWORD); - }); - } - } 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 558935f3b7..7dd25baefc 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 @@ -4,6 +4,7 @@ import at.tuwien.api.keycloak.TokenDto; import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.CredentialsInvalidException; +import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.DatabaseRepository; import at.tuwien.repository.LicenseRepository; @@ -63,6 +64,9 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest @Autowired private AuthenticationService authenticationService; + @Autowired + private KeycloakGateway keycloakGateway; + @Container private static KeycloakContainer keycloakContainer = new KeycloakContainer(KEYCLOAK_IMAGE) .withImagePullPolicy(PullPolicy.alwaysPull()) @@ -124,7 +128,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest /* pre condition */ keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); - final TokenDto jwt = authenticationService.obtainToken(USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO); + 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())) @@ -140,7 +144,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest /* pre condition */ keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); - final TokenDto jwt = authenticationService.obtainToken(USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO); + final TokenDto jwt = keycloakGateway.obtainUserToken(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD); /* test */ 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 e22a7a4a05..61655c6f29 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 @@ -1,6 +1,5 @@ package at.tuwien.mvc; -import at.tuwien.api.auth.RefreshTokenRequestDto; import at.tuwien.api.container.CreateContainerDto; import at.tuwien.api.database.DatabaseModifyImageDto; import at.tuwien.api.database.DatabaseModifyVisibilityDto; @@ -593,11 +592,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } catch (Exception e) { /* ignore */ } - try { - userEndpoint.refreshToken(RefreshTokenRequestDto.builder().build()); - } catch (Exception e) { - /* ignore */ - } /* test */ for (String metric : List.of("dbrepo_user_refresh_token", "dbrepo_users_list", @@ -618,11 +612,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } catch (Exception e) { /* ignore */ } - try { - userEndpoint.getToken(USER_1_LOGIN_REQUEST_DTO); - } catch (Exception e) { - /* ignore */ - } /* test */ assertThat(registry) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java index 44009e5adc..712dc951c8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java @@ -20,6 +20,8 @@ import org.testcontainers.images.PullPolicy; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import java.util.UUID; + @Log4j2 @Testcontainers @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) @@ -42,7 +44,7 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { } @Container - private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:24.0") + private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:26.0") .withImagePullPolicy(PullPolicy.alwaysPull()) .withAdminUsername("admin") .withAdminPassword("admin") @@ -60,13 +62,13 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { /* mock */ try { - keycloakGateway.deleteUser(keycloakGateway.findByUsername(USER_1_USERNAME).getId()); + keycloakGateway.deleteUser(UUID.fromString(keycloakGateway.findByUsername(USER_1_USERNAME).getId())); } catch (Exception e) { /* ignore */ } keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); final User request = User.builder() - .id(keycloakGateway.findByUsername(USER_1_USERNAME).getId()) + .id(UUID.fromString(keycloakGateway.findByUsername(USER_1_USERNAME).getId())) .username(USER_1_USERNAME) .build(); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java index e3c677c28e..7ec6d680e7 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java @@ -3,9 +3,7 @@ package at.tuwien.service; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.EmailExistsException; -import at.tuwien.exception.UserExistsException; -import at.tuwien.exception.UserNotFoundException; +import at.tuwien.exception.*; import at.tuwien.repository.UserRepository; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -67,7 +65,8 @@ public class UserServicePersistenceTest extends AbstractUnitTest { } @Test - public void create_succeeds() throws UserExistsException, UserNotFoundException, EmailExistsException { + public void create_succeeds() throws UserExistsException, UserNotFoundException, EmailExistsException, + AuthServiceException, AuthServiceConnectionException { /* test */ final User response = userService.create(USER_2_SIGNUP_REQUEST_DTO); @@ -75,7 +74,7 @@ public class UserServicePersistenceTest extends AbstractUnitTest { } @Test - public void modify_succeeds() { + public void modify_succeeds() throws UserNotFoundException, AuthServiceException, AuthServiceConnectionException { final UserUpdateDto request = UserUpdateDto.builder() .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) @@ -97,7 +96,8 @@ public class UserServicePersistenceTest extends AbstractUnitTest { } @Test - public void updatePassword_succeeds() { + public void updatePassword_succeeds() throws UserNotFoundException, AuthServiceException, + AuthServiceConnectionException { final UserPasswordDto request = UserPasswordDto.builder() .password(USER_3_PASSWORD) .build(); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java index d4442c2916..91bcdd330c 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java @@ -86,8 +86,6 @@ public class UserServiceUnitTest extends AbstractUnitTest { .thenReturn(Optional.of(USER_1)); when(userRepository.save(any(User.class))) .thenReturn(USER_1); - when(keycloakGateway.findByUsername(USER_1_USERNAME)) - .thenReturn(USER_1_KEYCLOAK_DTO); /* test */ final User response = userService.create(USER_1_SIGNUP_REQUEST_DTO); @@ -96,7 +94,7 @@ public class UserServiceUnitTest extends AbstractUnitTest { } @Test - public void modify_succeeds() { + public void modify_succeeds() throws UserNotFoundException, AuthServiceException, AuthServiceConnectionException { /* mock */ when(userRepository.findById(USER_1_ID)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java index ba83f3dbc6..469280d1cd 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java @@ -1,74 +1,57 @@ package at.tuwien.utils; -import at.tuwien.api.auth.KeycloakErrorDto; import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.config.KeycloakConfig; -import at.tuwien.exception.*; -import at.tuwien.gateway.KeycloakGateway; +import at.tuwien.mapper.MetadataMapper; +import jakarta.ws.rs.core.Response; import lombok.extern.log4j.Log4j2; +import org.keycloak.admin.client.Keycloak; +import org.keycloak.representations.idm.UserRepresentation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; -import java.util.UUID; +import java.util.List; @Log4j2 @Component public class KeycloakUtils { - private final RestTemplate keycloakRestTemplate; + private final Keycloak keycloak; private final KeycloakConfig keycloakConfig; - private final KeycloakGateway keycloakGateway; + private final MetadataMapper metadataMapper; @Autowired - public KeycloakUtils(@Qualifier("keycloakRestTemplate") RestTemplate keycloakRestTemplate, KeycloakConfig keycloakConfig, - KeycloakGateway keycloakGateway) { - this.keycloakRestTemplate = keycloakRestTemplate; + public KeycloakUtils(Keycloak keycloak, KeycloakConfig keycloakConfig, MetadataMapper metadataMapper) { + this.keycloak = keycloak; this.keycloakConfig = keycloakConfig; - this.keycloakGateway = keycloakGateway; + this.metadataMapper = metadataMapper; } - public void createUser(UserCreateDto data) throws AuthServiceException, AuthServiceConnectionException, - EmailExistsException, UserExistsException { - final String path = "/admin/realms/dbrepo/users"; - log.trace("create user at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<Void> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(data), Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to create user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.Conflict e) { - if (e.getResponseBodyAsByteArray() != null && e.getResponseBodyAsByteArray().length > 0) { - final KeycloakErrorDto error = e.getResponseBodyAs(KeycloakErrorDto.class); - if (error != null && error.getErrorMessage().contains("same email")) { - log.error("Failed to create user: email exists: {}", e.getMessage()); - throw new EmailExistsException("E-Mail exists", e); - } + public void createUser(UserCreateDto data) { + try (Response response = keycloak.realm(keycloakConfig.getRealm()) + .users() + .create(metadataMapper.userCreateDtoToUserRepresentation(data))) { + if (response.getStatus() != 201) { + log.error("Failed to create user: {}", response.getStatus()); } - log.error("Failed to create user: user exists: {}", e.getMessage()); - throw new UserExistsException("User exists", e); - } - if (!response.getStatusCode().equals(HttpStatus.CREATED)) { - log.error("Failed to create user: unexpected status: {}", response.getStatusCode().value()); - throw new AuthServiceException("Unexpected status: " + response.getStatusCode().value()); } log.debug("Created user {} at auth service", data.getUsername()); } - public void deleteUser(String username) throws AuthServiceException, AuthServiceConnectionException { - try { - final UUID userId = keycloakGateway.findByUsername(username).getId(); - keycloakGateway.deleteUser(userId); - } catch (UserNotFoundException e) { - /* ignore */ + public void deleteUser(String username) { + final List<UserRepresentation> users = keycloak.realm(keycloakConfig.getRealm()) + .users() + .search(username); + if (users.isEmpty()) { + log.error("Failed to find user"); + return; + } + try (Response response = keycloak.realm(keycloakConfig.getRealm()) + .users() + .delete(users.get(0).getId())) { + if (response.getStatus() != 200) { + log.error("Failed to delete user: {}", response.getStatus()); + } } } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/BasicAuthenticationProvider.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/BasicAuthenticationProvider.java index b9fea2b54b..d6535bad49 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/BasicAuthenticationProvider.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/BasicAuthenticationProvider.java @@ -1,7 +1,6 @@ package at.tuwien.auth; import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; import jakarta.servlet.ServletException; import lombok.extern.log4j.Log4j2; @@ -34,8 +33,7 @@ public class BasicAuthenticationProvider implements AuthenticationManager { final UserDetails userDetails = authTokenFilter.verifyJwt(tokenDto.getAccessToken()); log.debug("set basic auth principal: {}", userDetails); return new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); - } catch (ServletException | CredentialsInvalidException | AccountNotSetupException | - AuthServiceConnectionException e) { + } catch (ServletException e) { throw new BadCredentialsException("Failed to authenticate with authentication service", e); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/InternalRequestInterceptor.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/InternalRequestInterceptor.java index 835b7245d1..b0edc929ed 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/InternalRequestInterceptor.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/auth/InternalRequestInterceptor.java @@ -2,9 +2,6 @@ package at.tuwien.auth; import at.tuwien.api.keycloak.TokenDto; import at.tuwien.config.GatewayConfig; -import at.tuwien.exception.AccountNotSetupException; -import at.tuwien.exception.AuthServiceConnectionException; -import at.tuwien.exception.CredentialsInvalidException; import at.tuwien.gateway.KeycloakGateway; import lombok.extern.log4j.Log4j2; import org.springframework.http.HttpHeaders; @@ -33,15 +30,10 @@ public class InternalRequestInterceptor implements ClientHttpRequestInterceptor throws IOException { final HttpHeaders headers = request.getHeaders(); headers.setAccept(List.of(MediaType.APPLICATION_JSON)); - try { - final TokenDto token = keycloakGateway.obtainUserToken(gatewayConfig.getSystemUsername(), - gatewayConfig.getSystemPassword()); - headers.setBearerAuth(token.getAccessToken()); - log.trace("set bearer token for internal user: {}", gatewayConfig.getSystemUsername()); - return execution.execute(request, body); - } catch (AuthServiceConnectionException | CredentialsInvalidException | AccountNotSetupException e) { - log.error("Failed to obtain token for internal user: {}", gatewayConfig.getSystemUsername()); - throw new IOException("Failed to obtain token for internal user", e); - } + final TokenDto token = keycloakGateway.obtainUserToken(gatewayConfig.getSystemUsername(), + gatewayConfig.getSystemPassword()); + headers.setBearerAuth(token.getAccessToken()); + log.trace("set bearer token for internal user: {}", gatewayConfig.getSystemUsername()); + return execution.execute(request, body); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java index a24bbf41b8..4b62b61dcb 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java @@ -1,12 +1,11 @@ package at.tuwien.config; -import at.tuwien.interceptor.KeycloakInterceptor; import lombok.Getter; +import org.keycloak.admin.client.Keycloak; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.DefaultUriBuilderFactory; @Getter @Configuration @@ -27,17 +26,15 @@ public class KeycloakConfig { @Value("${dbrepo.keycloak.clientSecret}") private String keycloakClientSecret; + private final String realm = "dbrepo"; + @Bean public RestTemplate restTemplate() { return new RestTemplate(); } - @Bean("keycloakRestTemplate") - public RestTemplate brokerRestTemplate() { - final RestTemplate restTemplate = new RestTemplate(); - restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(keycloakEndpoint)); - restTemplate.getInterceptors() - .add(new KeycloakInterceptor(restTemplate(), keycloakUsername, keycloakPassword, keycloakEndpoint)); - return restTemplate; + @Bean + public Keycloak keycloak() { + return Keycloak.getInstance(keycloakEndpoint, "master", keycloakUsername, keycloakPassword, "admin-cli"); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java index 73f3a02bea..d4963adffa 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java @@ -1,26 +1,26 @@ package at.tuwien.gateway; import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; -import at.tuwien.exception.*; +import at.tuwien.api.user.UserUpdateDto; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.UserNotFoundException; +import org.keycloak.representations.idm.UserRepresentation; import java.util.UUID; public interface KeycloakGateway { - TokenDto obtainUserToken(String username, String password) throws AuthServiceConnectionException, - CredentialsInvalidException, AccountNotSetupException; + TokenDto obtainUserToken(String username, String password); - TokenDto refreshUserToken(String refreshToken) throws AuthServiceConnectionException, - CredentialsInvalidException; + UserRepresentation findByUsername(String username) throws UserNotFoundException; /** * Deletes a user at the Authentication Service with given user id. * * @param id The user id. */ - void deleteUser(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException; + void deleteUser(UUID id) throws AuthServiceException; /** * Update the credentials for a given user. @@ -28,17 +28,7 @@ public interface KeycloakGateway { * @param id The user id. * @param password The user credential. */ - void updateUserCredentials(UUID id, UserPasswordDto password) throws AuthServiceException, - AuthServiceConnectionException, UserNotFoundException; + void updateUserCredentials(UUID id, UserPasswordDto password); - /** - * Finds a user in the metadata database by given username. - * - * @param username The user username. - * @return The updated user. - */ - UserDto findByUsername(String username) throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException; - - UserDto findById(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException; + void updateUser(UUID id, UserUpdateDto data) throws AuthServiceException, UserNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java index fc9afcb4b3..a8e3acbf5b 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java @@ -1,205 +1,121 @@ package at.tuwien.gateway.impl; -import at.tuwien.api.auth.KeycloakErrorDto; import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UpdateCredentialsDto; -import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; +import at.tuwien.api.user.UserUpdateDto; import at.tuwien.config.KeycloakConfig; -import at.tuwien.exception.*; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.mapper.MetadataMapper; +import jakarta.ws.rs.ForbiddenException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.core.Response; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.http.*; +import org.keycloak.OAuth2Constants; +import org.keycloak.admin.client.Keycloak; +import org.keycloak.admin.client.KeycloakBuilder; +import org.keycloak.admin.client.resource.UserResource; +import org.keycloak.representations.idm.CredentialRepresentation; +import org.keycloak.representations.idm.UserRepresentation; import org.springframework.stereotype.Service; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.DefaultUriBuilderFactory; +import java.util.List; import java.util.UUID; @Log4j2 @Service public class KeycloakGatewayImpl implements KeycloakGateway { - private final RestTemplate restTemplate; - private final RestTemplate keycloakRestTemplate; + private final Keycloak keycloak; private final KeycloakConfig keycloakConfig; private final MetadataMapper metadataMapper; - public KeycloakGatewayImpl(@Qualifier("restTemplate") RestTemplate restTemplate, - @Qualifier("keycloakRestTemplate") RestTemplate keycloakRestTemplate, - KeycloakConfig keycloakConfig, MetadataMapper metadataMapper) { - restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(keycloakConfig.getKeycloakEndpoint())); - this.restTemplate = restTemplate; - this.keycloakRestTemplate = keycloakRestTemplate; + public KeycloakGatewayImpl(Keycloak keycloak, KeycloakConfig keycloakConfig, MetadataMapper metadataMapper) { + this.keycloak = keycloak; this.keycloakConfig = keycloakConfig; this.metadataMapper = metadataMapper; } @Override - public TokenDto obtainUserToken(String username, String password) throws AuthServiceConnectionException, - CredentialsInvalidException, AccountNotSetupException { - final HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - final MultiValueMap<String, String> payload = new LinkedMultiValueMap<>(); - payload.add("username", username); - payload.add("password", password); - payload.add("grant_type", "password"); - payload.add("scope", "openid roles"); - payload.add("client_id", keycloakConfig.getKeycloakClient()); - payload.add("client_secret", keycloakConfig.getKeycloakClientSecret()); - final String path = "/realms/dbrepo/protocol/openid-connect/token"; - log.trace("obtain user token at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<TokenDto> response; - try { - response = restTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(payload, headers), TokenDto.class); - } catch (HttpServerErrorException e) { - log.error("Failed to obtain user token: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.BadRequest e) { - final KeycloakErrorDto error = e.getResponseBodyAs(KeycloakErrorDto.class); - if (error != null && error.getError().equals("invalid_grant")) { - log.error("Failed to obtain user token: {}", error.getErrorDescription()); - throw new AccountNotSetupException(error.getErrorDescription()); - } - log.error("Failed to obtain user token: bad request"); - throw new CredentialsInvalidException("Bad request", e); - } catch (HttpClientErrorException.Unauthorized e) { - log.error("Failed to obtain user token: invalid credentials"); - throw new CredentialsInvalidException("Invalid credentials", e); + public TokenDto obtainUserToken(String username, String password) { + try (Keycloak userKeycloak = KeycloakBuilder.builder() + .serverUrl(keycloakConfig.getKeycloakEndpoint()) + .realm(keycloakConfig.getRealm()) + .grantType(OAuth2Constants.PASSWORD) + .clientId(keycloakConfig.getKeycloakClient()) + .clientSecret(keycloakConfig.getKeycloakClientSecret()) + .username(username) + .password(password) + .build()) { + return metadataMapper.accessTokenResponseToTokenDto(userKeycloak.tokenManager() + .getAccessToken()); } - return response.getBody(); } @Override - public TokenDto refreshUserToken(String refreshToken) throws AuthServiceConnectionException, - CredentialsInvalidException { - final HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - final MultiValueMap<String, String> payload = new LinkedMultiValueMap<>(); - payload.add("refresh_token", refreshToken); - payload.add("grant_type", "refresh_token"); - payload.add("client_id", keycloakConfig.getKeycloakClient()); - payload.add("client_secret", keycloakConfig.getKeycloakClientSecret()); - final String path = "/realms/dbrepo/protocol/openid-connect/token"; - log.trace("refresh user token at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<TokenDto> response; - try { - response = restTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(payload, headers), TokenDto.class); - } catch (HttpServerErrorException e) { - log.error("Failed to refresh user token: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.Unauthorized e) { - log.error("Failed to refresh user token: invalid credentials"); - throw new CredentialsInvalidException("Invalid credentials", e); - } catch (HttpClientErrorException.BadRequest e) { - if (e.getMessage() != null && e.getMessage().contains("Session not active")) { - log.error("Failed to refresh user token: inactive session", e); - throw new CredentialsInvalidException("Inactive session", e); - } - log.error("Failed to refresh user token: unexpected response: {}", e.getMessage(), e); - throw new CredentialsInvalidException("Unexpected response: " + e.getMessage(), e); + public UserRepresentation findByUsername(String username) throws UserNotFoundException { + final List<UserRepresentation> users = keycloak.realm(keycloakConfig.getRealm()) + .users() + .search(username); + if (users.isEmpty()) { + log.error("Failed to find user with username {}", username); + throw new UserNotFoundException("Failed to find user"); } - return response.getBody(); + return users.get(0); } @Override - public void deleteUser(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException { - final String path = "/admin/realms/dbrepo/users/" + id; - log.trace("delete user at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<Void> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to delete user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.NotFound e) { - log.error("Failed to delete user: user not found: {}", e.getMessage()); - throw new UserNotFoundException("User not found", e); - } catch (Exception e) { - log.error("Failed to delete user: unexpected response: {}", e.getMessage()); - throw new AuthServiceException("Unexpected result", e); - } - if (!response.getStatusCode().equals(HttpStatus.NO_CONTENT)) { - log.error("Failed to delete user: unexpected response"); - throw new AuthServiceException("Unexpected result"); + public void deleteUser(UUID id) throws AuthServiceException { + try (Response response = keycloak.realm(keycloakConfig.getRealm()) + .users() + .delete(String.valueOf(id))) { + if (response.getStatus() != 200) { + log.error("Failed to delete user: unexpected response status: {}", response.getStatus()); + throw new AuthServiceException("Unexpected response status: " + response.getStatus()); + } } log.info("Deleted user {} at auth service", id); } @Override - public void updateUserCredentials(UUID id, UserPasswordDto data) throws AuthServiceException, - AuthServiceConnectionException, UserNotFoundException { - final UpdateCredentialsDto payload = metadataMapper.passwordToUpdateCredentialsDto(data.getPassword()); - final String path = "/admin/realms/dbrepo/users/" + id; - log.trace("update user credentials at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<Void> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.PUT, new HttpEntity<>(payload), Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to update user credentials: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.NotFound e) { - log.error("Failed to update user credentials: user not found: {}", e.getMessage()); - throw new UserNotFoundException("User not found", e); - } catch (Exception e) { - log.error("Failed to update user: unexpected response: {}", e.getMessage()); - throw new AuthServiceException("Unexpected result", e); - } - if (!response.getStatusCode().equals(HttpStatus.NO_CONTENT)) { - log.error("Failed to update user: unexpected status: {}", response.getStatusCode().value()); - throw new AuthServiceException("Unexpected status: " + response.getStatusCode().value()); - } + public void updateUserCredentials(UUID id, UserPasswordDto data) { + final CredentialRepresentation credential = new CredentialRepresentation(); + credential.setCredentialData(data.getPassword()); + credential.setType(CredentialRepresentation.PASSWORD); + keycloak.realm(keycloakConfig.getRealm()) + .users() + .get(String.valueOf(id)) + .resetPassword(credential); log.info("Updated user {} password at auth service", id); } @Override - public UserDto findByUsername(String username) throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException { - final String path = "/admin/realms/dbrepo/users/?username=" + username; - log.trace("find user by username at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<UserDto[]> response; + public void updateUser(UUID id, UserUpdateDto data) throws AuthServiceException, UserNotFoundException { + final UserResource resource = keycloak.realm(keycloakConfig.getRealm()) + .users() + .get(String.valueOf(id)); + UserRepresentation user; try { - response = keycloakRestTemplate.exchange(path, HttpMethod.GET, HttpEntity.EMPTY, UserDto[].class); - } catch (HttpServerErrorException e) { - log.error("Failed to find user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (Exception e) { - log.error("Failed to find user: unexpected response: {}", e.getMessage()); - throw new AuthServiceException("Unexpected result", e); - } - final UserDto[] body = response.getBody(); - if (body == null || body.length != 1) { - log.error("Failed to find user with username {}", username); - throw new UserNotFoundException("Failed to find user with username " + username); + user = resource.toRepresentation(); + } catch (NotFoundException e) { + log.error("Failed to update user: not found: {}", e.getMessage()); + throw new UserNotFoundException("Failed to update user: not found", e); } - return body[0]; - } - - @Override - public UserDto findById(UUID id) throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException { - final String path = "/admin/realms/dbrepo/users/" + id; - log.trace("find user by id at endpoint {} with path {}", keycloakConfig.getKeycloakEndpoint(), path); - final ResponseEntity<UserDto> response; + user.setFirstName(data.getFirstname()); + user.setLastName(data.getLastname()); + user.singleAttribute("THEME", data.getTheme()); + user.singleAttribute("ORCID", data.getOrcid()); + user.singleAttribute("LANGUAGE", data.getLanguage()); + user.singleAttribute("AFFILIATION", data.getAffiliation()); + log.trace("update user: {}", data); try { - response = keycloakRestTemplate.exchange(path, HttpMethod.GET, HttpEntity.EMPTY, UserDto.class); - } catch (HttpServerErrorException e) { - log.error("Failed to find user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.NotFound e) { - log.error("Failed to find user: not found: {}", e.getMessage()); - throw new UserNotFoundException("User not found"); - } catch (Exception e) { - log.error("Failed to find user: unexpected response: {}", e.getMessage()); - throw new AuthServiceException("Unexpected result", e); + resource.update(user); + } catch (ForbiddenException e) { + log.error("Failed to update user: forbidden: {}", e.getMessage()); + throw new AuthServiceException("Failed to update user: forbidden", e); } - return response.getBody(); + log.info("Updated user {} attributes at auth service", id); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java index c946dac39a..e914b0f1ab 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java @@ -1,13 +1,11 @@ package at.tuwien.service; -import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.*; - -import java.util.UUID; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.CredentialsInvalidException; +import at.tuwien.exception.UserNotFoundException; public interface AuthenticationService { @@ -21,23 +19,6 @@ public interface AuthenticationService { */ void delete(User user) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException; - /** - * Finds a user with given username. - * - * @param username The username. - * @return The user, if successful. - * @throws AuthServiceException The auth service responded with unexpected behavior. - * @throws AuthServiceConnectionException The connection with the auth service could not be established. - * @throws UserNotFoundException The user was not found in the auth database. - */ - UserDto findByUsername(String username) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException; - - UserDto findById(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException; - - TokenDto obtainToken(LoginRequestDto data) throws AuthServiceConnectionException, CredentialsInvalidException, AccountNotSetupException; - - TokenDto refreshToken(String refreshToken) throws AuthServiceConnectionException, CredentialsInvalidException; - /** * Updates the password of a user with given id. * diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java index 28e8bb3c40..581641a93a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java @@ -4,6 +4,8 @@ import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; @@ -45,7 +47,7 @@ public interface UserService { * @param data The user data. * @return The user, if successful. */ - User create(CreateUserDto data); + User create(CreateUserDto data) throws UserNotFoundException, AuthServiceException; /** * Updates the user information for a user with given id in the metadata database. @@ -54,7 +56,7 @@ public interface UserService { * @param data The user information. * @return The user if successful. False otherwise. */ - User modify(User user, UserUpdateDto data); + User modify(User user, UserUpdateDto data) throws UserNotFoundException, AuthServiceException; /** * Updates the user password for a user with given id in the metadata database. diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java index 112684c9aa..5e007cebc7 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java @@ -1,19 +1,17 @@ package at.tuwien.service.impl; -import at.tuwien.api.auth.LoginRequestDto; -import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.api.keycloak.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.*; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.CredentialsInvalidException; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.service.AuthenticationService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.UUID; - @Log4j2 @Service public class AuthenticationServiceImpl implements AuthenticationService { @@ -28,39 +26,13 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public void delete(User user) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { - final UserDto keycloakUser = findByUsername(user.getUsername()); - keycloakGateway.deleteUser(keycloakUser.getId()); - } - - @Override - public UserDto findByUsername(String username) throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException, CredentialsInvalidException { - return keycloakGateway.findByUsername(username); - } - - @Override - public UserDto findById(UUID id) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, - CredentialsInvalidException { - return keycloakGateway.findById(id); - } - - @Override - public TokenDto obtainToken(LoginRequestDto data) throws AuthServiceConnectionException, - CredentialsInvalidException, AccountNotSetupException { - return keycloakGateway.obtainUserToken(data.getUsername(), data.getPassword()); - } - - @Override - public TokenDto refreshToken(String refreshToken) throws AuthServiceConnectionException, - CredentialsInvalidException { - return keycloakGateway.refreshUserToken(refreshToken); + keycloakGateway.deleteUser(user.getKeycloakId()); } @Override public void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException, UserNotFoundException { - final UserDto keycloakUser = findByUsername(user.getUsername()); - keycloakGateway.updateUserCredentials(keycloakUser.getId(), data); + keycloakGateway.updateUserCredentials(user.getKeycloakId(), data); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index 833c16c097..cb550be1a5 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -4,8 +4,12 @@ import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; +import at.tuwien.exception.AuthServiceConnectionException; +import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; +import at.tuwien.gateway.KeycloakGateway; +import at.tuwien.mapper.MetadataMapper; import at.tuwien.repository.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; @@ -23,11 +27,16 @@ import java.util.UUID; @Service public class UserServiceImpl implements UserService { + private final MetadataMapper metadataMapper; private final UserRepository userRepository; + private final KeycloakGateway keycloakGateway; @Autowired - public UserServiceImpl(UserRepository userRepository) { + public UserServiceImpl(MetadataMapper metadataMapper, UserRepository userRepository, + KeycloakGateway keycloakGateway) { + this.metadataMapper = metadataMapper; this.userRepository = userRepository; + this.keycloakGateway = keycloakGateway; } @Override @@ -61,10 +70,11 @@ public class UserServiceImpl implements UserService { } @Override - public User create(CreateUserDto data) { + public User create(CreateUserDto data) throws UserNotFoundException, AuthServiceException { /* create at authentication service */ final User entity = User.builder() .id(data.getLdapId()) + .keycloakId(data.getId()) .username(data.getUsername()) .theme("light") .mariadbPassword(getMariaDbPassword(RandomStringUtils.randomAlphabetic(10))) /* user needs to set it later to access */ @@ -73,21 +83,23 @@ public class UserServiceImpl implements UserService { .lastname(data.getFamilyName()) .isInternal(false) .build(); - /* create at metadata database */ + /* save in metadata database */ final User user = userRepository.save(entity); log.info("Created user with id: {}", user.getId()); return user; } @Override - public User modify(User user, UserUpdateDto data) { + public User modify(User user, UserUpdateDto data) throws UserNotFoundException, AuthServiceException { user.setFirstname(data.getFirstname()); user.setLastname(data.getLastname()); user.setAffiliation(data.getAffiliation()); user.setOrcid(data.getOrcid()); user.setTheme(data.getTheme()); user.setLanguage(data.getLanguage()); - /* create at metadata database */ + /* save in auth service */ + keycloakGateway.updateUser(user.getKeycloakId(), data); + /* save in metadata database */ user = userRepository.save(user); log.info("Modified user with id: {}", user.getId()); return user; 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 00365c5ee8..ac7fa6e613 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 @@ -580,18 +580,6 @@ public abstract class BaseTest { .password(USER_1_PASSWORD) .build(); - public final static at.tuwien.api.keycloak.UserDto USER_1_KEYCLOAK_DTO = at.tuwien.api.keycloak.UserDto.builder() - .id(USER_1_ID) - .username(USER_1_USERNAME) - .emailVerified(USER_1_VERIFIED) - .notBefore(USER_1_NOT_BEFORE) - .totp(USER_1_TOTP) - .attributes(at.tuwien.api.keycloak.UserAttributesDto.builder() - .ldapEntryDn(new String[]{"cn=" + USER_1_USERNAME + ",dn=dbrepo,dn=at"}) - .ldapId(new UUID[]{USER_1_KEYCLOAK_ID}) - .build()) - .build(); - public final static UserBriefDto USER_1_BRIEF_DTO = UserBriefDto.builder() .id(USER_1_ID) .username(USER_1_USERNAME) @@ -788,15 +776,6 @@ public abstract class BaseTest { .username(USER_3_USERNAME) .build(); - public final static at.tuwien.api.keycloak.UserDto USER_3_KEYCLOAK_DTO = at.tuwien.api.keycloak.UserDto.builder() - .id(USER_3_ID) - .username(USER_3_USERNAME) - .email(USER_3_EMAIL) - .emailVerified(USER_3_VERIFIED) - .notBefore(USER_3_NOT_BEFORE) - .totp(USER_3_TOTP) - .build(); - public final static Principal USER_3_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_3_DETAILS, USER_3_PASSWORD, USER_3_DETAILS.getAuthorities()); diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue index a606bfd2dc..3e661cd754 100644 --- a/dbrepo-ui/components/database/DatabaseToolbar.vue +++ b/dbrepo-ui/components/database/DatabaseToolbar.vue @@ -149,13 +149,13 @@ export default { return this.hasReadAccess }, canCreateView () { - if (!this.cacheUser || !this.isOwner) { + if (!this.cacheUser || !this.isOwner || !this.roles) { return false } return this.roles.includes('create-database-view') }, canCreateTable () { - if (!this.cacheUser || !this.hasWriteAccess) { + if (!this.cacheUser || !this.hasWriteAccess || !this.roles) { return false } return this.roles.includes('create-table') diff --git a/dbrepo-ui/components/subset/SubsetList.vue b/dbrepo-ui/components/subset/SubsetList.vue index fa44454af8..df0948372e 100644 --- a/dbrepo-ui/components/subset/SubsetList.vue +++ b/dbrepo-ui/components/subset/SubsetList.vue @@ -6,7 +6,6 @@ rounded="0" :text="$t('pages.database.subpages.subsets.empty')" /> <v-card - v-if="subsets.length > 0" variant="flat" rounded="0"> <v-list-item diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index bd2b12e13a..5df3b8cda3 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -376,10 +376,10 @@ export default { this.$i18n.locale = this.locale }, setTheme () { - if (!this.cacheUser?.attributes?.theme) { + if (!this.cacheUser?.theme) { return } - switch (this.cacheUser.attributes.theme) { + switch (this.cacheUser.theme) { case 'dark': this.$vuetify.theme.global.name = 'tuwThemeDark' break diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 66232b6d1a..31e20b310d 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -112,17 +112,19 @@ export default defineNuxtConfig({ defaultProvider: 'keycloak', providers: { keycloak: { - clientId: '', - clientSecret: '', + audience: 'account', authorizationUrl: '', - userInfoUrl: '', - tokenUrl: '', - logoutUrl: '', - scope: ['openid', 'roles'], - optionalClaims: ['realm_access'], - redirectUri: '', + baseUrl: 'http://localhost/realms/dbrepo', + clientId: 'dbrepo-client', + clientSecret: 'MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG', exposeAccessToken: true, logoutRedirectUri: '', + logoutUrl: '', + optionalClaims: ['realm_access'], + redirectUri: 'http://localhost', + scope: ['openid', 'roles'], + tokenUrl: '', + userInfoUrl: '' }, }, middleware: { diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 1556dcc387..8905ede1d2 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -391,7 +391,7 @@ export default { return this.roles.includes('modify-database-image') }, canViewSettings () { - if (this.error || !this.database || !this.cacheUser || !this.access) { + if (!this.database || !this.cacheUser || !this.access) { return false } const userService = useUserService() diff --git a/dbrepo-ui/pages/database/[database_id]/subset/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/index.vue index d770878fab..d98a8ba2af 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/index.vue @@ -43,9 +43,6 @@ export default { return this.cacheStore.getAccess }, canViewSchema () { - if (this.error) { - return false - } if (!this.database) { return false } 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 3f4351d2d7..efdc20609b 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 @@ -233,7 +233,7 @@ export default { return this.table.constraints.primary_key.map(pk => pk.column) }, canViewTableData () { - if (this.error || !this.table) { + if (!this.table) { return false } if (this.table.is_public) { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue index 4c5b046742..ac48b40644 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue @@ -196,7 +196,7 @@ export default { return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' }, canViewSchema () { - if (this.error || !this.table) { + if (!this.table) { return false } if (this.table.is_schema_public) { @@ -212,7 +212,7 @@ export default { return this.table.constraints.primary_key.map(pk => pk.column.internal_name).join(', ') }, canAssignSemanticInformation () { - if (!this.cacheUser) { + if (!this.cacheUser || !this.roles) { return false } if (this.roles.includes('modify-foreign-table-column-semantics')) { diff --git a/dbrepo-ui/pages/database/[database_id]/table/index.vue b/dbrepo-ui/pages/database/[database_id]/table/index.vue index e1bfa6fdb0..c2a2b76206 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/index.vue @@ -52,9 +52,6 @@ export default { return this.cacheStore.getAccess }, canViewSchema () { - if (this.error) { - return false - } if (!this.database) { return false } diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue index be3fe8cf67..aa8ee55944 100644 --- a/dbrepo-ui/pages/user/index.vue +++ b/dbrepo-ui/pages/user/index.vue @@ -5,7 +5,8 @@ <script> export default { mounted () { - if (!this.loggedIn) { + const { loggedIn } = useOidcAuth() + if (!loggedIn) { return } this.$router.push('/user/info') diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index a325d53d62..470b7bc438 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -1,10 +1,12 @@ <template> - <div> + <div + v-if="loggedIn"> <UserToolbar /> <v-window v-model="tab"> <v-window-item> - <v-form v-model="valid1" @submit.prevent="submit"> + <v-form + v-model="valid1"> <v-card :title="$t('pages.user.subpages.info.title')" :subtitle="$t('pages.user.subpages.info.subtitle')" @@ -20,10 +22,12 @@ :label="$t('pages.user.subpages.info.id.label')" /> </v-col> </v-row> - <v-row dense> + <v-row + v-if="cacheUser" + dense> <v-col md="6"> <v-text-field - v-model="model.username" + v-model="cacheUser.preferred_username" disabled :variant="inputVariant" :label="$t('pages.user.subpages.info.username.label')" /> @@ -123,6 +127,9 @@ </div> </template> +<script setup> +const { loggedIn } = useOidcAuth() +</script> <script> import UserToolbar from '@/components/user/UserToolbar.vue' import { useCacheStore } from '@/stores/cache.js' @@ -139,15 +146,16 @@ export default { error: false, loadingUpdate: false, loadingTheme: false, - theme: null, orcidLoading: false, model: { id: null, - username: null, + preferred_username: null, firstname: null, lastname: null, theme: null, - language: null + language: null, + orcid: null, + affiliation: null }, themes: [ { name: this.$t('pages.user.subpages.theme.light'), value: 'light' }, @@ -184,6 +192,9 @@ export default { return this.cacheStore.getUser }, canModifyInformation () { + if (!this.roles) { + return false + } return this.roles.includes('modify-user-information') }, inputVariant () { @@ -207,7 +218,7 @@ export default { orcid: this.model.orcid, affiliation: this.model.affiliation, theme: this.model.theme, - language: this.model.language, + language: this.model.language } const userService = useUserService() userService.update(this.cacheUser.uid, payload) @@ -250,10 +261,10 @@ export default { username: this.cacheUser.username, firstname: this.cacheUser.given_name, lastname: this.cacheUser.family_name, - orcid: this.cacheUser.attributes.orcid, - affiliation: this.cacheUser.attributes.affiliation, - theme: this.cacheUser.attributes.theme, - language: this.cacheUser.attributes.language + orcid: this.cacheUser.orcid, + affiliation: this.cacheUser.affiliation, + theme: this.cacheUser.theme ? this.cacheUser.theme : 'light', + language: this.cacheUser.language ? this.cacheUser.language : 'en' } }, retrieve () { diff --git a/docker-compose.yml b/docker-compose.yml index 8e81d42e04..9176f6404a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -80,7 +80,7 @@ services: restart: "no" container_name: dbrepo-auth-service hostname: auth-service - image: bitnami/keycloak:24.0.5-debian-12-r8 + image: bitnami/keycloak:26.0.4-debian-12-r0 volumes: - ./dbrepo-auth-service/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./dbrepo-auth-service/master-realm.json:/opt/keycloak/data/import/master-realm.json @@ -89,6 +89,7 @@ services: ports: - "8080:8080" environment: + KEYCLOAK_ENABLE_HEALTH_ENDPOINTS: "true" KEYCLOAK_ENABLE_HTTPS: "false" KEYCLOAK_ENABLE_STATISTICS: "true" KEYCLOAK_DATABASE_HOST: "auth-db" @@ -333,7 +334,7 @@ services: network: host environment: NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}" - NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}" + NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}" NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files" NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "${BASE_URL:-http://localhost}/realms/dbrepo/protocol/openid-connect/auth" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "${AUTH_SERVICE_CLIENT:-dbrepo-client}" diff --git a/helm/dbrepo/Chart.lock b/helm/dbrepo/Chart.lock index 4d2cafe9bd..297b4b1a92 100644 --- a/helm/dbrepo/Chart.lock +++ b/helm/dbrepo/Chart.lock @@ -4,7 +4,7 @@ dependencies: version: 1.4.0 - name: keycloak repository: https://charts.bitnami.com/bitnami - version: 21.6.2 + version: 24.0.3 - name: mariadb-galera repository: https://charts.bitnami.com/bitnami version: 13.2.7 @@ -26,5 +26,5 @@ dependencies: - name: nginx repository: https://charts.bitnami.com/bitnami version: 18.3.1 -digest: sha256:414c043a3751945d7bd5b02fa00ee0464bee7f08efb469e00a5f059cdbff03b5 -generated: "2025-01-19T17:22:48.686050629+01:00" +digest: sha256:aa148a5f656ad17971203ea710206117d6de6f27b6940f9d532a6c5762e5df25 +generated: "2025-02-04T22:01:27.370259572+01:00" diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index 259ccbd694..99f8a84d23 100644 --- a/helm/dbrepo/Chart.yaml +++ b/helm/dbrepo/Chart.yaml @@ -24,7 +24,7 @@ dependencies: condition: searchdb.enabled - name: keycloak alias: authservice - version: 21.6.1 # app version: 24.0.5 + version: 24.0.3 # app version: 26.0.4 repository: https://charts.bitnami.com/bitnami condition: authservice.enabled - name: mariadb-galera diff --git a/helm/dbrepo/charts/keycloak-21.6.1.tgz b/helm/dbrepo/charts/keycloak-21.6.1.tgz deleted file mode 100644 index 6479f5943846dee589d3ec90bbda649a8d7b72fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133987 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�C?>!IS^!&blf6SJN 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 Yb^iO8*8LY{VEF$(Xid^_1}i=W0C19C8UO$Q diff --git a/helm/dbrepo/charts/keycloak-24.0.3.tgz b/helm/dbrepo/charts/keycloak-24.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..29a964b44168bec6c04969e16cf51c94b75952fc GIT binary patch literal 134032 zcmb2|<`7{3f&ZEe+KC=P2FV`2W<Hgcrb)(O1}VX&nNh)(X8vJeX1?J$S&4Zml_7!o zwjQZDxeRaq{x836c1fe>{rP{|1ygOzzr_WA`d(6Mw|D+)E5FCf{T5|g-d+CQu3D(0 zMdgafL8b+=xwF3K*YocaQgG~?B&z;)*7D^WJrWEgc-Wc`o_WA__VJVhv+vy$3A#7; zaOAJ)zV_AC)z#|m?w{`O-MjbIe)j6~{Qox9f2pZ||K!P!Cm){ZSO0FW{>@&`SS@{A z<%39%^RMZ9tG9=~y(9mmG1ATA$&8dW`&k`$EN2N=y>AwOA+}V-{mZNgQ*s#_(hHg* z<p1nrWnd6I@qp)R<3stMLE^8PTaK7_lo`J4H8}r(=ey6&e+NCw*H??EX0#-Vy_I(< z(dRJe@-#a(S;Ma|`i9@sf1c(0s~>GE+QaJ5l|04pV&`R<W5FV_CEvFt^wqmfNu2cc z;M;>@XNrFZKioBSflMmrsidBWdTl1dlR{@wJLeeKE$sL^tt^nuUDIn@!#j_kncNIr zMTZQgPf;~|_q|HQ*Whu9+}rYO+peQAA}0GyXS|tTVqa#TC#iHa#Z39;uL8?CCm!}S z{1b}o*mjcnW>QmxPvN?%-;>o$4)8b_9G$FrLQq!NsyVXfK>eX;iCzU~&I6pMES?oJ zY-TxN;nveAdFBDj*??o)84^@<SuW`9c%a}qr}2n^46}hJ!x;vhA0Z8$s`X7G=LA{j zFxa`yV4CrK<-a2bWS?EuWk|C)yg7;OLWPgU`#j&y1=ps0p7XW3jqC1=GusMutVDiX zYVJ`ySJiX)M_c5*R}XJ4Niq3pXk~HZcSS+Pm9v{qUgMp0UvQSkzYWDomty<ptUIr8 z&f<vVqD^b0&dX~wditd8exTI7`+<q?LD6|WmdxQDidEf{-ia}=`g%`MpW)v<@yLxc z%(i=`cAoTbOg_59`}H>q*A?mkYkb$Oon+XztNQNYwd-|v%FXw+nfldU_2b!Nw<9+F zdoOEizi#dS>f`;d|2x}U-TL<Qn%LiW_x7%hJ;$Va?fF_3e}Tuf2bO(!@MFpT{(oY} z)sw&6J^1-~b-lGkRo^~o<r0fq)^@+%Rn}O@$*WbL{9)<yZNGQlzUn@|3m@xv_~$uS z{P>g4{;?vv$;d^~-BZ4V?;Bs=qQ84z6#TEM-@kwVefuBls!NJK-F^7);l=-#e;Ri< zSpUyYj8gdKYR16*{Qtks8Q-q{tS|Uv@n8N)CDS<%yX8(dGnTg6FdjbG{l80Zs+w%9 zhi!h3;M?ZQ2VdS?UA!_l-?ozJAHVa)E4S->PI4?$Xcsvr;69~u{jaComS?AC#cLXR z2&QC+r?e;^SU!Q-?x@pc?_h^K!KD_0?*rF<(mN12M~w5F+5yr0-41X0xw?cFx{3K* zov#t{ghhaNzUY)iJ<Ju{g<2(5!HXDg?yD+Z+IoH6FH4O}B^^mxA<+w2jQup`EZ8h! zbkWvTiPNR|eN{jci_xcz3)kIV5`Q;@#iwrCq#2ASmQ3^2<Z<x1AR(qHZ<Qgv;Fs`+ zeZ8El%!;!l#gF`+x#TEM?&i5xDbs}>9R2y=)t@(Ce*JNc=R47Kt?-ydQ>Vf_t*hp{ zgPgb6y(rnnQ1OXnPPuyQ*YK%EwO^y&)TR{&e^fUKpMU>=<Rn&}jO}Vaj@xf%;8?Ki zcIwygrnx6{+GY9+w7xrYp7~lAJ?YKzq?U{}izEeqMe%CQG=Yx0vuby8$8o*S?K3hv zn!K+2bbUwV&Fj%GZ_TLiEzSM8j>X=k(9v-I{E0n_`(@^IO)q-2;gq=TQ%Qy7pSF&b zUeA*5E34h%xpzX+e6y|h#5+5uMlg3tEVp>3(V548;KQ3W{2H?+Mzds0oV%%<=VI*F z=lxSecFu`Pe*RuW^9+ySSsiidV<xKQ8XMnKe{3o}*kGXcG2nH4e2x|84YAp$Ee|Xc zm*MPj**$ZDR$-KZUYe@5;r*MUU-|`aT#HVM+$tl-aM{`--FmmeL7ynD17%JvCC1em z%RltVs{eJ*kP%roZ-wpTT~qZvVm*t4dnRnlYnUz+&G(X}a60eSI@WF6YQKJQEj1Q6 zEaP?WKnLe4jx~~xl8W*z4OA~rU(2ca`I^To#pO&g>P*&siL=gm8?Gxkv`)nPZsEjb zkMtSuum(2fb+JYX%)jNZzKP?(`67w+w_4VwS3O`{X|gCQ?vS9D<c0qQO1=t@=9^rd z%%R%QQ|D?pJ^9tOSIz$OWgAZMnYw%tJN`l_-JB<;=V*rKmPD;<A!nQ3Z7>dHT(XJn z+!Y-q&IHRY)*sp?dTaU3w=D{|C@i#DPTyjo#IiNZ9XH1LY~nd;Q{-zp@!zfLMLEhA zvt4Ss&SYQQS;haWA$Y4rb%?cY@ALzIckBM0V<oDjCMi8Z<aqIiM`s0I*tgc4?Tlz( zh;{0jkz#nN(z9E``A^>k={detp2rr=QJE$bop!M5(~_JW{O6`jsqEBz9DT03zjjj3 zT+g*`N>$55WmF607{ae6)O)X6p>n+}W$(UKf8(YJcou6OUoz!w^SQwE)ob2Pj^n;A zp2Akh7MGFuwqVu7eVsar?w8kIGH2bT*_rt2Tu=X;L*kR953IaUb;L+DUh0~F&f*)c zYrT{B0#rl;PtH(fSjoc?<q^lq**3YypfA}#nbYWVd*O+TJ3J&GEvk!rW$HQMn#&o7 zs{1{rJ30StOL#M9lHet&j~r89cSW$fzHT~s^!~DjX<?j`UU$btml)ToN{A_@G|YWj zZ>hO-zJr?Du{D`i@v06huW~Td=6+4rbo#ldO>wS4f!4q6Ws{j&GWpY!=Oo&Fzvi2L zqb$rX@Bw>jbpg-)ApYy#DY-?y-4hLCj-*^$Y^t2qf0*;NrH<yq(zR9p_}9+<a`5WU ze(}SvSI6JmZ&_RW@4OaMV{b!aN{*J?nuE6=9{n24dp1d!Av;U^)tv`1ho2S%>FUJg zKEAo;!6awb^9)OvIwTS|zV<51`k|TZD>|iaHTy@tbG?S_hw`@Hz8dYgS@_5rnPssH zdkv11GyittQ{VdSvy$&tll2c2_BF)Raa}W#UY*#NWHaw|@`{Y9bEm2?N{I?{v-LMt zO`OEZoa5DHB3OKNj+$-drlsfhE;)E6r+7{2nk2W?l5d{|_FJA<CAUlR^vs(pCFUgT z{2I6=Xnyp1<)?eztaLtnZ}OZ)9sz=?6RT2}rCBP}78uq!|7cKJ*4Hu5hB5zXmr|)~ z+Jws`qMLT_a=sjGXB@J*snGGX<QXnb<z*aPwsFR@LeK7cYjr|#_r$%yZY(?XZteT# z;ve#S(VR!oCnl!$&AT_Hu4S{0X_0+=y8o=}+ZJ!yAGBRqYtn<|mYN6VK3Oc%%`48x zqqz6nL!WuqJQunfoh)J7lH$Bsz@{?jT>mM<Ir&RJW{6pZYgI1%ne&p<C(WWescVTP z=dvJo;kUoCmsDJyntIgk!oh$&LN3j70yaKg9QJAUp}(I>Wp6PUmAPkJVlgzo-^!+8 z$$t0hY{P(4oKMYK?2?WZnguRqKljyN+1zCA5ovkO+dE=6**ZKt<|7;WOkHKE?2g$= zt6Y+ug_E4EorJXgR?N{j;}QHs`Oa3E$Xu-+!IIFgF0%6viyUEnoWgcz{UxnOpXMn} zymV3L<m+9(XEK$wX&g^JxUOSo)zUvzZ0G+r3T!?-L;F?oLqTul>N2jR<(+yv^j1rS zX1jIyct~v&XkZBzIc*xL;nyb^^maqNRds#s*SrebJ$2Qk|LO{={$^=h%{E^B?%lgx zY0FAD=X%)6Ui@S->vB_}Wzr<BG)}`yex8k*X|+55_gAj6mt69+lfCb&zvl!EsbHh- zV-~LW%d7p$*PqOGIXbB$EjqDl7VoLmuU{VwSabH#WwumS|Hzh2GtND|rNF}KKT}`5 z;?ydxFJGSuOxe2Y0oUKK1Vgr_yDY1C3b>9Z%aljIIJSr}qTthFOKqlS`k9jjnasjg zi+LRvJUp34Rfu(d;g+SAbD1Y~9&(*0d`ePc&i-#+QS-`Y=NwwScY)xUSXZtm>k^iF z<lWh-7;M-Za=>JRp=WSWdV*nJk)lIT(emTT^~+Vx%n=cpvPSFqA>LW5<(n=_+?dz7 z|ELtJLjJS*of6BLqSrk?R6WO#?{dhg=6jRB&w71N{AcyCpslwV*{vUNb(-#P<5GXn zoV&2*{@<@{wG3IV6E9cTxP3}-U=rN*O!nxVFL8Of2aOF`R6C|yO!c+9taWT*fAdTG z&w&Q(ue%*!SYcMbg?U}qncFg_9$xZ3{Nc}=SAU}NgpLFylq~70nDUD?L@id;W6eLM zc}I<o<sK3@;$^-Na%$<stbb>3zb;<r!j;84!LUVj_o;Vhxb}YQJXzYjMaON*Y2WS_ zX-S#ied?y{PdYW9v8(0V$&b2T&+krqy<x=~!OG(SxnA8<8Ph8dp554{@ae(whyNVk z+t*92`WpWIbrO%2)ArYI!lo_OTvBz^lXK_BQ=PNCcWIxJSYY)??|D^3kyl<}lThlr zif7+n&V0N2mB-{GD>qy3&{MyDV^4ONnvZd*L+ypk2i;a%SNrH|Y&GHvRnTM7J8f#7 zKh^U$yZSL!Ka-r)dv`@r89t|<c@+@o*J+itV$tOl(Z9aLU)!eq`PP;=cA1>}3<*^y zCCyd_E`3n`<M6d>MyD<=d%~8-l`r_BBlNz2vQem&(6m2ci(b`;ioV&hqwsb)hv1w$ zQ}rb0rdjNmpq;ijZ1b#j+m05!$=1_3uC4bVOvWNsC{}Dm*6-bS-rQAM`kbfw`t-xU zbzbORyWmmsc;4$3{EK!?kp06bwuwPBN<Z!Nb#eJ0hyDM2_))`oP<}zO?9?(Nk8}4! zUHMNJF0P2wFj!^b$0=Mb`NepV7w-X;%f~!^X6Y50EcHqg6?!6Be3kv>9A*B^XE&BU z|8iD;ZtR7hzmGoc-h6qr_@nm^zg|6hv-J3*8+YoS26#rXt`qP{zxORdl6ysk{#)a1 zA@U_@6AE2o6)aUf7q;}zShaMgX|erTkEUH&;*aLWCbF%#xoBa(;i;WTF<Vp5Y5uhM zFQ+Q3Qg$j@)#i9z=%SB>|F{ma1ghz#E?pa6!x;S4vw5Sdwn$*A<}TL|jp9$!Z8`)k z-Y|82xmOf!#56xB$Y+_;lT?+-H$wi#*lh7SKdo$a=P~C)8#=-b#0=I=xFL9V5#y8K zRMk0L%bo{2d=*zzoA-6zNl|CHkEy~N6||;*Tz4VnxNBBVms8-phn*4&bC_Bbm{oiQ zw(2pL2g~>$oIBw_)|`1?6Amuln|``_*~3X|(xW>pI_tC*_G;dk{QZ}~<JvVf^7p#q z_Vh0|n605)xpjB#g_or^#>?#d+4K#%kIpjw&$NxR_LD^A9-Rxt{_A4Rw%@2!-yT~K zRUj1UAF`lH>xj|0<sDXP5vH0;tlPHqCwuZ{pPYW>)DD?A@4Uu?)9&iWUZ4Alr)!?! zr9};!qJ2Eo=2qn?9!;8j^g!9m;^WI(6kiq?1PS@(g*=J8u=UbmFPjvVlU}u7&)2*B z&3eB*CiwScb-Sa#AAI+ackAbT*(|u^*K>}4tJlXc?|F1@iP7olQfnp8tgYF?J^R-e zsb^W<q3^C~=`1|?zkIipv8{bA+sCRdb;*UR`b~YZW)yL?%LK(e`SjsS%&q^u?}dZo zpPXD_d$X)7eBsHpTkN{`pD?i3?vMN0xT~?p_{`kNk($4^Z1+rkk(9h*&LR`>B)5W> zioQ#lFT@<5&3I*QgU?B=|3}tE@9JU^T>Z0$<IJRs0d2;HADB+FG6$7TQrXWa`ufNn z%_$X6OBfZ++%Ku}I`AEvVZ`Uw^5LwfP@_Pb=D+CzEe5A9#H!@R%q*Gs@yG4g)64eF zID5bQ`g_rRv1V_Z@AvYvReZ9qQog8`68xL*XfTtNK1V`I+YgcS$$9Q_c2x&z{dwO< zpZq>mQX#g)_EXba^OnVS26BNsH6I*mZ>-#!lgPGbdCRAK+bulOQChc^Zns9Akui0W z{vx{kt;BwX8LG#2AAaGS#H5?yRF}^hU#0Zpz|$+%=kw~@uAI5Fp(E5r{YcC1f(V^e zIS&u5-SK2k&F^imCKxvbRo?!TWvX2Dt!m<v;w^b8Rw`D9R_V^!%h##<cVm%5^6izY zzjaH0-2S0-KL7E=C9nQ3+;}PNgK<!b%pT1&WfxYrP~)AC?Nka1vcDeO$NpZ7yY;20 zSajD<)p?u;pE8TzU994}^!qj~y@&S|rf9$5HTacKfBw3;NIeh7(>2;G!JR)=zkc0# z__*c5n!?a$*JZD1=l|S#q%SJuP4oM2`)*&hkC3k^FDZ$T{cgNI?Zt<9-jXg!ah0a0 zmWwiMW*xK<|23z+<%QpbwGP&zdgVI~mTHzvX!KkpSlF-YdG_&XtxM5~Goofyd1d(t zed7s{sl9FSQTLm#LEWv1Ve_l~B_7>+d+EPWFK2JUl34b$@7h&Fr)V9|_6+84xZIkS zaI5jR&#KQ=?mFAFFHN#dmpOaDrK&=^b^p6%!VM>%={#F`>(gD1tfgW1uV0Gfo36uJ za7<8EyZ^4MLAQ;6s)W9e>ajIl%N}ue>SSMiernnjmGcq36~_+7=6%hY@atXR(vV69 z4uLKFeoL8uiCvg$#;5Yt?<K!f#{~82-*VHZY57zvk)IK{S9OEd?rDbaHto}CK7K*< zTvxxBoxunGr%N}?7G2pR`)j$(gNHkHQfyKf&mHjcxP612Ggt6b>I|3c9jfwr>^VO+ z$UZSw*{#&_dxJC2yJ>mMw#$ErEzfA0^mN1NO=~~68C1?*THJW@bWxoCd&doNv&B*) zP90FFJeRbhZ{zgsH$yi2uFi9DH(#j2KD{dRYm)7hbDH~}zkP8$KxT5J-2xYnqk8k7 zXH>eEs7_cNHBaoK)2*Mu0eY(!%wdnJV{C8y8$Rp3&W=fmr<l)w_;5?hS2>WWVCAZq ziL8OYAIQ(WeEM|Xl*4jQLnIyd*}aGnl{{{|`Rv!TQEn$EJPSHfvL#XL%E4WU*`3$Z zGRt4A>=B)KV8w)aJ-5_eoXGTFcy<2L?`f%rrpGh(Bs&SqIyoB&n===M=1PaHxg~k> zg5HS)x3Ysg$EUnuGHcG<#hs>c@Mw<sk_mnn^nR@PZyQkmretdD>Mb)FY|1_yICW>! z+r5P{(?eIZZ`FG5QNQN;F-uqLfNdv^UX)&%^5p%8(Ee(fvqditU8;`16<s;cZs#5Q zuvdHCFWS90(O2%|vVP+3V;r08pYDu~4F1(Nm-il{(?OoI9CMp<kIeXVXiWg)9l@%} zLNit@@GD=R$@r>wnd8FzZ8Hnwz8q})xisok^W(qG*CY0ZRQ!6%zxwI-?|gkJt&?o7 zeLt@uthPXzze0G|>*%ihz&457Q;Vg$?MvsZ+tjo2LD%nW<EPb^lTxI6N|GmLt@(b0 zF=_Vo#kpDhN7`4F&;D+hBbU*()Yn%(fa|%l$Yh<w2TpsLJ1aC@Cf8_pyu6y*GE=#0 z=`yX?yieAf9^hE%&XxBdX7&7R1}Wz`Vj{8rnn}Tv)E+FYV%$-CSx!Rx$-yknoQN5d zuel!BwnuzntB!$CZNU!pZD-{ie>>>J*%khJ5b@&8)VeNDm5>_whpSATHYZQm`e*&= z%GFG{rq4cUn>)vzipyo(ny_Kpf~ZXq(FM9Q*RbWCuHVcwn{`Ky{(-dLt2fQGc{IUd zMXY(+Ja4&)-i00h7L3(jXR0hMQ5N0m!n<kH?_5je>Iq@V$=kDpk1W->!{)*LEth$j z>g#QcS109aFW7eH{@)4jOS9+M=AGT7UhVC=*yurg)tlvudCqtXx4zVpDq;>^AH`cT zRdrp>&s7WK71vJ6cu{(yZm+_Ng{R+3eYg;uFSVgeJ4|7DMbD$kIg7$u?iduj{C{Qg zO~W(4me0H}&t}!v3u|LCJ$_xBtn~QToqr~MN7rW;H5+}1k~)31bKgIf9e>(<AAG*1 zB(U}JLCwTJCPybI7BA84k1v{Z!k=MPeqO?{RU5Aucq&aP>=Nv@m{_Iss8Hp=<`;aQ zSN<`+r2BPAv~y?ZQNOv9UDCM&(%n}6diZj;rDxb}=1I|wX1iWzP7w{Wve>nJ){9Kz z6oa1*ev_6h_@m!BGr7b3h3WBc-Tld;ENix}W}d{bBL3yx4DpyL(#QFqJ!aoqyyka& zZ9>YKrIR1GYc4t2KGo{@BTX-^jW%vC!seQPS4ggy<f(Sjqp8Y&NpI9Yvl}i3-bynH zbMDXBSABQ&E+fuc1u{yF+*!>f5z{OmoxZs6+Ic&HAD-X2CoOojAYU%>V?Dq2$3;z( zo~uXvUzd}iShBS8#XaVf7=x)RS8nE+Eo~Bh!Xr~bSu-U|Ue15|f}pc!N|cjXYlRjw ziyW+Xm7KG%?=kazHp8oq;^u$Te7~3+Jar+a^>*FYqm2hI2iz!^HE>SbU>fPt@JMu~ zaGB_~&u2?a+oEmM&)gU7)L6wAsMRbY%e09t#$4<AnI#5q!vh|xxQ47(xPI>b_akSP zFADg#b4kR_IWA{1_ZqF6^F&2;@=pWt=!wRY4E<O|8khcJx}yG|Zgn#63@z4VFNxr| zuWAQ5=S<8=61ncN)H*S?Ku?1A){CHI&zR2cHJa<y!;(JkKk-E)NW!(Sv;4j1-?=u` zmrwr)Q#O6&bvk=CSET%xuBpq<^shNzmV3qRgtxQzcdaFM5)NFKMV8Kctf%(rheB)5 z-iv{b?>xUch%;!NydynTDl67csKvzB&C)evT6Ef~g+Y-szUDZFEc)4}IP<l_(~dNw ze+O#rv97Rw*~Is_<zC6Ix4u)<R>)rT*gPY7?i^9g<CR@XxBG&Y+N{x%D0WG=m~8uh z;vos%J+^CqURSj^ArNF;9W371xkBr6=318@R@~p`S#Y?f#B6%5WTRcH^@*j(<cUa; z$;{P9&0lC8DG}URWX8NeMU?5o+#2b&CEYJ(`SLAT{qnSGsh7Lb%qw@c+^SwQtGmR0 z!=2kXKW}_rn^f?$ESZ~OeYEJzwTGC5vNbAQ-yPx6&sDjQ-a2uU(Yb>hy_~KO*p{y> zyl~=z`#x@=r#)*X2xo-NdeOXhmGML`hn=&;FRooDd}~$C&H(3mg|8;xnYr%rs&x`} z>jNrHwr9N!`EX!g`n$|YJKl!a6ql;~{WWjRtLRrduKdbtN!oZx(!a#b_WQiHPpiKt zK2WK-D5v?Wc-^0)Ie$WD_RK00-)AFV6uaYB!v6;!PW<TEC3j$7y0~8e&+C$l@55Dl z8NZ(uKB|;;BGE?Sy!|tmTM4$3%ChpknM=h^EO;w5b%pEKAnwyuevX=odu!Xy<(3<A z91>(&m$heVU-zQx4JpeO@a8<S31@#68eA@0CRfmGQsGtZ@$&eN9ctX+veQbpzd6CV zriXdS--Ev%ym(=7qw7NJ)c=diRDUfmb)Ehxpx$h@^kVf`p&5S|f@d6cDm){!^4RI7 zcM2P(&FmAKwK0duoiR}BW8QY%e|guRzB^mCS4wJm^*Mp$87XCpOO}c0$zGCN9w8h1 z`tV!Mo2HkiaMpUR(P&}v>eA`dkbLN4`f2mMsdG>M5@%M}ZXtO~LDA>Bw(JY*w>s}u zoqO=&$<dALy3%U2O+~IKNbFATE$yGX;M%Ihn7O)b6Uu{(+pGj;|BRl``BdF_ci?q} z)cuxQZZf@l&34a2_S-&*hEx8|OA;F`t#()C9=&dM@%0D2j^H2_H9w7eH-Fd&X!M$R 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%0AD5zu?SL@#D(qCMb7-M(jpHN=W?SDBurYFyQ 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℞7U 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 arcTa2{MVoT3=9na|6h98_>n<^j{yKyKpaf~ literal 0 HcmV?d00001 diff --git a/helm/dbrepo/charts/seaweedfs-4.2.1.tgz b/helm/dbrepo/charts/seaweedfs-4.2.1.tgz index 294e9679821376eef75eee86ac2785453de064ea..2e0750d471422723319c6ce514d01cdeb012e114 100644 GIT binary patch delta 237440 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෦^Hado{IVa$%u&C!o`1-r` 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 M1?o032+1-408QLt=Kufz delta 238100 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%0DJ^c3~HBOm$ot~t{O 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%0DNEwE3##iZ`FCjZ`_Em!Uoh=m*8RBbROPmV(rYx! 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 diff --git a/helm/dbrepo/files/01-setup-schema.sql b/helm/dbrepo/files/01-setup-schema.sql index 173bce7b03..e2bde25ed6 100644 --- a/helm/dbrepo/files/01-setup-schema.sql +++ b/helm/dbrepo/files/01-setup-schema.sql @@ -3,6 +3,7 @@ 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), @@ -13,6 +14,7 @@ CREATE TABLE IF NOT EXISTS `mdb_users` theme character varying(255) NOT NULL default ('light'), language character varying(3) NOT NULL default ('en'), PRIMARY KEY (id), + UNIQUE (keycloak_id), UNIQUE (username) ) WITH SYSTEM VERSIONING; diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar index 8341d4a831d07daee3ebaba9eda02fc51bf394c4..9a9cd149f84ff92e5292a9fdc19a81edcc9ca7b7 100644 GIT binary patch delta 4440 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 delta 4561 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 GK!N~;a30nG diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index 325582daa3..e91e961b8c 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -49,6 +49,7 @@ data: "bruteForceProtected" : false, "permanentLockout" : false, "maxTemporaryLockouts" : 0, + "bruteForceStrategy" : "MULTIPLE", "maxFailureWaitSeconds" : 900, "minimumQuickLoginWaitSeconds" : 60, "waitIncrementSeconds" : 60, @@ -1319,8 +1320,8 @@ data: "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "client.use.lightweight.access.token.enabled" : "true" + "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, "fullScopeAllowed" : true, @@ -1394,6 +1395,38 @@ data: "fullScopeAllowed" : true, "nodeReRegistrationTimeout" : -1, "protocolMappers" : [ { + "id" : "266edf62-a19a-483b-b594-81428e4af792", + "name" : "orcid", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "ORCID", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "orcid", + "jsonType.label" : "String" + } + }, { + "id" : "1a21798a-38b6-4df5-89f0-86942415246f", + "name" : "theme", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "THEME", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "theme", + "jsonType.label" : "String" + } + }, { "id" : "da0b27c1-ae2e-4baa-bf78-db233e15c78d", "name" : "preferred_username", "protocol" : "openid-connect", @@ -1407,18 +1440,66 @@ data: "userinfo.token.claim" : "true" } }, { - "id" : "7c94de93-f60f-487b-b4b7-1891c67f74cc", - "name" : "aud", + "id" : "1bc6a1f4-4be2-439c-8c7f-b3fb0bb9956a", + "name" : "affiliation", "protocol" : "openid-connect", - "protocolMapper" : "oidc-hardcoded-claim-mapper", + "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "claim.value" : "dbrepo", + "introspection.token.claim" : "true", "userinfo.token.claim" : "true", + "user.attribute" : "AFFILIATION", "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", - "claim.name" : "aud", - "access.tokenResponse.claim" : "false" + "claim.name" : "affiliation", + "jsonType.label" : "String" + } + }, { + "id" : "7cbf6dc6-653e-40a9-9974-0e5bf7a363c3", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "70bbd779-d085-4204-ac4b-3a40abab9d88", + "name" : "language", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "LANGUAGE", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "language", + "jsonType.label" : "String" + } + }, { + "id" : "b817424d-7f91-43d8-b7d0-6a32582377fb", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" } }, { "id" : "030a1cd9-53d1-4a62-a375-94d50a2dc6fc", @@ -1435,9 +1516,26 @@ data: "access.token.claim" : "true", "claim.name" : "uid" } + }, { + "id" : "c304ed2f-5952-4772-838d-91998a45f154", + "name" : "aud", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-hardcoded-claim-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "claim.value" : "account", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "aud", + "jsonType.label" : "String", + "access.tokenResponse.claim" : "false" + } } ], - "defaultClientScopes" : [ "roles", "attributes", "basic" ], - "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] + "defaultClientScopes" : [ "roles", "basic" ], + "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "attributes", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] }, { "id" : "25741f6b-4867-4138-8238-6345c6ba8702", "clientId" : "rabbitmq-client", @@ -1482,12 +1580,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "false", "user.attribute" : "username", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "client_id", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "false" } }, { "id" : "f1afc22d-f595-403b-ba2e-6ab19d98205e", @@ -1496,11 +1594,11 @@ data: "protocolMapper" : "oidc-hardcoded-claim-mapper", "consentRequired" : false, "config" : { - "claim.value" : "rabbitmq", - "userinfo.token.claim" : "false", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "aud", + "claim.value" : "rabbitmq", + "userinfo.token.claim" : "false", "access.tokenResponse.claim" : "false" } } ], @@ -1559,8 +1657,8 @@ data: "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, "authenticationFlowBindingOverrides" : { }, @@ -1573,12 +1671,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ], "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], @@ -1602,8 +1700,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "782819fe-ba5d-4ddb-9f95-cabb69d79c8d", @@ -1612,12 +1710,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "emailVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } }, { "id" : "ca613fc8-bbf2-4240-8b33-a1874f1559f3", @@ -1626,12 +1724,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "email", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1641,8 +1739,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "84f0487a-1d7d-470c-9b8e-5835294ae235", @@ -1651,12 +1749,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "preferred_username", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bbdcdb36-3ec0-443d-b1af-9993d40f0567", @@ -1665,12 +1763,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "gender", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "gender", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "9faa870b-5491-4ce9-b27d-c9ce07d6a95e", @@ -1679,12 +1777,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "birthdate", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "birthdate", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f0e3c012-9523-4076-83ae-e466e2d08220", @@ -1704,12 +1802,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "profile", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "profile", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "18cfbf4b-0a8e-45c7-a832-c0f72c92f3f3", @@ -1718,12 +1816,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "updatedAt", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "updated_at", - "jsonType.label" : "long" + "jsonType.label" : "long", + "userinfo.token.claim" : "true" } }, { "id" : "841ea785-26ab-429a-a420-09ce3948924d", @@ -1732,12 +1830,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "lastName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "family_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bfba13ff-f952-4e89-bbb1-a693fdebfae8", @@ -1746,12 +1844,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "website", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "website", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "475f071d-5149-4379-b928-76482f5f519c", @@ -1760,12 +1858,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "zoneinfo", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "zoneinfo", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "b8bebfed-b5e9-4604-a0ee-9817f7d439ac", @@ -1774,12 +1872,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "middleName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "middle_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "445232c8-6830-476c-a6f1-8bbef167595a", @@ -1788,12 +1886,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "picture", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "picture", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "65f2e474-6ede-4872-86e4-e49504dd0f2a", @@ -1802,12 +1900,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "16cd5a27-ccf3-453c-ae1e-8621813ab73c", @@ -1816,12 +1914,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "firstName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "given_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f9efedfc-3388-457c-b10a-1dff4525ff9b", @@ -1830,12 +1928,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "nickname", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "nickname", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1869,12 +1967,12 @@ data: "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "upn", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1916,8 +2014,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "dae802fb-9138-408a-b80e-a40eb0f56814", @@ -1926,12 +2024,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumber", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "feb06a8d-b0eb-4911-8464-368d93f566fa", @@ -1940,12 +2038,12 @@ data: "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumberVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } } ] }, { @@ -1955,8 +2053,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, "protocolMappers" : [ { "id" : "c6411e3b-6478-453d-b530-5fe175a4d786", @@ -2036,6 +2134,61 @@ data: "gui.order" : "", "consent.screen.text" : "" } + }, { + "id" : "aa5c6ca7-812d-4fff-80b9-f5095ca82ce6", + "name" : "service_account", + "description" : "Specific scope for a client enabled for service accounts", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "bb359b0f-97dc-4d6a-9a2f-89458b53c512", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + }, { + "id" : "7aa3a4d2-3dd1-48dd-8886-562906eadb2a", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + }, { + "id" : "c4882d39-e815-49f5-8a73-eb8b83572eae", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "client_id", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + } ] }, { "id" : "210cc792-6c07-45a6-a77e-827cdf3b41ba", "name" : "offline_access", @@ -2052,8 +2205,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "8d4ffe4d-1d01-4ca1-8ff4-44eacca61b30", @@ -2126,8 +2279,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "3b6b6914-8ad1-4a71-88ec-444f754aaacb", @@ -2234,7 +2387,7 @@ data: "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2260,7 +2413,15 @@ data: "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-property-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + } + } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "a407a1d6-a7f6-4a72-ba3a-149de03d5a43", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] } } ], "org.keycloak.storage.UserStorageProvider" : [ { @@ -2300,8 +2461,8 @@ data: "config" : { "ldap.attribute" : [ "cn" ], "is.mandatory.in.ldap" : [ "true" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "firstName" ] } }, { @@ -2322,19 +2483,19 @@ data: "providerId" : "group-ldap-mapper", "subComponents" : { }, "config" : { + "mode" : [ "LDAP_ONLY" ], "membership.attribute.type" : [ "DN" ], + "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "group.name.ldap.attribute" : [ "cn" ], - "preserve.group.inheritance" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], - "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], - "mode" : [ "LDAP_ONLY" ], - "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], - "membership.ldap.attribute" : [ "member" ], "ignore.missing.groups" : [ "false" ], + "preserve.group.inheritance" : [ "false" ], + "membership.ldap.attribute" : [ "member" ], "memberof.ldap.attribute" : [ "memberOf" ], "group.object.classes" : [ "groupOfNames" ], - "drop.non.existing.groups.during.sync" : [ "false" ], - "groups.path" : [ "/" ] + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], + "groups.path" : [ "/" ], + "drop.non.existing.groups.during.sync" : [ "false" ] } }, { "id" : "b6ff3285-35af-4e86-8bb4-d94b8e0d70bb", @@ -2355,18 +2516,18 @@ data: "subComponents" : { }, "config" : { "ldap.attribute" : [ "uid" ], - "attribute.force.default" : [ "false" ], "is.mandatory.in.ldap" : [ "true" ], + "attribute.force.default" : [ "false" ], "is.binary.attribute" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "username" ] } } ] }, "config" : { - "pagination" : [ "false" ], "fullSyncPeriod" : [ "-1" ], + "pagination" : [ "false" ], "startTls" : [ "false" ], "connectionPooling" : [ "true" ], "usersDn" : [ "ou=users,{{ .Values.identityservice.global.ldapDomain }}" ], @@ -2374,15 +2535,15 @@ data: "useKerberosForPasswordAuthentication" : [ "false" ], "importEnabled" : [ "true" ], "enabled" : [ "true" ], + "bindCredential" : [ "{{ .Values.identityservice.global.adminPassword }}" ], "changedSyncPeriod" : [ "-1" ], - "bindDn" : [ "cn={{ .Values.identityservice.global.adminUser }},{{ .Values.identityservice.global.ldapDomain }}" ], "usernameLDAPAttribute" : [ "uid" ], - "bindCredential" : [ "{{ .Values.identityservice.global.adminPassword }}" ], + "bindDn" : [ "cn={{ .Values.identityservice.global.adminUser }},{{ .Values.identityservice.global.ldapDomain }}" ], "lastSync" : [ "1719252666" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], - "connectionUrl" : [ "ldap://identity-service:389" ], "allowKerberosAuthentication" : [ "false" ], + "connectionUrl" : [ "ldap://identity-service:389" ], "syncRegistrations" : [ "true" ], "authType" : [ "simple" ], "useTruststoreSpi" : [ "always" ], @@ -2394,14 +2555,6 @@ data: "validatePasswordPolicy" : [ "false" ] } } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "a407a1d6-a7f6-4a72-ba3a-149de03d5a43", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] - } - } ], "org.keycloak.keys.KeyProvider" : [ { "id" : "2f53ccf3-37b0-4d34-83e7-ed497499ee51", "name" : "rsa-enc-generated", @@ -3014,10 +3167,12 @@ data: "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", + "organizationsEnabled" : "false", "shortVerificationUri" : "" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.4", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, @@ -3068,6 +3223,7 @@ data: "bruteForceProtected" : false, "permanentLockout" : false, "maxTemporaryLockouts" : 0, + "bruteForceStrategy" : "MULTIPLE", "maxFailureWaitSeconds" : 900, "minimumQuickLoginWaitSeconds" : 60, "waitIncrementSeconds" : 60, @@ -3692,8 +3848,8 @@ data: "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "client.use.lightweight.access.token.enabled" : "true" + "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, "fullScopeAllowed" : true, @@ -3811,8 +3967,8 @@ data: "protocol" : "openid-connect", "attributes" : { "realm_client" : "false", - "post.logout.redirect.uris" : "+", "client.use.lightweight.access.token.enabled" : "true", + "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, "authenticationFlowBindingOverrides" : { }, @@ -3844,8 +4000,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "4aed5e41-0d8d-4c24-80a0-cd9822072756", @@ -3873,8 +4029,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${organizationScopeConsentText}" + "consent.screen.text" : "${organizationScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "5e80a7d2-c9d0-48e1-aadc-d8848ff90f92", @@ -3892,6 +4048,61 @@ data: "jsonType.label" : "String" } } ] + }, { + "id" : "1be1e284-2749-4bbb-890a-2d519cc1531c", + "name" : "service_account", + "description" : "Specific scope for a client enabled for service accounts", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "c913a673-cf66-4493-a2ed-14556c07617c", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "client_id", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + }, { + "id" : "5c244d68-5c63-4356-ac71-5a586f40c77e", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + }, { + "id" : "600285d4-ae51-4b39-a7be-bb83cf5870db", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + } ] }, { "id" : "0411ea86-a074-4781-850d-ea3ca94590a2", "name" : "offline_access", @@ -3943,8 +4154,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "2d1400be-4053-4393-ba87-91b64f699054", @@ -4245,8 +4456,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, "protocolMappers" : [ { "id" : "635cbac1-7cab-43bd-99fc-f7084aca2fa2", @@ -4282,8 +4493,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "2b5a3df4-1adb-402d-bc28-2bd43224e682", @@ -4292,12 +4503,12 @@ data: "protocolMapper" : "oidc-usermodel-realm-role-mapper", "consentRequired" : false, "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", "user.attribute" : "foo", + "introspection.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "realm_access.roles", - "jsonType.label" : "String" + "jsonType.label" : "String", + "multivalued" : "true" } }, { "id" : "f3b60071-ef26-48a7-9554-67f62f84d543", @@ -4306,12 +4517,12 @@ data: "protocolMapper" : "oidc-usermodel-client-role-mapper", "consentRequired" : false, "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", "user.attribute" : "foo", + "introspection.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String" + "jsonType.label" : "String", + "multivalued" : "true" } }, { "id" : "b757200e-494a-4585-857e-e4c18aef7a0c", @@ -4331,8 +4542,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "e18769b3-778b-47d8-be52-dd2769deebd1", @@ -4372,8 +4583,8 @@ data: "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "98cc724c-3f53-47f7-bf9f-baf2f7e08026", @@ -4459,7 +4670,7 @@ data: "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "saml-user-attribute-mapper", "oidc-address-mapper", "saml-user-property-mapper" ] } }, { "id" : "4b976576-c880-48a0-9b4d-2956cfd19b4a", @@ -4468,7 +4679,7 @@ data: "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper" ] } }, { "id" : "e1861ec9-2761-46fb-8048-149492269ff0", @@ -4498,6 +4709,14 @@ data: "allow-default-scopes" : [ "true" ] } } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "34049725-5a66-456c-b895-87ca7c11bb6b", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] + } + } ], "org.keycloak.storage.UserStorageProvider" : [ { "id" : "3a6f24e8-128b-4ac1-b3ab-694836db82fd", "name" : "Identity Service", @@ -4511,8 +4730,8 @@ data: "config" : { "ldap.attribute" : [ "mail" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "false" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "email" ] } }, { @@ -4523,8 +4742,8 @@ data: "config" : { "ldap.attribute" : [ "sn" ], "is.mandatory.in.ldap" : [ "true" ], - "read.only" : [ "false" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "false" ], "user.model.attribute" : [ "lastName" ] } }, { @@ -4535,8 +4754,8 @@ data: "config" : { "ldap.attribute" : [ "modifyTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "true" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "modifyTimestamp" ] } }, { @@ -4569,17 +4788,17 @@ data: "providerId" : "group-ldap-mapper", "subComponents" : { }, "config" : { + "mode" : [ "LDAP_ONLY" ], "membership.attribute.type" : [ "DN" ], + "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "group.name.ldap.attribute" : [ "cn" ], + "ignore.missing.groups" : [ "false" ], "membership.user.ldap.attribute" : [ "uid" ], "preserve.group.inheritance" : [ "false" ], - "groups.dn" : [ "ou=users,{{ .Values.identityservice.global.ldapDomain }}" ], - "mode" : [ "LDAP_ONLY" ], - "user.roles.retrieve.strategy" : [ "LOAD_GROUPS_BY_MEMBER_ATTRIBUTE" ], "membership.ldap.attribute" : [ "member" ], - "ignore.missing.groups" : [ "false" ], - "group.object.classes" : [ "groupOfNames" ], + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "memberof.ldap.attribute" : [ "memberOf" ], + "group.object.classes" : [ "groupOfNames" ], "drop.non.existing.groups.during.sync" : [ "false" ], "groups.path" : [ "/" ] } @@ -4591,8 +4810,8 @@ data: "config" : { "ldap.attribute" : [ "createTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "always.read.value.from.ldap" : [ "true" ], "read.only" : [ "true" ], + "always.read.value.from.ldap" : [ "true" ], "user.model.attribute" : [ "createTimestamp" ] } } ] @@ -4608,13 +4827,13 @@ data: "importEnabled" : [ "true" ], "enabled" : [ "true" ], "changedSyncPeriod" : [ "-1" ], + "usernameLDAPAttribute" : [ "uid" ], "bindCredential" : [ "{{ .Values.identityservice.global.adminPassword }}" ], "bindDn" : [ "cn={{ .Values.identityservice.global.adminUser }},{{ .Values.identityservice.global.ldapDomain }}" ], - "usernameLDAPAttribute" : [ "uid" ], "vendor" : [ "other" ], "uuidLDAPAttribute" : [ "entryUUID" ], "allowKerberosAuthentication" : [ "false" ], - "connectionUrl" : [ "ldap://identity-service:1389" ], + "connectionUrl" : [ "ldap://identity-service:389" ], "syncRegistrations" : [ "true" ], "authType" : [ "simple" ], "krbPrincipalAttribute" : [ "krb5PrincipalName" ], @@ -4628,14 +4847,6 @@ data: "validatePasswordPolicy" : [ "false" ] } } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "34049725-5a66-456c-b895-87ca7c11bb6b", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] - } - } ], "org.keycloak.keys.KeyProvider" : [ { "id" : "5b1052d2-fb71-47d2-86f9-908c869c8d1b", "name" : "hmac-generated-hs512", @@ -5247,10 +5458,12 @@ data: "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", "frontendUrl" : "", + "organizationsEnabled" : "false", "acr.loa.map" : "{}" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.4", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 6422ca38dd..7515778b33 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -950,7 +950,7 @@ ui: ## @param ui.public.doi.endpoint The DOI proxy. endpoint: https://doi.org ## @param ui.replicaCount The number of replicas. - replicaCount: 2 + replicaCount: 1 ## @skip ui.extraVolumes extraVolumes: [ ] # - name: images-map -- GitLab From 63a61d85301e5a196512f872969cdd168d32a7e5 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 4 Feb 2025 22:28:21 +0100 Subject: [PATCH 42/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- helm/dbrepo/README.md | 3 ++- helm/dbrepo/charts/seaweedfs-4.2.1.tgz | Bin 240716 -> 241328 bytes helm/seaweedfs/Chart.lock | 6 +++--- helm/seaweedfs/charts/postgresql-16.4.5.tgz | Bin 81448 -> 0 bytes helm/seaweedfs/charts/postgresql-16.4.6.tgz | Bin 0 -> 81437 bytes 5 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 helm/seaweedfs/charts/postgresql-16.4.5.tgz create mode 100644 helm/seaweedfs/charts/postgresql-16.4.6.tgz diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index e7a5849e30..a452973963 100644 --- a/helm/dbrepo/README.md +++ b/helm/dbrepo/README.md @@ -86,6 +86,7 @@ The command removes all the Kubernetes components associated with the chart and | `authservice.enabled` | Enable the Auth Service. | `true` | | `authservice.image.debug` | Set the logging level to `trace`. Otherwise, set to `info`. | `false` | | `authservice.endpoint` | The hostname for the microservices. | `http://auth-service` | +| `authservice.production` | Start Keycloak with production profile. | `true` | | `authservice.resourcesPreset` | The container resource presets | `small` | | `authservice.jwt.pubkey` | The JWT public key from the `dbrepo-client`. | `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB` | | `authservice.tls.enabled` | Enable TLS/SSL communication. Required for HTTPS. | `true` | @@ -388,7 +389,7 @@ mqtt.prefetch = 10 | `ui.public.pid.default.publisher` | The default dataset publisher for persisted identifiers. | `Example University` | | `ui.public.doi.enabled` | Enable the display that DOIs are minted. | `false` | | `ui.public.doi.endpoint` | The DOI proxy. | `https://doi.org` | -| `ui.replicaCount` | The number of replicas. | `2` | +| `ui.replicaCount` | The number of replicas. | `1` | ### Dashboard Service diff --git a/helm/dbrepo/charts/seaweedfs-4.2.1.tgz b/helm/dbrepo/charts/seaweedfs-4.2.1.tgz index 2e0750d471422723319c6ce514d01cdeb012e114..a463170406b9c62f8f33ba315ac440fe435ad93c 100644 GIT binary patch literal 241328 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 z	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 P@c;k&WZ54KLb411$V*|a literal 240716 zcmb2|<`7{3f&ZEe+KC=P2FV`2W<Hgcrb)(O1}VX&nNh)(X8vJeX1?J$S&4Zml_7!o zwjQZDxeRai{;t2hZIk}4x^MA~i%Z_#u$`u3KdB^h{k!Ve<GHn2>UPs+zboDSyHinU zQbaI|xZ};h+kf7FZ&qg%sCk)cJ?(p3uP>8v^Fam~9=0DsEbj$BwWqvK;hDU}xOwu2 zeD8lR%XZ(r?(Y8Pe%|)%|J5IM-Tr&~-^JPCcf+?lczA!;@AlvA>;JLsIxTkOtFfx4 z&%bN2Gp66&q5g?^F~@QP-U64ZXod;{SLHcpsvhV_sZCgN@{0Fz&Ra|hGY$wU*?zb# z#=x+}kwtw4yP5�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�!YZqc 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	V&~K6>*v7v~TQY(dteNzgEbyLHpH} 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�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%0A^(4<?B~*`srJ?4lNonpFSIfFTFTFLWWl}2PKz@) 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%0D2+r34O2rM)_8z`kT{ZnAB088_lB{%%m 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 diff --git a/helm/seaweedfs/Chart.lock b/helm/seaweedfs/Chart.lock index e8771b63e6..96e5c8dce9 100644 --- a/helm/seaweedfs/Chart.lock +++ b/helm/seaweedfs/Chart.lock @@ -4,9 +4,9 @@ dependencies: version: 20.2.2 - name: postgresql repository: oci://registry-1.docker.io/bitnamicharts - version: 16.4.5 + version: 16.4.6 - name: common repository: oci://registry-1.docker.io/bitnamicharts version: 2.29.1 -digest: sha256:6293da40d44a58d1f72c324a5fc1ea45f462f25e33452ec67e665949de35d27c -generated: "2025-02-02T18:06:30.080005285+01:00" +digest: sha256:bc14ae7bbe7be291adc4a6329ae64835c367b09277a2678c4e10cc74b19ee491 +generated: "2025-02-04T22:22:11.88596441+01:00" diff --git a/helm/seaweedfs/charts/postgresql-16.4.5.tgz b/helm/seaweedfs/charts/postgresql-16.4.5.tgz deleted file mode 100644 index ccf6efdfca747235fb2e67a814f479aaf06f4485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81448 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%0AnWkYbzb(&<qKbJK6X~t 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 CUWH8n diff --git a/helm/seaweedfs/charts/postgresql-16.4.6.tgz b/helm/seaweedfs/charts/postgresql-16.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9016ba352dfd2b553e3cac4a8a80fb7c8c539d65 GIT binary patch literal 81437 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�DtzkXzf#_07H&0{<+ z{b#?=+6UX+*>1J^nKtl7ZH@Fg6DPK@I?_4g6i04}KY#3xdmi&VKfOD{yr(QA{>}Lh zOYer&>~=aMeCzK6Q?3uw-xPYkOk>_6`b}wz5xZyU+*2n$RqZ@kW_8me{PLqow`RSZ z)Nn4FyMFeAIZ89X|74k9zW!*jw$fx3(~WE?F*lo-6t|SlH#E)JUjBcP<^hjKXM~Gg z>!*q>F`jF$tXK7S^(=vl*F+OKW_VO+94xUA%h{9@a^<Y<(kXN0cN*XR{5YxX=%ht@ zn`$3g>8+N(p&S*tn`3XnvwJ6HbQ>9>HcV2B+ts1i$ND#9Z;Z=@keQaUeorJ@bqWLy zPp+EuT#Ie5;kH?iJ{<37d~wmme)*><Rlx${8!|hV37d2rw0ZHU_OoK?X^lyGIzBJD w1gCA9?DAuS&--`j9~w<>DRe8}YWN?2+wc1MUy=5#=l?U;pE<OMA&-**02{@DPXGV_ literal 0 HcmV?d00001 -- GitLab From 8735c34e428dfbfa626021fb61e5806d5b31e462 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 07:01:58 +0100 Subject: [PATCH 43/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-auth-service/init/Pipfile.lock | 12 ++-- .../init/test/test_unit_app.py | 32 --------- .../main/java/at/tuwien/test/BaseTest.java | 7 +- dbrepo-upload-service/pre-create.sh | 2 +- .../java/at/tuwien/config/GatewayConfig.java | 11 --- .../java/at/tuwien/config/KeycloakConfig.java | 70 ++----------------- .../java/at/tuwien/mapper/MetadataMapper.java | 22 ++++++ .../service/UploadServiceIntegrationTest.java | 22 +++--- .../java/at/tuwien/util/KeycloakUtil.java | 46 ++++++++++++ 9 files changed, 98 insertions(+), 126 deletions(-) create mode 100644 dbrepo-upload-service/src/test/java/at/tuwien/mapper/MetadataMapper.java create mode 100644 dbrepo-upload-service/src/test/java/at/tuwien/util/KeycloakUtil.java diff --git a/dbrepo-auth-service/init/Pipfile.lock b/dbrepo-auth-service/init/Pipfile.lock index c8224a7844..57631a0555 100644 --- a/dbrepo-auth-service/init/Pipfile.lock +++ b/dbrepo-auth-service/init/Pipfile.lock @@ -18,11 +18,11 @@ "default": { "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "charset-normalizer": { "hashes": [ @@ -175,11 +175,11 @@ "develop": { "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "charset-normalizer": { "hashes": [ diff --git a/dbrepo-auth-service/init/test/test_unit_app.py b/dbrepo-auth-service/init/test/test_unit_app.py index 624b7d8d53..af6aed379a 100644 --- a/dbrepo-auth-service/init/test/test_unit_app.py +++ b/dbrepo-auth-service/init/test/test_unit_app.py @@ -16,38 +16,6 @@ class AppUnitTest(unittest.TestCase): "session_state": "ae64d2bd-3225-4e05-9943-2bb91fb8fe52", "scope": "profile email" } - user_res = [ - {"id": "5b516520-67cb-4aa0-86a6-d12f8b8f1a20", - "username": "admin", - "firstName": "User1", - "lastName": "Bar1", - "emailVerified": False, - "attributes": {"LDAP_ENTRY_DN": ["cn=admin,ou=users,dc=dbrepo,dc=at"], - "createTimestamp": ["20250120141013Z"], - "modifyTimestamp": ["20250120141013Z"], - "LDAP_ID": ["02b6e096-6b84-103f-81f6-1f6da137f2bb"]}, - "createdTimestamp": 1737382606939, - "enabled": True, - "totp": False, - "federationLink": "c109d473-5ce1-4032-af7b-02e5442f5c07", - "disableableCredentialTypes": [], - "requiredActions": [], - "notBefore": 0, - "access": {"manageGroupMembership": True, - "view": True, - "mapRoles": True, - "impersonate": True, - "manage": True}}] - - def test_fetch_succeeds(self): - with requests_mock.Mocker() as mock: - # mock - mock.post(f'{endpoint}/realms/master/protocol/openid-connect/token', json=self.token_res, status_code=200) - mock.get(f'{endpoint}/admin/realms/dbrepo/users/?username=admin', json=self.user_res, status_code=200) - - # test - user_id = fetch() - self.assertEqual("02b6e096-6b84-103f-81f6-1f6da137f2bb", user_id) def test_fetch_token_bad_request_fails(self): with requests_mock.Mocker() as mock: 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 ac7fa6e613..d8850b5589 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 @@ -546,6 +546,7 @@ public abstract class BaseTest { public final static User USER_1 = User.builder() .id(USER_1_ID) + .keycloakId(USER_1_KEYCLOAK_ID) .username(USER_1_USERNAME) .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) @@ -646,6 +647,7 @@ public abstract class BaseTest { public final static User USER_2 = User.builder() .id(USER_2_ID) + .keycloakId(USER_2_KEYCLOAK_ID) .username(USER_2_USERNAME) .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) @@ -734,6 +736,7 @@ public abstract class BaseTest { public final static User USER_3 = User.builder() .id(USER_3_ID) + .keycloakId(USER_3_KEYCLOAK_ID) .username(USER_3_USERNAME) .firstname(USER_3_FIRSTNAME) .lastname(USER_3_LASTNAME) @@ -813,6 +816,7 @@ public abstract class BaseTest { public final static User USER_4 = User.builder() .id(USER_4_ID) + .keycloakId(USER_4_KEYCLOAK_ID) .username(USER_4_USERNAME) .firstname(USER_4_FIRSTNAME) .lastname(USER_4_LASTNAME) @@ -853,7 +857,7 @@ public abstract class BaseTest { USER_4_PASSWORD, USER_4_DETAILS.getAuthorities()); public final static UUID USER_5_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630"); - public final static UUID USER_5_LDAP_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630"); + public final static UUID USER_5_KEYCLOAK_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630"); public final static String USER_5_USERNAME = "nobody"; public final static String USER_5_FIRSTNAME = "No"; public final static String USER_5_LASTNAME = "Body"; @@ -908,6 +912,7 @@ public abstract class BaseTest { public final static User USER_5 = User.builder() .id(USER_5_ID) + .keycloakId(USER_5_KEYCLOAK_ID) .username(USER_5_USERNAME) .firstname(USER_5_FIRSTNAME) .lastname(USER_5_LASTNAME) diff --git a/dbrepo-upload-service/pre-create.sh b/dbrepo-upload-service/pre-create.sh index 27b05a9146..2d6eb4f861 100755 --- a/dbrepo-upload-service/pre-create.sh +++ b/dbrepo-upload-service/pre-create.sh @@ -21,7 +21,7 @@ END exit 0 fi -echo "[DEBUG] [pre-create hook] request has 'Authorization' header present" >&2 +echo "[DEBUG] [pre-create hook] request has 'Authorization' header p resent" >&2 BEARER="$(echo "$REQUEST_RAW" | jq -r '.Event.HTTPRequest.Header.Authorization[0]')" diff --git a/dbrepo-upload-service/src/test/java/at/tuwien/config/GatewayConfig.java b/dbrepo-upload-service/src/test/java/at/tuwien/config/GatewayConfig.java index e360cecfdc..601229b5e5 100644 --- a/dbrepo-upload-service/src/test/java/at/tuwien/config/GatewayConfig.java +++ b/dbrepo-upload-service/src/test/java/at/tuwien/config/GatewayConfig.java @@ -1,13 +1,11 @@ package at.tuwien.config; -import at.tuwien.interceptor.KeycloakInterceptor; import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.DefaultUriBuilderFactory; @Log4j2 @Getter @@ -28,13 +26,4 @@ public class GatewayConfig { return new RestTemplate(); } - @Bean("keycloakRestTemplate") - public RestTemplate keycloakRestTemplate() { - final RestTemplate restTemplate = new RestTemplate(); - restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(keycloakEndpoint)); - restTemplate.getInterceptors() - .add(new KeycloakInterceptor(restTemplate(), keycloakUsername, keycloakPassword, keycloakEndpoint)); - return restTemplate; - } - } diff --git a/dbrepo-upload-service/src/test/java/at/tuwien/config/KeycloakConfig.java b/dbrepo-upload-service/src/test/java/at/tuwien/config/KeycloakConfig.java index 01be743daa..6243cb3ab5 100644 --- a/dbrepo-upload-service/src/test/java/at/tuwien/config/KeycloakConfig.java +++ b/dbrepo-upload-service/src/test/java/at/tuwien/config/KeycloakConfig.java @@ -1,25 +1,11 @@ package at.tuwien.config; -import at.tuwien.api.auth.KeycloakErrorDto; -import at.tuwien.api.keycloak.UserCreateDto; -import at.tuwien.api.keycloak.UserDto; -import at.tuwien.exception.AuthServiceConnectionException; -import at.tuwien.exception.AuthServiceException; -import at.tuwien.exception.EmailExistsException; -import at.tuwien.exception.UserExistsException; import lombok.Getter; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; +import org.keycloak.admin.client.Keycloak; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; @Log4j2 @Getter @@ -29,55 +15,9 @@ public class KeycloakConfig { @Value("${dbrepo.endpoints.keycloak}") private String keycloakEndpoint; - @Autowired - @Qualifier("keycloakRestTemplate") - private RestTemplate keycloakRestTemplate; - - public Boolean existsByUsername(String username) throws AuthServiceException, AuthServiceConnectionException { - final String path = "/admin/realms/dbrepo/users/?username=" + username; - final ResponseEntity<UserDto[]> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.GET, HttpEntity.EMPTY, UserDto[].class); - } catch (HttpServerErrorException e) { - log.error("Failed to find user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (Exception e) { - log.error("Failed to find user: unexpected response: {}", e.getMessage()); - throw new AuthServiceException("Unexpected result", e); - } - final UserDto[] body = response.getBody(); - if (body == null || body.length != 1) { - log.error("Failed to find user with username {}", username); - return false; - } - return true; - } - - public void createUser(UserCreateDto data) throws UserExistsException, EmailExistsException, - AuthServiceConnectionException, AuthServiceException { - final String path = "/admin/realms/dbrepo/users"; - final ResponseEntity<Void> response; - try { - response = keycloakRestTemplate.exchange(path, HttpMethod.POST, new HttpEntity<>(data), Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to create user: {}", e.getMessage()); - throw new AuthServiceConnectionException("Service unavailable", e); - } catch (HttpClientErrorException.Conflict e) { - if (e.getResponseBodyAsByteArray() != null && e.getResponseBodyAsByteArray().length > 0) { - final KeycloakErrorDto error = e.getResponseBodyAs(KeycloakErrorDto.class); - if (error != null && error.getErrorMessage().contains("same email")) { - log.error("Failed to create user: email exists: {}", e.getMessage()); - throw new EmailExistsException("E-Mail exists", e); - } - } - log.error("Failed to create user: user exists: {}", e.getMessage()); - throw new UserExistsException("User exists", e); - } - if (!response.getStatusCode().equals(HttpStatus.CREATED)) { - log.error("Failed to create user: unexpected status: {}", response.getStatusCode().value()); - throw new AuthServiceException("Unexpected status: " + response.getStatusCode().value()); - } - log.debug("Created user {} at auth service", data.getUsername()); + @Bean + public Keycloak keycloak() { + return Keycloak.getInstance(keycloakEndpoint, "master", "admin", "admin", "admin-cli"); } } diff --git a/dbrepo-upload-service/src/test/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-upload-service/src/test/java/at/tuwien/mapper/MetadataMapper.java new file mode 100644 index 0000000000..c6b5d429e7 --- /dev/null +++ b/dbrepo-upload-service/src/test/java/at/tuwien/mapper/MetadataMapper.java @@ -0,0 +1,22 @@ +package at.tuwien.mapper; + + +import at.tuwien.api.keycloak.UserCreateDto; +import at.tuwien.api.user.external.ExternalResultType; +import org.keycloak.representations.idm.UserRepresentation; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +import java.util.LinkedList; + +@Mapper(componentModel = "spring", imports = {LinkedList.class, ExternalResultType.class}) +public interface MetadataMapper { + + org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MetadataMapper.class); + + @Mappings({ + @Mapping(target = "attributes", ignore = true) + }) + UserRepresentation userCreateDtoToUserRepresentation(UserCreateDto data); +} diff --git a/dbrepo-upload-service/src/test/java/at/tuwien/service/UploadServiceIntegrationTest.java b/dbrepo-upload-service/src/test/java/at/tuwien/service/UploadServiceIntegrationTest.java index 30fd6752c3..052d028d39 100644 --- a/dbrepo-upload-service/src/test/java/at/tuwien/service/UploadServiceIntegrationTest.java +++ b/dbrepo-upload-service/src/test/java/at/tuwien/service/UploadServiceIntegrationTest.java @@ -7,11 +7,9 @@ import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.config.KeycloakConfig; import at.tuwien.config.TusdConfig; import at.tuwien.config.TusdContainerConfig; -import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; -import at.tuwien.exception.EmailExistsException; -import at.tuwien.exception.UserExistsException; import at.tuwien.interceptor.KeycloakInterceptor; +import at.tuwien.util.KeycloakUtil; import com.github.dockerjava.api.model.ExposedPort; import dasniko.testcontainers.keycloak.KeycloakContainer; import lombok.extern.log4j.Log4j2; @@ -20,7 +18,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -33,7 +34,6 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @Log4j2 @@ -48,6 +48,9 @@ public class UploadServiceIntegrationTest { @Autowired private TusdConfig tusdConfig; + @Autowired + private KeycloakUtil keycloakUtil; + @Autowired private KeycloakConfig keycloakConfig; @@ -55,7 +58,7 @@ public class UploadServiceIntegrationTest { private static TusdContainerConfig.TusdContainer tusdContainer = TusdContainerConfig.TusdContainer.getInstance(); @Container - private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:24.0") + private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:26.0") .withImagePullPolicy(PullPolicy.alwaysPull()) .withRealmImportFile("init/dbrepo-realm.json") .withEnv("KC_HOSTNAME_STRICT_HTTPS", "false") @@ -69,9 +72,8 @@ public class UploadServiceIntegrationTest { } @BeforeEach - public void beforeEach() throws UserExistsException, AuthServiceException, AuthServiceConnectionException, - EmailExistsException { - if (keycloakConfig.existsByUsername(keycloakContainer.getAdminUsername())) { + public void beforeEach() throws AuthServiceException { + if (keycloakUtil.existsByUsername(keycloakContainer.getAdminUsername())) { return; } final UserCreateDto payload = UserCreateDto.builder() @@ -82,7 +84,7 @@ public class UploadServiceIntegrationTest { .value(keycloakContainer.getAdminPassword()) .build())) .build(); - keycloakConfig.createUser(payload); + keycloakUtil.createUser(payload); } @Test diff --git a/dbrepo-upload-service/src/test/java/at/tuwien/util/KeycloakUtil.java b/dbrepo-upload-service/src/test/java/at/tuwien/util/KeycloakUtil.java new file mode 100644 index 0000000000..b7c24cab9d --- /dev/null +++ b/dbrepo-upload-service/src/test/java/at/tuwien/util/KeycloakUtil.java @@ -0,0 +1,46 @@ +package at.tuwien.util; + +import at.tuwien.api.keycloak.UserCreateDto; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.mapper.MetadataMapper; +import jakarta.ws.rs.core.Response; +import lombok.extern.log4j.Log4j2; +import org.keycloak.admin.client.Keycloak; +import org.keycloak.representations.idm.UserRepresentation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +@Log4j2 +public class KeycloakUtil { + + + private final MetadataMapper metadataMapper; + private final Keycloak keycloak; + + @Autowired + public KeycloakUtil(MetadataMapper metadataMapper, Keycloak keycloak) { + this.metadataMapper = metadataMapper; + this.keycloak = keycloak; + } + + public void createUser(UserCreateDto data) throws AuthServiceException { + final UserRepresentation user = metadataMapper.userCreateDtoToUserRepresentation(data); + try (Response response = keycloak.realm("dbrepo") + .users() + .create(user)) { + if (response.getStatus() != 200) { + log.error("Failed to delete user: unexpected response status: {}", response.getStatus()); + throw new AuthServiceException("Unexpected response status: " + response.getStatus()); + } + } + log.info("Created user at auth service"); + } + + public boolean existsByUsername(String username) { + return keycloak.realm("dbrepo") + .users() + .search(username) + .isEmpty(); + } +} -- GitLab From e4fdfa6083134016b033089106bec5a814837c30 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 07:26:55 +0100 Subject: [PATCH 44/52] WIP Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index dcde0bb2ca..78742e3dc3 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.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3rc6 persistence: enabled: true @@ -71,12 +71,12 @@ searchdb: analyseservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc6 metadataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc6 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.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3rc6 rabbitmq: consumer: username: admin @@ -106,16 +106,16 @@ dataservice: searchservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc6 init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc6 storageservice: enabled: true init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc6 uploadservice: enabled: true @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc4 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc6 public: api: client: https://s155.datalab.tuwien.ac.at -- GitLab From 13f05ac9b06936e634822be3ef7e4502cea6002c Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 12:33:49 +0100 Subject: [PATCH 45/52] Fixed some tests Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 2 +- .../target/create-event-listener.jar | Bin 10138 -> 10140 bytes dbrepo-metadata-service/metrics.md | 2 - .../at/tuwien/endpoints/DatabaseEndpoint.java | 24 +- .../at/tuwien/endpoints/UserEndpoint.java | 14 +- .../tuwien/validation/EndpointValidator.java | 39 +- ...ntifierStatusTypeDtoConverterUnitTest.java | 42 ++ ...> IdentifierTypeDtoConverterUnitTest.java} | 15 +- .../endpoints/AbstractEndpointUnitTest.java | 94 ++++ .../endpoints/AccessEndpointUnitTest.java | 40 ++ .../endpoints/ContainerEndpointUnitTest.java | 26 +- .../endpoints/DatabaseEndpointUnitTest.java | 67 +-- .../endpoints/IdentifierEndpointUnitTest.java | 115 +++- .../endpoints/ViewEndpointUnitTest.java | 38 +- .../KeycloakGatewayIntegrationTest.java | 114 ++++ .../gateway/KeycloakGatewayUnitTest.java | 195 ------- ...nticationPrivilegedIntegrationMvcTest.java | 20 +- .../tuwien/mvc/PrometheusEndpointMvcTest.java | 21 +- .../AuthenticationServiceIntegrationTest.java | 16 +- .../service/UserServicePersistenceTest.java | 13 +- .../tuwien/service/UserServiceUnitTest.java | 5 +- .../java/at/tuwien/utils/KeycloakUtils.java | 22 +- .../validator/EndpointValidatorUnitTest.java | 45 +- .../src/test/resources/init/dbrepo-realm.json | 493 +++++++++++++----- .../at/tuwien/gateway/KeycloakGateway.java | 4 +- .../gateway/impl/KeycloakGatewayImpl.java | 27 +- .../tuwien/service/AuthenticationService.java | 6 +- .../impl/AuthenticationServiceImpl.java | 6 +- .../service/impl/IdentifierServiceImpl.java | 6 +- .../main/java/at/tuwien/test/BaseTest.java | 43 +- 30 files changed, 1021 insertions(+), 533 deletions(-) create mode 100644 dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierStatusTypeDtoConverterUnitTest.java rename dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/{IdentifierTypeConverterUnitTest.java => IdentifierTypeDtoConverterUnitTest.java} (55%) create mode 100644 dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AbstractEndpointUnitTest.java create mode 100644 dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayIntegrationTest.java delete mode 100644 dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 78742e3dc3..9d23d1350f 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -139,7 +139,7 @@ ui: server: https://s155.datalab.tuwien.ac.at title: "Database Repository" logo: "https://ec.tuwien.ac.at/~weise/images/DS_white_hiRes.png" - icon: "https://ec.tuwien.ac.at/~weise/images/DS-icon_white_hiRes.png" + icon: "https://ec.tuwien.ac.at/~weise/images/favicon.ico" touch: "https://ec.tuwien.ac.at/~weise/images/DS-icon_white_hiRes.png" broker: host: s155.datalab.tuwien.ac.at diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index 9a9cd149f84ff92e5292a9fdc19a81edcc9ca7b7..76b1ad02357c308cc312c99ea8bf0e3c3b2e8b62 100644 GIT binary patch delta 1105 zcmbQ`KgVA<z?+#xgn@yBgW-m;YZM1_=Z4~m!ix0=gPIKl_8K3yf5JYgL1FEk9NUcL zuY9)No4(<Ok7CKB)?53{mv$u|59IeWyE(m9KfjpYE&N5t{spDGOf9=zMc9hF9U?y6 zR80SVVR7R1u-uaVX{t)LN@;V~dGFKM{wK5jRQ&9ggNB!;hB@pLs=pSJeD2htN9&$m zxY%aBWp7wTU%kvu{kBWbJ%hKIrFTcZmeJ<RX;t0L%GJC(Ej+oo?cX!&<~n7O>Gn_l zpWGRzTf9y2*3Otyf9v#1p0boy_qsI*IRwo<)uen|^OcTO<s|jP2c+lzOl7p~sWFep zFnIhh-F?s2{yur@3C0<xbY#ErU-<D{Z|lo@ZGSt?x4c)}KjT9^|C`BKKlYfiiSkx1 zpY<p7vcZxspO<O3WJ&Kl+Po_IMqlFx&y{Wa4{ZEC>+j*pwXzExtF`tVikqKdxb_s+ zri@ufJf)6C3aWaV?Cn~-#-Wt+vc+6A;i)dmtFxo)Ex*rZ^Arm-yXU+mK8j5-?n1j* zeu~5%W>8FUF)(m2Fx)U^be+6`QHA-svFqgPjJnJ>j9n+QGs%Hz4JK7E9l)dorfZo@ z!1NX-FR*$>=Cfe>B6BxLd~-a@940X1AKOO`Fyj;dR6!79a+l&PFs-gMnG+uSlMgFd zf<^x;Nn0*uWMJ@h4RO@<^mEe>@MdHZVTL&Iy0L2%0}>E|vjrI5I-X&i{D4`c9$5p( ze7G701_ow02c+Q-BLhQX35pHq8n{q2$TER7l$4fdrsm<$H~E>e2&3!d-^!4HlTndo zESg-eBBPDZUHT~2tejl0Vh0Y+11i!?-<T!~Fl*^Rv_motC>(r#v#io%U|`T;U|?{9 zYiD3s(s+z{@&jfU6b&G6{r}Xw+n<Sn;TkIggAs~`5SGb|0_u|sRN0O6l5-M^i;?XD zX$_co>&F2O28KQX1_m({t)JN@^Ri1!mR92d$DWp&G}Ckb$&3QJlS|aJ80Su&ujZ-% zGGX_+2T34Tg0L-$3H6GT7pR#|KBve94IzjZL7Id;Le3>KFfeRnU|<kN(IhiDPhE{| IgAzy(07xrVy#N3J delta 1012 zcmbQ^Kg(Y@z?+#xgn@yBgW*S=OH_+`c7NeSVa58>d4~)H_PC$2|G}Qa%o$Lm{pEsE zhN{Ni{5ifGJ!DeyoqqnF<<Q)<Y8$)#HS2ql=c_o~p1<hWzp!+d5$EgfIEgblOo_*q zA8*lJ=y>?u+FP&Kbh}+@oP4rlQ)=eD{ZZ9_Dqgz%VCM4TwGB0@|5mL$(2~0HXzkI3 z%XG^#q}P5BtG`*uf9ukA&&i=?iJvo{%6RwZv`SX9a5XP4icjcl`}b^jW1X_dVfj!0 zpWIm^#(7)lZLHGMhXn#w<xQ`e-IN_T6;}G@9h|sU^s3lgo70mMAN0!oOy%P(so|fI zWpMXlxci>1`hD}QCKzaJ4!m>he88{gdRtc7-`a7wzvaE6e9zB%*4<&M^Fxm<SY-A- zWaggitoA8&_pYrB2-PgF2ytcIou^zAwCbCFLC&7E{{?Xw?im;6aj)NSG5wZK*hiID zt1aZegkE|5_5GDtuEU&ec3q1cpYT^{K6zd(9UU|Gw{Npbw}$t7#apYVg>{IRTzu5a z)9eq52QCH%4hC>MOy10>%>1p+W%5l%UFPp~E|WQ#<iNBRlPdF%I+w{oOj=;Np2-AE zZ)5TTt7m3D3#KnKcZ1Y#PGp(G1Y&Gr|HuKNH-F)uDhSrmqc{spYbs6Vgh&14qe_-w zQATBH#>JCml_liA)wx75AORsbTY%xM<EhCZ%8Dl6(bO=bsQJanz>rv?AK=Z%B*F~w zBgjiDm8E5+nZQydrRABac_=DCo_we*&E(89Igv@27oim-A*UkESTMO!MMfLhP>?U+ z7Bes~=)*Z6moA^&sA329&7XN~PF)NP3?CR67&PE&7#Nl`ewlnv#T=~0=QqnLJq88_ z9R>ylClobDCYz`RDu8_a|5NjBe<lWoYpe_mMks26SSA;+m`uK@$^%vyF!9!p0~`zt zeF6*&VkinfvQ6e^mzXT8#si9+$vSG%Oi%eI7qF;LE>JUIoIQD=nkzUuUaCnm)hbTz uW0IcyfJtof8AU#*&k<Qy*dydzG6Ms{Mg|53VH8WGCKsryv8_`A2?78h!CZ&{ diff --git a/dbrepo-metadata-service/metrics.md b/dbrepo-metadata-service/metrics.md index 56a69c68f6..f3e0a3130f 100644 --- a/dbrepo-metadata-service/metrics.md +++ b/dbrepo-metadata-service/metrics.md @@ -59,8 +59,6 @@ | `dbrepo_user_find` | Get user | | `dbrepo_user_modify` | Update user | | `dbrepo_user_password_modify` | Update user password | -| `dbrepo_user_refresh_token` | Refresh token | -| `dbrepo_user_token` | Create token | | `dbrepo_users_list` | List users | | `dbrepo_view_create` | Create view | | `dbrepo_view_delete` | Delete view | 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 6ee9fa6c9e..50016103d8 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 @@ -194,7 +194,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), @ApiResponse(responseCode = "404", - description = "Failed to fin user/database in metadata database", + description = "Failed to find database in metadata database", content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), @@ -211,7 +211,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { }) public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull Principal principal) throws DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, UserNotFoundException, + DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, MalformedException, TableNotFoundException { log.debug("endpoint refresh database metadata, databaseId={}", databaseId); @@ -513,7 +513,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { .findFirst(); if (!database.getIsPublic() && !database.getIsSchemaPublic() && optional.isEmpty() && !isSystem(principal)) { log.error("Failed to find database: not public and no access found"); - throw new DatabaseNotFoundException("Failed to find database: not public and no access found"); + throw new NotAllowedException("Failed to find database: not public and no access found"); } /* reduce metadata */ database.setTables(database.getTables() @@ -534,14 +534,16 @@ public class DatabaseEndpoint extends AbstractEndpoint { throw new NotAllowedException("Failed to find database: not public and not authenticated"); } /* reduce metadata */ - database.setTables(database.getTables() - .stream() - .filter(t -> t.getIsPublic() || t.getIsSchemaPublic()) - .toList()); - database.setViews(database.getViews() - .stream() - .filter(v -> v.getIsPublic() || v.getIsSchemaPublic()) - .toList()); + database.getTables() + .removeAll(database.getTables() + .stream() + .filter(t -> !t.getIsPublic() && !t.getIsSchemaPublic()) + .toList()); + database.getViews() + .removeAll(database.getViews() + .stream() + .filter(v -> !v.getIsPublic() && !v.getIsSchemaPublic()) + .toList()); database.setAccesses(List.of()); } final DatabaseDto dto = databaseMapper.databaseToDatabaseDto(database); diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index fea215194b..51f323c30f 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -221,12 +221,16 @@ public class UserEndpoint extends AbstractEndpoint { content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "503", + description = "Failed to modify user at auth service", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), }) public ResponseEntity<UserBriefDto> modify(@NotNull @PathVariable("userId") UUID userId, @NotNull @Valid @RequestBody UserUpdateDto data, @NotNull Principal principal) throws NotAllowedException, - UserNotFoundException, DatabaseNotFoundException, AuthServiceException, - AuthServiceConnectionException { + UserNotFoundException, AuthServiceException { log.debug("endpoint modify a user, userId={}, data={}", userId, data); final User user = userService.findById(userId); if (!user.getId().equals(getId(principal))) { @@ -276,9 +280,9 @@ public class UserEndpoint extends AbstractEndpoint { }) public ResponseEntity<Void> password(@NotNull @PathVariable("userId") UUID userId, @NotNull @Valid @RequestBody UserPasswordDto data, - @NotNull Principal principal) throws NotAllowedException, AuthServiceException, - AuthServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, DataServiceException, - DataServiceConnectionException, CredentialsInvalidException { + @NotNull Principal principal) throws NotAllowedException, + UserNotFoundException, DatabaseNotFoundException, DataServiceException, + DataServiceConnectionException { log.debug("endpoint modify a user password, userId={}, principal.name={}", userId, principal.getName()); final User user = userService.findById(userId); if (!user.getUsername().equals(principal.getName())) { diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java index 3fc9c7216e..a54f616b01 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/validation/EndpointValidator.java @@ -2,8 +2,8 @@ package at.tuwien.validation; import at.tuwien.SortType; 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.columns.CreateTableColumnDto; import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.endpoints.AbstractEndpoint; import at.tuwien.entities.database.AccessType; @@ -43,15 +43,6 @@ public class EndpointValidator extends AbstractEndpoint { this.accessService = accessService; } - public void validateOnlyPrivateDataAccess(Database database, Principal principal, boolean writeAccessOnly) - throws NotAllowedException, UserNotFoundException, AccessNotFoundException { - if (database.getIsPublic()) { - log.trace("database with id {} is public: no access needed", database.getId()); - return; - } - validateOnlyAccess(database, principal, writeAccessOnly); - } - public void validateOnlyPrivateSchemaAccess(Database database, Principal principal, boolean writeAccessOnly) throws NotAllowedException, UserNotFoundException, AccessNotFoundException { if (database.getIsSchemaPublic()) { @@ -61,11 +52,6 @@ public class EndpointValidator extends AbstractEndpoint { validateOnlyAccess(database, principal, writeAccessOnly); } - public void validateOnlyPrivateDataAccess(Database database, Principal principal) throws NotAllowedException, - UserNotFoundException, AccessNotFoundException { - validateOnlyPrivateDataAccess(database, principal, false); - } - public void validateOnlyPrivateSchemaAccess(Database database, Principal principal) throws NotAllowedException, UserNotFoundException, AccessNotFoundException { validateOnlyPrivateSchemaAccess(database, principal, false); @@ -169,17 +155,6 @@ public class EndpointValidator extends AbstractEndpoint { log.error("Validation failed: column {} type serial demands non-null", optional4a.get().getName()); throw new MalformedException("Validation failed: column " + optional4a.get().getName() + " type serial demands non-null"); } - final Optional<CreateTableColumnDto> optional4b = data.getColumns() - .stream() - .filter(c -> c.getType().equals(ColumnTypeDto.SERIAL) && data.getConstraints() - .getUniques() - .stream() - .noneMatch(uk -> uk.size() == 1 && uk.contains(c.getName()))) - .findFirst(); - if (optional4b.isPresent()) { - log.error("Validation failed: column {} type serial demands a unique constraint", optional4b.get().getName()); - throw new MalformedException("Validation failed: column " + optional4b.get().getName() + " type serial demands a unique constraint"); - } } public boolean validateOnlyMineOrWriteAccessOrHasRole(User owner, Principal principal, DatabaseAccess access, String role) { @@ -204,18 +179,6 @@ public class EndpointValidator extends AbstractEndpoint { return false; } - public boolean validateOnlyMineOrReadAccessOrHasRole(User owner, Principal principal, DatabaseAccess access, String role) { - if (validateOnlyMineOrWriteAccessOrHasRole(owner, principal, access, role)) { - return true; - } - if (access.getType().equals(AccessType.READ)) { - log.debug("validation passed: user {} has read access", principal.getName()); - return true; - } - log.debug("validation failed: user {} has insufficient access {} or role", principal.getName(), access.getType()); - return false; - } - @Transactional(readOnly = true) public void validateOnlyOwnerOrWriteAll(Table table, User user) throws NotAllowedException, AccessNotFoundException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierStatusTypeDtoConverterUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierStatusTypeDtoConverterUnitTest.java new file mode 100644 index 0000000000..8c7316b3d1 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierStatusTypeDtoConverterUnitTest.java @@ -0,0 +1,42 @@ +package at.tuwien.converters; + +import at.tuwien.api.identifier.IdentifierStatusTypeDto; +import at.tuwien.test.AbstractUnitTest; +import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +@Log4j2 +@SpringBootTest +public class IdentifierStatusTypeDtoConverterUnitTest extends AbstractUnitTest { + + @Autowired + private IdentifierStatusTypeDtoConverter identifierStatusTypeDtoConverter; + + @BeforeEach + public void beforeEach() { + genesis(); + } + + @Test + public void identifierStatusTypeDtoConverter_succeeds() { + + /* test */ + final IdentifierStatusTypeDto response = identifierStatusTypeDtoConverter.convert(IdentifierStatusTypeDto.DRAFT.getName()); + assertEquals(IdentifierStatusTypeDto.DRAFT, response); + } + + @Test + public void identifierStatusTypeDtoConverter_fails() { + + /* test */ + assertThrows(IllegalArgumentException.class, () -> { + identifierStatusTypeDtoConverter.convert("i_do_not_exist"); + }); + } +} diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeDtoConverterUnitTest.java similarity index 55% rename from dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java rename to dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeDtoConverterUnitTest.java index b61a39dc0e..98abd668d8 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeConverterUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/converters/IdentifierTypeDtoConverterUnitTest.java @@ -8,14 +8,15 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; @Log4j2 @SpringBootTest -public class IdentifierTypeConverterUnitTest extends AbstractUnitTest { +public class IdentifierTypeDtoConverterUnitTest extends AbstractUnitTest { @Autowired - private IdentifierTypeDtoConverter identifierTypeConverter; + private IdentifierTypeDtoConverter identifierTypeDtoConverter; @BeforeEach public void beforeEach() { @@ -23,19 +24,19 @@ public class IdentifierTypeConverterUnitTest extends AbstractUnitTest { } @Test - public void identifierTypeConverter_succeeds() { + public void IdentifierTypeDtoConverter_succeeds() { /* test */ - final IdentifierTypeDto response = identifierTypeConverter.convert(IdentifierTypeDto.DATABASE.getName()); + final IdentifierTypeDto response = identifierTypeDtoConverter.convert(IdentifierTypeDto.DATABASE.getName()); assertEquals(IdentifierTypeDto.DATABASE, response); } @Test - public void identifierTypeConverter_fails() { + public void IdentifierTypeDtoConverter_fails() { /* test */ assertThrows(IllegalArgumentException.class, () -> { - identifierTypeConverter.convert("i_do_not_exist"); + identifierTypeDtoConverter.convert("i_do_not_exist"); }); } } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AbstractEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AbstractEndpointUnitTest.java new file mode 100644 index 0000000000..dfa4924957 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AbstractEndpointUnitTest.java @@ -0,0 +1,94 @@ +package at.tuwien.endpoints; + +import at.tuwien.api.database.AccessTypeDto; +import at.tuwien.api.database.DatabaseAccessDto; +import at.tuwien.api.user.UserDetailsDto; +import at.tuwien.entities.database.Database; +import at.tuwien.entities.database.DatabaseAccess; +import at.tuwien.entities.user.User; +import at.tuwien.exception.*; +import at.tuwien.mapper.MetadataMapper; +import at.tuwien.service.AccessService; +import at.tuwien.service.DatabaseService; +import at.tuwien.service.UserService; +import at.tuwien.test.AbstractUnitTest; +import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.test.context.support.WithAnonymousUser; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.security.Principal; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +@Log4j2 +@SpringBootTest +@ExtendWith(SpringExtension.class) +public class AbstractEndpointUnitTest extends AbstractUnitTest { + + @Autowired + private AccessEndpoint accessEndpoint; + + @BeforeEach + public void beforeEach() { + genesis(); + } + + @Test + public void hasRole_noPrincipal_fails() { + + /* test */ + assertFalse(accessEndpoint.hasRole(null, "some-role")); + } + + @Test + public void hasRole_noRole_fails() { + + /* test */ + assertFalse(accessEndpoint.hasRole(USER_1_PRINCIPAL, null)); + } + + @Test + public void getId_fails() { + + /* test */ + assertNull(accessEndpoint.getId(null)); + } + + @Test + public void getId_noId_fails() { + final Principal principal = new UsernamePasswordAuthenticationToken(UserDetailsDto.builder() + .id(null) // <<< + .build(), null); + + /* test */ + assertThrows(IllegalArgumentException.class, () -> { + accessEndpoint.getId(principal); + }); + } + + @Test + public void getId_incompatible_fails() { + final Principal principal = new UsernamePasswordAuthenticationToken("", null); + + /* test */ + assertThrows(IllegalArgumentException.class, () -> { + accessEndpoint.getId(principal); + }); + } + +} 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 f4a700e859..376769e3c3 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 @@ -219,6 +219,26 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { generic_update(USER_1_PRINCIPAL, USER_1, USER_2_ID, USER_2, DATABASE_1_USER_2_WRITE_OWN_ACCESS); } + @Test + @WithMockUser(username = USER_1_USERNAME, authorities = {"update-database-access"}) + public void update_ownerNoAccess_fails() { + + /* test */ + assertThrows(NotAllowedException.class, () -> { + generic_update(USER_1_PRINCIPAL, USER_1, USER_1_ID, null, null); + }); + } + + @Test + @WithMockUser(username = USER_1_USERNAME, authorities = {"update-database-access"}) + public void update_ownerNoWriteAllAccess_fails() { + + /* test */ + assertThrows(NotAllowedException.class, () -> { + generic_update(USER_1_PRINCIPAL, USER_1, USER_LOCAL_ADMIN_ID, USER_LOCAL, null); + }); + } + @Test @WithAnonymousUser public void revoke_anonymous_fails() { @@ -249,6 +269,26 @@ public class AccessEndpointUnitTest extends AbstractUnitTest { }); } + @Test + @WithMockUser(username = USER_1_USERNAME, authorities = {"delete-database-access"}) + public void revoke_ownerNoAccess_fails() { + + /* test */ + assertThrows(NotAllowedException.class, () -> { + generic_revoke(USER_1_PRINCIPAL, USER_1, USER_1_ID, null); + }); + } + + @Test + @WithMockUser(username = USER_1_USERNAME, authorities = {"delete-database-access"}) + public void revoke_ownerNoWriteAllAccess_fails() { + + /* test */ + assertThrows(NotAllowedException.class, () -> { + generic_revoke(USER_1_PRINCIPAL, USER_1, USER_LOCAL_ADMIN_ID, USER_LOCAL); + }); + } + @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"delete-database-access"}) public void revoke_succeeds() throws NotAllowedException, DataServiceException, DataServiceConnectionException, 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 98ece39e1e..00185d9ea1 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 @@ -1,12 +1,14 @@ package at.tuwien.endpoints; -import at.tuwien.api.container.CreateContainerDto; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.ContainerDto; +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 at.tuwien.service.impl.ContainerServiceImpl; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,6 +16,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.test.context.support.WithAnonymousUser; @@ -52,19 +55,23 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { } @Test - @WithMockUser(username = USER_1_USERNAME, authorities = {"find-container"}) - public void findById_hasRole_succeeds() throws ContainerNotFoundException { + @WithMockUser(username = USER_1_USERNAME) + public void findById_succeeds() throws ContainerNotFoundException { /* test */ findById_generic(CONTAINER_1_ID, CONTAINER_1, USER_1_PRINCIPAL); } @Test - @WithMockUser(username = USER_4_USERNAME) - public void findById_noRole_succeeds() throws ContainerNotFoundException { + @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME) + public void findById_system_succeeds() throws ContainerNotFoundException { /* test */ - findById_generic(CONTAINER_1_ID, CONTAINER_1, USER_4_PRINCIPAL); + final ResponseEntity<ContainerDto> response = findById_generic(CONTAINER_1_ID, CONTAINER_1, USER_LOCAL_ADMIN_PRINCIPAL); + 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")); } @Test @@ -171,7 +178,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { /* ## GENERIC TEST CASES ## */ /* ################################################################################################### */ - public void findById_generic(Long containerId, Container container, Principal principal) + public ResponseEntity<ContainerDto> findById_generic(Long containerId, Container container, Principal principal) throws ContainerNotFoundException { /* mock */ @@ -182,6 +189,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest { final ResponseEntity<ContainerDto> response = containerEndpoint.findById(containerId, principal); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); + return response; } public void delete_generic(Long containerId, Container container) throws ContainerNotFoundException { 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 f5db6bf03e..bfe225b87c 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 @@ -4,7 +4,6 @@ import at.tuwien.api.database.*; import at.tuwien.entities.database.Database; import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import at.tuwien.gateway.KeycloakGateway; import at.tuwien.service.*; import at.tuwien.service.impl.DatabaseServiceImpl; import at.tuwien.test.AbstractUnitTest; @@ -42,9 +41,6 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @MockBean private AccessService accessService; - @MockBean - private KeycloakGateway keycloakGateway; - @MockBean private ContainerService containerService; @@ -144,7 +140,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void refreshTableMetadata_anonymous_succeeds() { + public void refreshTableMetadata_anonymous_fails() { /* test */ assertThrows(AccessDeniedException.class, () -> { @@ -154,7 +150,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME) - public void refreshTableMetadata_noRole_succeeds() { + public void refreshTableMetadata_noRole_fails() { /* test */ assertThrows(AccessDeniedException.class, () -> { @@ -353,7 +349,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-visibility"}) public void visibility_hasRole_succeeds() throws NotAllowedException, UserNotFoundException, - DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException{ + DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { final DatabaseModifyVisibilityDto request = DatabaseModifyVisibilityDto.builder() .isPublic(true) .build(); @@ -545,7 +541,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findById_anonymous_fails() { + public void findById_anonymousPrivateSchemaNoAccess_fails() { /* test */ assertThrows(NotAllowedException.class, () -> { @@ -555,40 +551,51 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser - public void findById_anonymousNotFound_fails() { + public void findById_anonymousPublicSchemaNoAccess_succeeds() throws UserNotFoundException, NotAllowedException, + DataServiceException, DatabaseNotFoundException, ExchangeNotFoundException, DataServiceConnectionException { /* test */ - assertThrows(DatabaseNotFoundException.class, () -> { - findById_generic(DATABASE_1_ID, null, null); - }); + final DatabaseDto database = findById_generic(DATABASE_2_ID, DATABASE_2, null); + assertEquals(3, database.getTables().size()); + assertEquals(1, database.getViews().size()); + assertEquals(0, database.getAccesses().size()); } @Test - @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) - public void findById_hasRole_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException, NotAllowedException { - - /* pre-condition */ - assertTrue(DATABASE_3_PUBLIC); + @WithAnonymousUser + public void findById_anonymousPrivateSchemaNoAccessSystem_succeeds() throws UserNotFoundException, + NotAllowedException, DataServiceException, DatabaseNotFoundException, ExchangeNotFoundException, + DataServiceConnectionException { /* test */ - findById_generic(DATABASE_3_ID, DATABASE_3, USER_1_PRINCIPAL); + final DatabaseDto database = findById_generic(DATABASE_1_ID, DATABASE_1, USER_LOCAL_ADMIN_PRINCIPAL); + assertEquals(2, database.getTables().size()); + assertEquals(3, database.getViews().size()); + assertEquals(3, database.getAccesses().size()); } @Test - @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) - public void findById_hasRoleForeign_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException, NotAllowedException { + @WithAnonymousUser + public void findById_privateSchema_fails() { - /* pre-condition */ - assertTrue(DATABASE_3_PUBLIC); + /* test */ + assertThrows(NotAllowedException.class, () -> { + findById_generic(DATABASE_1_ID, DATABASE_1, null); + }); + } + + @Test + @WithAnonymousUser + public void findById_anonymousNotFound_fails() { /* test */ - findById_generic(DATABASE_3_ID, DATABASE_3, USER_1_PRINCIPAL); + assertThrows(DatabaseNotFoundException.class, () -> { + findById_generic(DATABASE_1_ID, null, null); + }); } @Test - @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) + @WithMockUser(username = USER_1_USERNAME) public void findById_ownerSeesAccessRights_succeeds() throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException, NotAllowedException { @@ -597,10 +604,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .thenReturn(List.of(DATABASE_1_USER_1_WRITE_ALL_ACCESS, DATABASE_1_USER_2_READ_ACCESS)); /* test */ - final DatabaseDto response = findById_generic(DATABASE_1_ID, DATABASE_1, USER_1_PRINCIPAL); - final List<DatabaseAccessDto> accessList = response.getAccesses(); - assertNotNull(accessList); - assertEquals(3, accessList.size()); + final DatabaseDto database = findById_generic(DATABASE_1_ID, DATABASE_1, USER_1_PRINCIPAL); + assertEquals(4, database.getTables().size()); + assertEquals(3, database.getViews().size()); + assertEquals(3, database.getAccesses().size()); } @Test 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 3b06b974d8..419393b485 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 @@ -124,10 +124,19 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { public static Stream<Arguments> findAll_anonymousFilterDatabase_parameters() { return Stream.of( - Arguments.arguments("dbid", DATABASE_1_ID, null, null, null, 1), - Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, 0), - Arguments.arguments("vid", DATABASE_1_ID, null, VIEW_1_ID, null, 0), - Arguments.arguments("tid", DATABASE_1_ID, null, null, TABLE_1_ID, 0) + 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("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), + Arguments.arguments("status_draft", DATABASE_1_ID, null, null, null, "DRAFT", 0) + ); + } + + public static Stream<Arguments> findAll_filterSubset_parameters() { + return Stream.of( + Arguments.arguments("status_published", DATABASE_2_ID, null, null, null, "PUBLISHED", 0), + Arguments.arguments("status_draft", DATABASE_2_ID, null, null, null, "DRAFT", 1) ); } @@ -201,7 +210,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, + public void findAll_anonymousFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, + Long tableId, IdentifierStatusTypeDto status, Integer expectedSize) throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { @@ -218,7 +228,26 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, null, databaseId, queryId, viewId, tableId, "application/json", null); + final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, status, databaseId, queryId, viewId, tableId, "application/json", null); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertNotNull(response.getBody()); + final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); + assertNotNull(identifiers); + assertEquals(expectedSize, identifiers.size()); + } + + @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, + IdentifierStatusTypeDto status, Integer expectedSize) { + + /* mock */ + when(identifierService.findAll()) + .thenReturn(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4, IDENTIFIER_5, IDENTIFIER_6, IDENTIFIER_7)); + + /* test */ + final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.SUBSET, status, databaseId, queryId, viewId, tableId, "application/json", USER_2_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); @@ -230,7 +259,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { @MethodSource("findAll_anonymousFilterDatabase_parameters") @WithAnonymousUser public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId, - Long tableId, Integer expectedSize) + Long tableId, IdentifierStatusTypeDto status, + Integer expectedSize) throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException { /* mock */ @@ -246,7 +276,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { } /* test */ - final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, null, databaseId, queryId, viewId, tableId, "application/json", USER_2_PRINCIPAL); + final ResponseEntity<?> response = identifierEndpoint.findAll(IdentifierTypeDto.DATABASE, status, databaseId, queryId, viewId, tableId, "application/json", USER_2_PRINCIPAL); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); final List<IdentifierBriefDto> identifiers = (List<IdentifierBriefDto>) response.getBody(); @@ -334,6 +364,75 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { assertEquals(1, identifiers.size()); } + @Test + @WithAnonymousUser + public void find_textCsvDatabase_fails() throws IdentifierNotFoundException { + + /* mock */ + when(identifierService.find(IDENTIFIER_1_ID)) + .thenReturn(IDENTIFIER_1); + + /* test */ + assertThrows(FormatNotAvailableException.class, () -> { + identifierEndpoint.find(IDENTIFIER_1_ID, "text/csv", null); + }); + } + + @Test + @WithAnonymousUser + public void find_draft_fails() throws IdentifierNotFoundException { + + /* mock */ + when(identifierService.find(IDENTIFIER_5_ID)) + .thenReturn(IDENTIFIER_5); + + /* test */ + assertThrows(NotAllowedException.class, () -> { + identifierEndpoint.find(IDENTIFIER_5_ID, "application/json", null); + }); + } + + @Test + @WithMockUser(username = USER_1_USERNAME) + public void find_draftNotOwner_fails() throws IdentifierNotFoundException { + + /* mock */ + when(identifierService.find(IDENTIFIER_5_ID)) + .thenReturn(IDENTIFIER_5); + + /* test */ + assertThrows(NotAllowedException.class, () -> { + identifierEndpoint.find(IDENTIFIER_5_ID, "application/json", USER_1_PRINCIPAL); + }); + } + + @Test + @WithMockUser(username = USER_2_USERNAME) + public void find_draft_succeeds() throws IdentifierNotFoundException, MalformedException, NotAllowedException, + DataServiceException, QueryNotFoundException, DataServiceConnectionException, FormatNotAvailableException { + + /* mock */ + when(identifierService.find(IDENTIFIER_5_ID)) + .thenReturn(IDENTIFIER_5); + + /* test */ + identifierEndpoint.find(IDENTIFIER_5_ID, "application/json", USER_2_PRINCIPAL); + } + + @Test + @WithAnonymousUser + public void find_defaultHtmlRespondsJson_succeeds() throws IdentifierNotFoundException, MalformedException, + NotAllowedException, DataServiceException, QueryNotFoundException, DataServiceConnectionException, + FormatNotAvailableException { + + /* mock */ + when(identifierService.find(IDENTIFIER_1_ID)) + .thenReturn(IDENTIFIER_1); + + /* test */ + identifierEndpoint.find(IDENTIFIER_1_ID, "text/html", null); + } + @Test @WithMockUser(username = USER_4_USERNAME) public void find_json0_succeeds() throws IOException, MalformedException, DataServiceException, 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 4f1a3da45c..d1434ef9e4 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 @@ -1,7 +1,7 @@ package at.tuwien.endpoints; -import at.tuwien.api.database.ViewBriefDto; import at.tuwien.api.database.CreateViewDto; +import at.tuwien.api.database.ViewBriefDto; import at.tuwien.api.database.ViewDto; import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.entities.database.Database; @@ -21,6 +21,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.AccessDeniedException; @@ -173,6 +174,25 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { find_generic(DATABASE_3_ID, DATABASE_3, USER_2_PRINCIPAL, USER_2_ID, USER_2, DATABASE_2_USER_1_READ_ACCESS); } + @Test + @WithMockUser(username = USER_2_USERNAME) + public void find_publicSystem_succeeds() throws UserNotFoundException, DatabaseNotFoundException, + AccessNotFoundException, ViewNotFoundException { + + /* test */ + final ResponseEntity<ViewDto> response = find_generic(DATABASE_3_ID, DATABASE_3, USER_LOCAL_ADMIN_PRINCIPAL, + USER_LOCAL_ADMIN_ID, null, null); + 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(CONTAINER_1_HOST), headers.get("X-Host")); + assertEquals(List.of("" + CONTAINER_1_PORT), headers.get("X-Port")); + 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")); + } + @Test @WithMockUser(username = USER_2_USERNAME) public void find_publicHasRoleHasAccess_succeeds() throws UserNotFoundException, DatabaseNotFoundException, @@ -494,9 +514,9 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { assertEquals(VIEW_1_NAME, response.getBody().getName()); } - protected void find_generic(Long databaseId, Database database, Principal principal, UUID userId, User user, - DatabaseAccess access) throws DatabaseNotFoundException, UserNotFoundException, - AccessNotFoundException, ViewNotFoundException { + protected ResponseEntity<ViewDto> find_generic(Long databaseId, Database database, Principal principal, + UUID userId, User user, DatabaseAccess access) + throws DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, ViewNotFoundException { /* mock */ when(databaseService.findById(databaseId)) @@ -514,18 +534,18 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { when(userService.findById(userId)) .thenReturn(user); when(viewService.findById(any(Database.class), anyLong())) - .thenReturn(VIEW_1); + .thenReturn(VIEW_5); } else { when(viewService.findById(any(Database.class), anyLong())) - .thenReturn(VIEW_1); + .thenReturn(VIEW_5); } /* test */ - final ResponseEntity<ViewDto> response = viewEndpoint.find(databaseId, VIEW_1_ID, USER_1_PRINCIPAL); + final ResponseEntity<ViewDto> response = viewEndpoint.find(databaseId, VIEW_5_ID, principal); assertEquals(HttpStatus.OK, response.getStatusCode()); assertNotNull(response.getBody()); - assertEquals(VIEW_1_ID, response.getBody().getId()); - assertEquals(VIEW_1_NAME, response.getBody().getName()); + assertEquals(VIEW_5_ID, response.getBody().getId()); + return response; } protected void delete_generic(Long databaseId, Database database, Long viewId, View view, Principal principal, diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayIntegrationTest.java new file mode 100644 index 0000000000..e72cd7fa75 --- /dev/null +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayIntegrationTest.java @@ -0,0 +1,114 @@ +package at.tuwien.gateway; + +import at.tuwien.exception.UserNotFoundException; +import at.tuwien.gateway.impl.KeycloakGatewayImpl; +import at.tuwien.test.AbstractUnitTest; +import at.tuwien.utils.KeycloakUtils; +import dasniko.testcontainers.keycloak.KeycloakContainer; +import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.testcontainers.images.PullPolicy; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +@Log4j2 +@SpringBootTest +@Testcontainers +@ExtendWith(SpringExtension.class) +public class KeycloakGatewayIntegrationTest extends AbstractUnitTest { + + @Autowired + private KeycloakGatewayImpl keycloakGateway; + + @Autowired + private KeycloakUtils keycloakUtils; + + @BeforeEach + public void beforeEach() { + genesis(); + /* auth service */ + keycloakUtils.deleteUser(USER_1_USERNAME); + } + + @Container + private static KeycloakContainer keycloakContainer = new KeycloakContainer(KEYCLOAK_IMAGE) + .withImagePullPolicy(PullPolicy.alwaysPull()) + .withAdminUsername("admin") + .withAdminPassword("admin") + .withRealmImportFile("./init/dbrepo-realm.json") + .withEnv("KC_HOSTNAME_STRICT_HTTPS", "false"); + + @DynamicPropertySource + static void keycloakProperties(DynamicPropertyRegistry registry) { + final String authServiceEndpoint = "http://localhost:" + keycloakContainer.getMappedPort(8080); + log.trace("set auth endpoint: {}", authServiceEndpoint); + registry.add("dbrepo.endpoints.authService", () -> authServiceEndpoint); + } + + @Test + public void deleteUser_succeeds() throws UserNotFoundException { + + /* mock */ + keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); + + /* test */ + keycloakGateway.deleteUser(keycloakUtils.getUserId(USER_1_USERNAME)); + } + + @Test + public void deleteUser_notFound_fails() { + + /* test */ + assertThrows(UserNotFoundException.class, () -> { + keycloakGateway.deleteUser(USER_1_ID); + }); + } + + @Test + public void findByUsername_succeeds() throws UserNotFoundException { + + /* mock */ + keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); + + /* test */ + keycloakGateway.findByUsername(USER_1_USERNAME); + } + + @Test + public void findByUsername_notFound_fails() { + + /* test */ + assertThrows(UserNotFoundException.class, () -> { + keycloakGateway.findByUsername(USER_1_USERNAME); + }); + } + + @Test + public void updateUserCredentials_succeeds() throws UserNotFoundException { + + /* mock */ + keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); + + /* test */ + keycloakGateway.updateUserCredentials(keycloakUtils.getUserId(USER_1_USERNAME), USER_1_PASSWORD_DTO); + } + + @Test + public void updateUserCredentials_notFound_fails() { + + /* test */ + assertThrows(UserNotFoundException.class, () -> { + keycloakGateway.updateUserCredentials(keycloakUtils.getUserId(USER_1_USERNAME), USER_1_PASSWORD_DTO); + }); + } + +} diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java deleted file mode 100644 index cbb607792e..0000000000 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/gateway/KeycloakGatewayUnitTest.java +++ /dev/null @@ -1,195 +0,0 @@ -package at.tuwien.gateway; - -import at.tuwien.api.keycloak.TokenDto; -import at.tuwien.exception.AuthServiceConnectionException; -import at.tuwien.exception.AuthServiceException; -import at.tuwien.exception.UserNotFoundException; -import at.tuwien.gateway.impl.KeycloakGatewayImpl; -import at.tuwien.test.AbstractUnitTest; -import lombok.extern.log4j.Log4j2; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; - -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; - -@Log4j2 -@SpringBootTest -@ExtendWith(SpringExtension.class) -public class KeycloakGatewayUnitTest extends AbstractUnitTest { - - @MockBean - @Qualifier("keycloakRestTemplate") - private RestTemplate keycloakRestTemplate; - - @MockBean - @Qualifier("restTemplate") - private RestTemplate restTemplate; - - @Autowired - private KeycloakGatewayImpl keycloakGateway; - - @Test - public void deleteUser_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .build()); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.deleteUser(USER_1_ID); - }); - } - - @Test - public void deleteUser_succeeds() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) - .build()); - - /* test */ - keycloakGateway.deleteUser(USER_1_ID); - } - - @Test - public void deleteUser_notFound_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.NotFound.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(UserNotFoundException.class, () -> { - keycloakGateway.deleteUser(USER_1_ID); - }); - } - - @Test - public void deleteUser_unexpected_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.Conflict.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.deleteUser(USER_1_ID); - }); - } - - @Test - public void deleteUser_connection_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpServerErrorException.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.DELETE), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.deleteUser(USER_1_ID); - }); - } - - @Test - public void updateUserCredentials_succeeds() throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.NO_CONTENT) - .build()); - - /* test */ - keycloakGateway.updateUserCredentials(USER_1_ID, USER_1_PASSWORD_DTO); - } - - @Test - public void updateUserCredentials_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - when(keycloakRestTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .build()); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.updateUserCredentials(USER_1_ID, USER_1_PASSWORD_DTO); - }); - } - - @Test - public void updateUserCredentials_connection_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpServerErrorException.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(AuthServiceConnectionException.class, () -> { - keycloakGateway.updateUserCredentials(USER_1_ID, USER_1_PASSWORD_DTO); - }); - } - - @Test - public void updateUserCredentials_unexpected_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(TokenDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .body(TOKEN_DTO)); - doThrow(HttpClientErrorException.Conflict.class) - .when(keycloakRestTemplate) - .exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)); - - /* test */ - assertThrows(AuthServiceException.class, () -> { - keycloakGateway.updateUserCredentials(USER_1_ID, USER_1_PASSWORD_DTO); - }); - } - -} 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 7dd25baefc..0365db6c4a 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 @@ -9,7 +9,6 @@ import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.DatabaseRepository; import at.tuwien.repository.LicenseRepository; import at.tuwien.repository.UserRepository; -import at.tuwien.service.AuthenticationService; import at.tuwien.test.AbstractUnitTest; import at.tuwien.utils.KeycloakUtils; import dasniko.testcontainers.keycloak.KeycloakContainer; @@ -61,9 +60,6 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest @Autowired private DatabaseRepository databaseRepository; - @Autowired - private AuthenticationService authenticationService; - @Autowired private KeycloakGateway keycloakGateway; @@ -97,7 +93,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_basicUser_succeeds() throws Exception { /* mock */ - keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + 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))) @@ -112,7 +108,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_basicAdmin_succeeds() throws Exception { /* pre condition */ - keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + 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))) @@ -127,7 +123,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_database_bearerAdmin_succeeds() throws Exception { /* pre condition */ - keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); final TokenDto jwt = keycloakGateway.obtainUserToken(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD); /* test */ @@ -143,7 +139,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_bearerAdmin_succeeds() throws Exception { /* pre condition */ - keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); final TokenDto jwt = keycloakGateway.obtainUserToken(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD); @@ -160,7 +156,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_basicUser_succeeds() throws Exception { /* mock */ - keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + 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))) @@ -175,7 +171,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_table_basicAdmin_succeeds() throws Exception { /* mock */ - keycloakUtils.createUser(USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST); + 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))) @@ -190,7 +186,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_view_basicUser_succeeds() throws Exception { /* mock */ - keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + 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))) @@ -205,7 +201,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest public void findById_container_basicUser_succeeds() throws Exception { /* mock */ - keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + 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))) 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 61655c6f29..790262c739 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 @@ -26,7 +26,6 @@ import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; @@ -594,30 +593,14 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest { } /* test */ - for (String metric : List.of("dbrepo_user_refresh_token", "dbrepo_users_list", - "dbrepo_user_find", "dbrepo_user_modify", "dbrepo_user_password_modify")) { + for (String metric : List.of("dbrepo_users_list", "dbrepo_user_find", "dbrepo_user_modify", + "dbrepo_user_password_modify")) { assertThat(registry) .hasObservationWithNameEqualTo(metric); } generic_openApiDocs(UserEndpoint.class); } - @Test - @WithAnonymousUser - public void prometheusUserEndpoint2_succeeds() { - - /* mock */ - try { - userEndpoint.create(USER_1_SIGNUP_REQUEST_DTO); - } catch (Exception e) { - /* ignore */ - } - - /* test */ - assertThat(registry) - .hasObservationWithNameEqualTo("dbrepo_user_token"); - } - @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"create-database-view", "delete-database-view"}) public void prometheusViewEndpoint_succeeds() { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java index 712dc951c8..d655a25cf1 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/AuthenticationServiceIntegrationTest.java @@ -44,7 +44,7 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { } @Container - private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:26.0") + private static KeycloakContainer keycloakContainer = new KeycloakContainer(KEYCLOAK_IMAGE) .withImagePullPolicy(PullPolicy.alwaysPull()) .withAdminUsername("admin") .withAdminPassword("admin") @@ -53,7 +53,9 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { @DynamicPropertySource static void keycloakProperties(DynamicPropertyRegistry registry) { - registry.add("dbrepo.endpoints.authService", () -> "http://localhost:" + keycloakContainer.getMappedPort(8080)); + final String authServiceEndpoint = "http://localhost:" + keycloakContainer.getMappedPort(8080); + log.trace("set auth endpoint: {}", authServiceEndpoint); + registry.add("dbrepo.endpoints.authService", () -> authServiceEndpoint); } @Test @@ -61,14 +63,10 @@ public class AuthenticationServiceIntegrationTest extends AbstractUnitTest { AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { /* mock */ - try { - keycloakGateway.deleteUser(UUID.fromString(keycloakGateway.findByUsername(USER_1_USERNAME).getId())); - } catch (Exception e) { - /* ignore */ - } - keycloakUtils.createUser(USER_1_KEYCLOAK_SIGNUP_REQUEST); + keycloakUtils.deleteUser(USER_1_USERNAME); + keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST); final User request = User.builder() - .id(UUID.fromString(keycloakGateway.findByUsername(USER_1_USERNAME).getId())) + .keycloakId(UUID.fromString(keycloakGateway.findByUsername(USER_1_USERNAME).getId())) .username(USER_1_USERNAME) .build(); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java index 7ec6d680e7..e9d6b158ce 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java @@ -4,6 +4,7 @@ import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; import at.tuwien.exception.*; +import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -12,12 +13,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.doNothing; @Log4j2 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) @@ -31,6 +34,9 @@ public class UserServicePersistenceTest extends AbstractUnitTest { @Autowired private UserService userService; + @MockBean + private KeycloakGateway keycloakGateway; + @BeforeEach public void beforeEach() { genesis(); @@ -74,7 +80,7 @@ public class UserServicePersistenceTest extends AbstractUnitTest { } @Test - public void modify_succeeds() throws UserNotFoundException, AuthServiceException, AuthServiceConnectionException { + public void modify_succeeds() throws UserNotFoundException, AuthServiceException { final UserUpdateDto request = UserUpdateDto.builder() .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) @@ -84,6 +90,11 @@ public class UserServicePersistenceTest extends AbstractUnitTest { .language("de") .build(); + /* mock */ + doNothing() + .when(keycloakGateway) + .updateUser(USER_1_ID, request); + /* test */ final User response = userService.modify(USER_1, request); assertEquals(USER_1_ID, response.getId()); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java index 91bcdd330c..4c423aa25b 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java @@ -94,7 +94,7 @@ public class UserServiceUnitTest extends AbstractUnitTest { } @Test - public void modify_succeeds() throws UserNotFoundException, AuthServiceException, AuthServiceConnectionException { + public void modify_succeeds() throws UserNotFoundException, AuthServiceException { /* mock */ when(userRepository.findById(USER_1_ID)) @@ -109,8 +109,7 @@ public class UserServiceUnitTest extends AbstractUnitTest { } @Test - public void updatePassword_succeeds() throws AuthServiceException, AuthServiceConnectionException, - UserNotFoundException { + public void updatePassword_succeeds() throws UserNotFoundException { /* mock */ doNothing() diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java index 469280d1cd..b3612fcc0f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java @@ -2,6 +2,7 @@ package at.tuwien.utils; import at.tuwien.api.keycloak.UserCreateDto; import at.tuwien.config.KeycloakConfig; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.mapper.MetadataMapper; import jakarta.ws.rs.core.Response; import lombok.extern.log4j.Log4j2; @@ -11,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; +import java.util.UUID; @Log4j2 @Component @@ -27,23 +29,35 @@ public class KeycloakUtils { this.metadataMapper = metadataMapper; } - public void createUser(UserCreateDto data) { + public void createUser(UUID ldapId, UserCreateDto data) { + final UserRepresentation user = metadataMapper.userCreateDtoToUserRepresentation(data); + user.singleAttribute("CUSTOM_ID", ldapId.toString()); try (Response response = keycloak.realm(keycloakConfig.getRealm()) .users() - .create(metadataMapper.userCreateDtoToUserRepresentation(data))) { + .create(user)) { if (response.getStatus() != 201) { - log.error("Failed to create user: {}", response.getStatus()); + log.warn("Failed to create user: {}", response.getStatus()); } } log.debug("Created user {} at auth service", data.getUsername()); } + public UUID getUserId(String username) throws UserNotFoundException { + final List<UserRepresentation> users = keycloak.realm(keycloakConfig.getRealm()) + .users() + .search(username); + if (users.isEmpty()) { + throw new UserNotFoundException("Failed to find user: " + username); + } + return UUID.fromString(users.get(0).getId()); + } + public void deleteUser(String username) { final List<UserRepresentation> users = keycloak.realm(keycloakConfig.getRealm()) .users() .search(username); if (users.isEmpty()) { - log.error("Failed to find user"); + log.warn("Failed to find user"); return; } try (Response response = keycloak.realm(keycloakConfig.getRealm()) 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 fe650589ad..486db28e59 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 @@ -2,8 +2,8 @@ package at.tuwien.validator; import at.tuwien.SortType; 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.columns.CreateTableColumnDto; import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.user.User; @@ -70,6 +70,14 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { endpointValidator.validateDataParams(0L, 1L); } + @Test + public void validateOnlyAccess_system_succeeds() throws UserNotFoundException, NotAllowedException, + AccessNotFoundException { + + /* test */ + endpointValidator.validateOnlyAccess(DATABASE_1, USER_LOCAL_ADMIN_PRINCIPAL, false); + } + @Test public void validateDataParams_bothNull_succeeds() throws PaginationException { @@ -222,6 +230,20 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { endpointValidator.validateOnlyAccessOrPublic(DATABASE_1, USER_1_PRINCIPAL); } + @Test + public void validateOnlyWriteOwnOrWriteAllAccess_succeeds() throws DatabaseNotFoundException, + TableNotFoundException, AccessNotFoundException, NotAllowedException { + + /* mock */ + when(tableService.findById(DATABASE_1, TABLE_1_ID)) + .thenReturn(TABLE_1); + when(accessService.find(eq(DATABASE_1), any(User.class))) + .thenReturn(DATABASE_1_USER_1_WRITE_ALL_ACCESS); + + /* test */ + endpointValidator.validateOnlyWriteOwnOrWriteAllAccess(TABLE_1, USER_1); + } + @Test public void validateOnlyWriteOwnOrWriteAllAccess_privateHasReadAccess_fails() throws DatabaseNotFoundException, TableNotFoundException, AccessNotFoundException { @@ -323,6 +345,20 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { }); } + @Test + public void validateOnlyPrivateDataHasRole_publicDatabase_succeeds() throws NotAllowedException { + + /* test */ + endpointValidator.validateOnlyPrivateDataHasRole(DATABASE_4, null, "nobody-role"); + } + + @Test + public void validateOnlyPrivateDataHasRole_privateDatabaseHasRole_succeeds() throws NotAllowedException { + + /* test */ + endpointValidator.validateOnlyPrivateDataHasRole(DATABASE_1, USER_1_PRINCIPAL, "find-database"); + } + @Test public void validateOnlyPrivateDataHasRole_privatePrincipalMissing_fails() { @@ -491,6 +527,13 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest { assertTrue(endpointValidator.validatePublicationDate(request)); } + @Test + public void validateOnlyMineOrWriteAccessOrHasRole_succeeds() { + + /* test */ + assertTrue(endpointValidator.validateOnlyMineOrWriteAccessOrHasRole(USER_1, USER_1_PRINCIPAL, null, "find-database")); + } + @Test public void validateOnlyMineOrWriteAccessOrHasRole_noAccess_fails() { diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json b/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json index 56f2003e96..fb6df2007f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/init/dbrepo-realm.json @@ -27,7 +27,7 @@ "oauth2DevicePollingInterval" : 5, "enabled" : true, "sslRequired" : "none", - "registrationAllowed" : false, + "registrationAllowed" : true, "registrationEmailAsUsername" : false, "rememberMe" : false, "verifyEmail" : true, @@ -38,6 +38,7 @@ "bruteForceProtected" : false, "permanentLockout" : false, "maxTemporaryLockouts" : 0, + "bruteForceStrategy" : "MULTIPLE", "maxFailureWaitSeconds" : 900, "minimumQuickLoginWaitSeconds" : 60, "waitIncrementSeconds" : 60, @@ -73,7 +74,7 @@ "description" : "${default-system-roles}", "composite" : true, "composites" : { - "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] + "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "check-foreign-database-access", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", @@ -146,19 +147,11 @@ "description" : "${default-table-handling}", "composite" : true, "composites" : { - "realm" : [ "modify-table-column-semantics", "list-tables", "update-table-statistic", "find-table", "create-table", "delete-table" ] + "realm" : [ "modify-table-column-semantics", "list-tables", "update-table-statistic", "find-table", "create-table", "delete-table", "update-table" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } - }, { - "id" : "b0d66d3d-59b4-4aae-aa66-e3d5a49f28e3", - "name" : "view-database-view-data", - "description" : "${view-database-view-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } }, { "id" : "f5ea431a-9b2c-4195-bcb4-9511f38e4b44", "name" : "create-database-view", @@ -219,7 +212,7 @@ "description" : "${default-researcher-roles}", "composite" : true, "composites" : { - "realm" : [ "default-table-handling", "default-semantics-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-broker-handling", "default-identifier-handling" ] + "realm" : [ "default-table-handling", "default-semantics-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-broker-handling", "default-identifier-handling", "default-view-handling" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", @@ -264,6 +257,14 @@ "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } + }, { + "id" : "22449528-00c9-4e86-9400-4b8ae6fd8f4d", + "name" : "modify-view-visibility", + "description" : "${modify-view-visibility}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } }, { "id" : "c12c1f4e-186f-4153-a795-26e79fb623d6", "name" : "create-ontology", @@ -296,6 +297,17 @@ "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } + }, { + "id" : "d75e7938-9d5e-4cb3-8c57-18a446867d3a", + "name" : "default-view-handling", + "description" : "${default-view-handling}", + "composite" : true, + "composites" : { + "realm" : [ "delete-database-view", "update-database-view", "create-database-view", "modify-view-visibility", "find-database-view", "list-database-views" ] + }, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } }, { "id" : "535f1484-4514-4d24-8d97-e3f6c11a426b", "name" : "create-container", @@ -390,6 +402,14 @@ "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } + }, { + "id" : "6ae766b0-b8b4-4067-a95d-c8576bc4ac77", + "name" : "update-table", + "description" : "${update-table}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } }, { "id" : "64c16bfb-2015-48ad-a23f-637ff24419cb", "name" : "default-query-handling", @@ -401,6 +421,14 @@ "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } + }, { + "id" : "b05e9b2b-748d-490b-949b-e78655bf7805", + "name" : "check-foreign-database-access", + "description" : "${check-foreign-database-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } }, { "id" : "c047d521-cec3-4444-86c4-aef098489b7b", "name" : "delete-maintenance-message", @@ -409,6 +437,14 @@ "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", "attributes" : { } + }, { + "id" : "df20b7d1-8d30-4a99-80eb-e8195fab0e76", + "name" : "update-database-view", + "description" : "${update-database-view}", + "composite" : false, + "clientRole" : false, + "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", + "attributes" : { } }, { "id" : "88f82262-be80-4d18-9fb4-5529da031f33", "name" : "system", @@ -522,7 +558,7 @@ "description" : "${default-container-handling}", "composite" : true, "composites" : { - "realm" : [ "find-container", "list-containers" ] + "realm" : [ "find-container" ] }, "clientRole" : false, "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", @@ -902,7 +938,7 @@ "composite" : true, "composites" : { "client" : { - "realm-management" : [ "query-realms", "view-identity-providers", "manage-identity-providers", "manage-authorization", "query-clients", "view-authorization", "view-users", "manage-users", "view-realm", "query-users", "view-clients", "query-groups", "create-client", "manage-clients", "manage-events", "impersonation", "view-events", "manage-realm" ] + "realm-management" : [ "query-realms", "manage-authorization", "manage-identity-providers", "view-identity-providers", "query-clients", "view-authorization", "view-users", "manage-users", "view-realm", "query-users", "view-clients", "create-client", "query-groups", "impersonation", "manage-clients", "manage-events", "view-events", "manage-realm" ] } }, "clientRole" : true, @@ -1203,12 +1239,13 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, "fullScopeAllowed" : false, "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] }, { "id" : "d3c4a04e-39ce-4549-a34a-11e25774cd96", @@ -1233,6 +1270,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, @@ -1247,7 +1285,7 @@ "consentRequired" : false, "config" : { } } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] }, { "id" : "81ef0f59-a5ca-4be4-a1d1-0c32edf1cfd6", @@ -1270,12 +1308,14 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", + "client.use.lightweight.access.token.enabled" : "true", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, + "fullScopeAllowed" : true, "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] }, { "id" : "88694c91-753d-4c44-9740-ec9ac06bba45", @@ -1298,6 +1338,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "true", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, @@ -1331,6 +1372,7 @@ "frontchannelLogout" : true, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", "oidc.ciba.grant.enabled" : "false", "client.secret.creation.time" : "1680085365", "backchannel.logout.session.required" : "true", @@ -1342,6 +1384,38 @@ "fullScopeAllowed" : true, "nodeReRegistrationTimeout" : -1, "protocolMappers" : [ { + "id" : "266edf62-a19a-483b-b594-81428e4af792", + "name" : "orcid", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "ORCID", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "orcid", + "jsonType.label" : "String" + } + }, { + "id" : "1a21798a-38b6-4df5-89f0-86942415246f", + "name" : "theme", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "THEME", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "theme", + "jsonType.label" : "String" + } + }, { "id" : "da0b27c1-ae2e-4baa-bf78-db233e15c78d", "name" : "preferred_username", "protocol" : "openid-connect", @@ -1355,27 +1429,77 @@ "userinfo.token.claim" : "true" } }, { - "id" : "7c94de93-f60f-487b-b4b7-1891c67f74cc", - "name" : "aud", + "id" : "1bc6a1f4-4be2-439c-8c7f-b3fb0bb9956a", + "name" : "affiliation", "protocol" : "openid-connect", - "protocolMapper" : "oidc-hardcoded-claim-mapper", + "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "claim.value" : "dbrepo", + "introspection.token.claim" : "true", "userinfo.token.claim" : "true", + "user.attribute" : "AFFILIATION", "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", - "claim.name" : "aud", - "access.tokenResponse.claim" : "false" + "claim.name" : "affiliation", + "jsonType.label" : "String" } }, { - "id" : "0b4c644f-0cf0-4794-8395-d5d83009dabe", + "id" : "7cbf6dc6-653e-40a9-9974-0e5bf7a363c3", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "70bbd779-d085-4204-ac4b-3a40abab9d88", + "name" : "language", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "LANGUAGE", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "language", + "jsonType.label" : "String" + } + }, { + "id" : "b817424d-7f91-43d8-b7d0-6a32582377fb", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "030a1cd9-53d1-4a62-a375-94d50a2dc6fc", "name" : "uid", "protocol" : "openid-connect", "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { + "aggregate.attrs" : "false", "introspection.token.claim" : "true", + "multivalued" : "false", "userinfo.token.claim" : "true", "user.attribute" : "CUSTOM_ID", "id.token.claim" : "true", @@ -1384,9 +1508,26 @@ "claim.name" : "uid", "jsonType.label" : "String" } + }, { + "id" : "c304ed2f-5952-4772-838d-91998a45f154", + "name" : "aud", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-hardcoded-claim-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "claim.value" : "account", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "lightweight.claim" : "false", + "access.token.claim" : "true", + "claim.name" : "aud", + "jsonType.label" : "String", + "access.tokenResponse.claim" : "false" + } } ], - "defaultClientScopes" : [ "roles", "attributes" ], - "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] + "defaultClientScopes" : [ "roles", "basic" ], + "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "attributes", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] }, { "id" : "25741f6b-4867-4138-8238-6345c6ba8702", "clientId" : "rabbitmq-client", @@ -1413,6 +1554,7 @@ "frontchannelLogout" : true, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", "oidc.ciba.grant.enabled" : "false", "client.secret.creation.time" : "1680000860", "backchannel.logout.session.required" : "true", @@ -1430,12 +1572,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "false", "user.attribute" : "username", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "client_id", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "false" } }, { "id" : "f1afc22d-f595-403b-ba2e-6ab19d98205e", @@ -1444,15 +1586,15 @@ "protocolMapper" : "oidc-hardcoded-claim-mapper", "consentRequired" : false, "config" : { - "claim.value" : "rabbitmq", - "userinfo.token.claim" : "false", "id.token.claim" : "false", "access.token.claim" : "true", "claim.name" : "aud", + "claim.value" : "rabbitmq", + "userinfo.token.claim" : "false", "access.tokenResponse.claim" : "false" } } ], - "defaultClientScopes" : [ "web-origins", "acr", "rabbitmq.tag:management" ], + "defaultClientScopes" : [ "web-origins", "acr", "rabbitmq.tag:management", "basic" ], "optionalClientScopes" : [ "rabbitmq.read:*/*", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "roles", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] }, { "id" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", @@ -1475,6 +1617,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "true", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, @@ -1505,11 +1648,13 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", + "client.use.lightweight.access.token.enabled" : "true", "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, + "fullScopeAllowed" : true, "nodeReRegistrationTimeout" : 0, "protocolMappers" : [ { "id" : "c4d54410-3f22-4259-9571-94da2c43b752", @@ -1518,15 +1663,15 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], + "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] } ], "clientScopes" : [ { @@ -1547,8 +1692,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "782819fe-ba5d-4ddb-9f95-cabb69d79c8d", @@ -1557,12 +1702,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "emailVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } }, { "id" : "ca613fc8-bbf2-4240-8b33-a1874f1559f3", @@ -1571,12 +1716,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "email", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "email", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1586,8 +1731,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "84f0487a-1d7d-470c-9b8e-5835294ae235", @@ -1596,12 +1741,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "preferred_username", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bbdcdb36-3ec0-443d-b1af-9993d40f0567", @@ -1610,12 +1755,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "gender", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "gender", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "9faa870b-5491-4ce9-b27d-c9ce07d6a95e", @@ -1624,12 +1769,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "birthdate", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "birthdate", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f0e3c012-9523-4076-83ae-e466e2d08220", @@ -1649,12 +1794,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "profile", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "profile", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "18cfbf4b-0a8e-45c7-a832-c0f72c92f3f3", @@ -1663,12 +1808,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "updatedAt", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "updated_at", - "jsonType.label" : "long" + "jsonType.label" : "long", + "userinfo.token.claim" : "true" } }, { "id" : "841ea785-26ab-429a-a420-09ce3948924d", @@ -1677,12 +1822,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "lastName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "family_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "bfba13ff-f952-4e89-bbb1-a693fdebfae8", @@ -1691,12 +1836,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "website", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "website", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "475f071d-5149-4379-b928-76482f5f519c", @@ -1705,12 +1850,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "zoneinfo", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "zoneinfo", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "b8bebfed-b5e9-4604-a0ee-9817f7d439ac", @@ -1719,12 +1864,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "middleName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "middle_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "445232c8-6830-476c-a6f1-8bbef167595a", @@ -1733,12 +1878,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "picture", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "picture", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "65f2e474-6ede-4872-86e4-e49504dd0f2a", @@ -1747,12 +1892,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "locale", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "locale", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "16cd5a27-ccf3-453c-ae1e-8621813ab73c", @@ -1761,12 +1906,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "firstName", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "given_name", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "f9efedfc-3388-457c-b10a-1dff4525ff9b", @@ -1775,12 +1920,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "nickname", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "nickname", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1814,12 +1959,12 @@ "protocolMapper" : "oidc-usermodel-property-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "username", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "upn", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } } ] }, { @@ -1861,8 +2006,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "dae802fb-9138-408a-b80e-a40eb0f56814", @@ -1871,12 +2016,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumber", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number", - "jsonType.label" : "String" + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } }, { "id" : "feb06a8d-b0eb-4911-8464-368d93f566fa", @@ -1885,12 +2030,12 @@ "protocolMapper" : "oidc-usermodel-attribute-mapper", "consentRequired" : false, "config" : { - "userinfo.token.claim" : "true", "user.attribute" : "phoneNumberVerified", "id.token.claim" : "true", "access.token.claim" : "true", "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" } } ] }, { @@ -1900,8 +2045,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, "protocolMappers" : [ { "id" : "c6411e3b-6478-453d-b530-5fe175a4d786", @@ -1981,6 +2126,61 @@ "gui.order" : "", "consent.screen.text" : "" } + }, { + "id" : "aa5c6ca7-812d-4fff-80b9-f5095ca82ce6", + "name" : "service_account", + "description" : "Specific scope for a client enabled for service accounts", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "bb359b0f-97dc-4d6a-9a2f-89458b53c512", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + }, { + "id" : "7aa3a4d2-3dd1-48dd-8886-562906eadb2a", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + }, { + "id" : "c4882d39-e815-49f5-8a73-eb8b83572eae", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "client_id", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "client_id", + "jsonType.label" : "String" + } + } ] }, { "id" : "210cc792-6c07-45a6-a77e-827cdf3b41ba", "name" : "offline_access", @@ -1997,8 +2197,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "8d4ffe4d-1d01-4ca1-8ff4-44eacca61b30", @@ -2029,6 +2229,41 @@ "gui.order" : "", "consent.screen.text" : "" } + }, { + "id" : "ba11267a-478b-4b32-872f-4eb2d125d116", + "name" : "basic", + "description" : "OpenID Connect scope for add all basic claims to the token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "1445e14f-49b0-4666-8ddc-691493c24ad9", + "name" : "sub", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-sub-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "access.token.claim" : "true" + } + }, { + "id" : "846f1ef0-2b86-4e07-9d25-691d25af5fce", + "name" : "auth_time", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "AUTH_TIME", + "introspection.token.claim" : "true", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "auth_time", + "jsonType.label" : "long" + } + } ] }, { "id" : "37f61543-dad7-4a82-8e10-77acdd1eefdc", "name" : "roles", @@ -2036,8 +2271,8 @@ "protocol" : "openid-connect", "attributes" : { "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, "protocolMappers" : [ { "id" : "3b6b6914-8ad1-4a71-88ec-444f754aaacb", @@ -2053,11 +2288,15 @@ "protocolMapper" : "oidc-usermodel-realm-role-mapper", "consentRequired" : false, "config" : { + "introspection.token.claim" : "true", + "userinfo.token.claim" : "false", + "multivalued" : "true", "user.attribute" : "foo", + "id.token.claim" : "true", + "lightweight.claim" : "false", "access.token.claim" : "true", "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" + "jsonType.label" : "String" } }, { "id" : "a7bd6723-e58e-47f7-95c0-2925ce99283d", @@ -2074,7 +2313,7 @@ } } ] } ], - "defaultDefaultClientScopes" : [ "rabbitmq.tag:administrator", "rabbitmq.tag:management" ], + "defaultDefaultClientScopes" : [ "rabbitmq.tag:administrator", "rabbitmq.tag:management", "basic" ], "defaultOptionalClientScopes" : [ "rabbitmq.write:*/*", "offline_access", "rabbitmq.configure:*/*", "roles", "role_list", "address", "phone", "acr", "microprofile-jwt", "email", "attributes", "profile", "rabbitmq.read:*/*", "web-origins" ], "browserSecurityHeaders" : { "contentSecurityPolicyReportOnly" : "", @@ -2087,6 +2326,10 @@ "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, "smtpServer" : { }, + "loginTheme" : "keycloak", + "accountTheme" : "", + "adminTheme" : "", + "emailTheme" : "", "eventsEnabled" : false, "eventsListeners" : [ "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], @@ -2136,7 +2379,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-role-list-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2162,11 +2405,11 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "saml-role-list-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper" ] } } ], "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "fb763636-e1ea-49c7-adca-ea105cdec4ad", + "id" : "a407a1d6-a7f6-4a72-ba3a-149de03d5a43", "providerId" : "declarative-user-profile", "subComponents" : { }, "config" : { @@ -2185,17 +2428,6 @@ "priority" : [ "100" ], "algorithm" : [ "RSA-OAEP" ] } - }, { - "id" : "230cb681-9ceb-4b1b-8a4c-929a11b08de0", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "8a489935-9a95-459b-9059-59b438ef0fa8" ], - "secret" : [ "xSCVgBlrLPWoF54gKQdR7BqXlfNaCD43xtS_ZgQRC0tGNAbqhy2Q9y8LdD2IR7K__8VGaDGYtyZayopgTebhDBb4gHDjDOBX7flhFYRrm0G3aTIuCIyFG-bPULwmyP_oHeC6tjwdQhqx5G0tE2mQQqPC9dDZuUA5I7QREIGK8cI" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } }, { "id" : "28ca0b6d-b2e2-4785-b04b-2391e6344e30", "name" : "aes-generated", @@ -2212,8 +2444,8 @@ "providerId" : "hmac-generated", "subComponents" : { }, "config" : { - "kid" : [ "5034d264-cb50-4006-a59e-2ce636eb5f38" ], - "secret" : [ "ToVIw-a4IE-Yp9JpP8ztb8NAICYO8CT3tUiDPT6DdiBcgzKJ9Ym9vspxGVdmPceX3mAgbnGLAcTx1PkInSVrbZs-tX9QXFwdlyGbewhKiNpH8wEg32Wk4GuUDpTv8JCsymgWyQBY681jvIMv05eCoK2QWpqCzcgP828KM5peCzo" ], + "kid" : [ "7f9f9054-5697-4f60-bdc8-67e3bd0f4db6" ], + "secret" : [ "1SCIY20z3AbAHCL28LuJfBU-7zfsZv5dacgliUeGdRW_WK3vH9fJUpPu1f7iDrdlhF7YQmHxLXsWjxhQId4ShI7QBdgKCArHWqi0GeH37oNXfZFg_uv-K_3JSfxfGBRu5jpRQhhSBxESZWsFVkskhxWUvNe6b5l9dFbMIif72rI" ], "priority" : [ "100" ], "algorithm" : [ "HS256" ] } @@ -2228,12 +2460,23 @@ "certificate" : [ "MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk=" ], "priority" : [ "100" ] } + }, { + "id" : "addbae10-c6ae-4735-851f-7a5ea035ce25", + "name" : "hmac-generated-hs512", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "352d0ea1-8218-42b5-ab78-e2ca56cf6a95" ], + "secret" : [ "_kr6EZOZ8IKqPWgJltHAAsQ34wCIGPs8oOQLYWwJrSIH7Qie3CEVKZnICyBP1goR-QgUtg25tR8Qu5MkvYkb8assJ8Iok5x_8iYCR4Txkf_mS-emrlAtQajlIjmOfNBtx704dTnZlP9rWzqpW6mrpeiOaiCw1K0XCpY5C_ZjXKw" ], + "priority" : [ "100" ], + "algorithm" : [ "HS512" ] + } } ] }, "internationalizationEnabled" : false, "supportedLocales" : [ ], "authenticationFlows" : [ { - "id" : "88e5d526-2298-413c-a904-133ad839d47f", + "id" : "259dd7b6-01b7-433a-bda4-028857151ecd", "alias" : "Account verification options", "description" : "Method with which to verity the existing account", "providerId" : "basic-flow", @@ -2255,7 +2498,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "a690c715-fbae-4c20-b680-bd4010718761", + "id" : "542ca1d7-9627-4102-b843-98837ce433fb", "alias" : "Browser - Conditional OTP", "description" : "Flow to determine if the OTP is required for the authentication", "providerId" : "basic-flow", @@ -2277,7 +2520,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "ad6d407e-c73e-4439-baf3-d7c99c6cb6ad", + "id" : "4f153b98-6851-440b-a022-0a14e67a9b2f", "alias" : "Direct Grant - Conditional OTP", "description" : "Flow to determine if the OTP is required for the authentication", "providerId" : "basic-flow", @@ -2299,7 +2542,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "e5d03405-e10a-408a-adb2-41dbb4f24515", + "id" : "3d791b35-d35c-40b2-bb3e-e806d72b27ee", "alias" : "First broker login - Conditional OTP", "description" : "Flow to determine if the OTP is required for the authentication", "providerId" : "basic-flow", @@ -2321,7 +2564,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "96b93843-62d0-44f1-84dd-21cc5f95f523", + "id" : "9b746104-9371-4c3f-b69f-9322cead1b08", "alias" : "Handle Existing Account", "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", "providerId" : "basic-flow", @@ -2343,7 +2586,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "088f4051-36ab-4952-a4f2-4ba53c408083", + "id" : "7a164efe-c97b-4fbb-950d-7745359ba9a4", "alias" : "Reset - Conditional OTP", "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", "providerId" : "basic-flow", @@ -2365,7 +2608,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "05f37bb2-779d-4e3f-ad1b-f6eb33bb3de4", + "id" : "4fdc5e1b-1b55-4662-8360-67d75fa22677", "alias" : "User creation or linking", "description" : "Flow for the existing/non-existing user alternatives", "providerId" : "basic-flow", @@ -2388,7 +2631,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "300a5647-7d2c-4348-9f1f-51504bfda1c4", + "id" : "75893341-c338-44d8-ae27-a3fc7bfe8f2d", "alias" : "Verify Existing Account by Re-authentication", "description" : "Reauthentication of existing account", "providerId" : "basic-flow", @@ -2410,7 +2653,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "26afc672-314b-4ad9-9711-7aaeafd7c00c", + "id" : "89626b76-f4cf-4c46-934c-4408c225a44b", "alias" : "browser", "description" : "browser based authentication", "providerId" : "basic-flow", @@ -2446,7 +2689,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "9b301f6c-eda7-4da0-ba09-1a6454ff910d", + "id" : "4112115a-e7a7-44c2-9af5-65d538e4ba0d", "alias" : "clients", "description" : "Base authentication for clients", "providerId" : "client-flow", @@ -2482,7 +2725,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "6e54f1be-dbad-4b6d-8eee-8e048d413c63", + "id" : "f82a9b0a-2c0a-4cb1-96b2-6c78b0b1f14f", "alias" : "direct grant", "description" : "OpenID Connect Resource Owner Grant", "providerId" : "basic-flow", @@ -2511,7 +2754,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "31da4b94-03c4-4d79-9ac3-5df1445c0781", + "id" : "3614e155-e8ce-4958-98fb-a27e4706cc70", "alias" : "docker auth", "description" : "Used by Docker clients to authenticate against the IDP", "providerId" : "basic-flow", @@ -2526,7 +2769,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "2e16651d-681f-4d9b-9dd4-9acdb465cd43", + "id" : "506f9b96-5002-47c0-96e3-3830a0fcfa26", "alias" : "first broker login", "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", "providerId" : "basic-flow", @@ -2549,7 +2792,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "da109a26-fefa-48a4-ae8e-1d49627c2db8", + "id" : "4b7a7e91-36db-4b27-8e2d-01a04a822980", "alias" : "forms", "description" : "Username, password, otp and other auth forms.", "providerId" : "basic-flow", @@ -2571,7 +2814,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "4c983c77-241f-41c5-8b8a-e2cd6fc08914", + "id" : "04c2fe01-5076-4aa4-9596-4efb4004195f", "alias" : "registration", "description" : "registration flow", "providerId" : "basic-flow", @@ -2587,7 +2830,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "d62c8dd6-633c-408a-aa99-43071510efb4", + "id" : "d12f77e1-7733-44a2-98ff-fd75c784d721", "alias" : "registration form", "description" : "registration form", "providerId" : "form-flow", @@ -2616,7 +2859,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "c8ca5be7-e76d-4e16-b5ca-3ced99d92dbb", + "id" : "91f6048c-a376-4809-8f37-c8d7a517830c", "alias" : "reset credentials", "description" : "Reset credentials for a user if they forgot their password or something", "providerId" : "basic-flow", @@ -2652,7 +2895,7 @@ "userSetupAllowed" : false } ] }, { - "id" : "389c1c37-e8af-4610-a507-e1257f55b954", + "id" : "7b8fb487-53b8-4533-a696-76bc05256cb1", "alias" : "saml ecp", "description" : "SAML ECP Profile Authentication Flow", "providerId" : "basic-flow", @@ -2668,13 +2911,13 @@ } ] } ], "authenticatorConfig" : [ { - "id" : "d66ca9d0-1645-4c84-abfe-c0a696f17de4", + "id" : "48372696-0579-45e5-b074-5e8dbdbbe7d6", "alias" : "create unique user config", "config" : { "require.password.update.after.registration" : "false" } }, { - "id" : "061cc6b8-90be-4423-9bf9-974ead709b5d", + "id" : "08df3b83-e522-42a7-9e24-9028b960bf39", "alias" : "review profile config", "config" : { "update.profile.on.first.login" : "missing" @@ -2785,10 +3028,12 @@ "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", + "organizationsEnabled" : "false", "shortVerificationUri" : "" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.4", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java index d4963adffa..cd5fd08a7e 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/KeycloakGateway.java @@ -20,7 +20,7 @@ public interface KeycloakGateway { * * @param id The user id. */ - void deleteUser(UUID id) throws AuthServiceException; + void deleteUser(UUID id) throws UserNotFoundException; /** * Update the credentials for a given user. @@ -28,7 +28,7 @@ public interface KeycloakGateway { * @param id The user id. * @param password The user credential. */ - void updateUserCredentials(UUID id, UserPasswordDto password); + void updateUserCredentials(UUID id, UserPasswordDto password) throws UserNotFoundException; void updateUser(UUID id, UserUpdateDto data) throws AuthServiceException, UserNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java index a8e3acbf5b..af54651d6c 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/KeycloakGatewayImpl.java @@ -8,6 +8,7 @@ import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.mapper.MetadataMapper; +import jakarta.ws.rs.BadRequestException; import jakarta.ws.rs.ForbiddenException; import jakarta.ws.rs.NotFoundException; import jakarta.ws.rs.core.Response; @@ -66,27 +67,33 @@ public class KeycloakGatewayImpl implements KeycloakGateway { } @Override - public void deleteUser(UUID id) throws AuthServiceException { + public void deleteUser(UUID id) throws UserNotFoundException { try (Response response = keycloak.realm(keycloakConfig.getRealm()) .users() .delete(String.valueOf(id))) { - if (response.getStatus() != 200) { - log.error("Failed to delete user: unexpected response status: {}", response.getStatus()); - throw new AuthServiceException("Unexpected response status: " + response.getStatus()); + if (response.getStatus() == 404) { + log.error("Failed to delete user: not found"); + throw new UserNotFoundException("Failed to delete user: not found"); } } log.info("Deleted user {} at auth service", id); } @Override - public void updateUserCredentials(UUID id, UserPasswordDto data) { + public void updateUserCredentials(UUID id, UserPasswordDto data) throws UserNotFoundException { final CredentialRepresentation credential = new CredentialRepresentation(); - credential.setCredentialData(data.getPassword()); + credential.setTemporary(false); + credential.setValue(data.getPassword()); credential.setType(CredentialRepresentation.PASSWORD); - keycloak.realm(keycloakConfig.getRealm()) - .users() - .get(String.valueOf(id)) - .resetPassword(credential); + try { + keycloak.realm(keycloakConfig.getRealm()) + .users() + .get(String.valueOf(id)) + .resetPassword(credential); + } catch (NotFoundException e) { + log.error("Failed to update user password: not found"); + throw new UserNotFoundException("Failed to update user password: not found", e); + } log.info("Updated user {} password at auth service", id); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java index e914b0f1ab..75b647bf95 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java @@ -24,9 +24,7 @@ public interface AuthenticationService { * * @param user The user. * @param data The new password. - * @throws AuthServiceException The auth service responded with unexpected behavior. - * @throws AuthServiceConnectionException The connection with the auth service could not be established. + * @throws UserNotFoundException The user was not found after creation in the auth database. */ - void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, AuthServiceConnectionException, - CredentialsInvalidException, UserNotFoundException; + void updatePassword(User user, UserPasswordDto data) throws UserNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java index 5e007cebc7..1159913039 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java @@ -24,14 +24,12 @@ public class AuthenticationServiceImpl implements AuthenticationService { } @Override - public void delete(User user) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, - CredentialsInvalidException { + public void delete(User user) throws AuthServiceException, UserNotFoundException { keycloakGateway.deleteUser(user.getKeycloakId()); } @Override - public void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException, UserNotFoundException { + public void updatePassword(User user, UserPasswordDto data) throws UserNotFoundException { keycloakGateway.updateUserCredentials(user.getKeycloakId(), data); } 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 932a1a598c..96b8bd8396 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 @@ -287,7 +287,7 @@ public class IdentifierServiceImpl implements IdentifierService { /* save identifier */ switch (identifier.getType()) { case SUBSET -> { - log.debug("identifier type: subset with id {} and database with id {}", identifier.getQueryId(), identifier.getDatabase().getId()); + log.debug("identifier type: subset with id {}", identifier.getQueryId()); final QueryDto query = dataServiceGateway.findQuery(identifier.getDatabase().getId(), identifier.getQueryId()); identifier.setQuery(query.getQuery()); identifier.setQueryId(query.getId()); @@ -298,14 +298,14 @@ public class IdentifierServiceImpl implements IdentifierService { identifier.setResultHash(query.getResultHash()); } case VIEW -> { - log.debug("identifier type: view with id {} and database with id {}", identifier.getViewId(), identifier.getDatabase().getId()); + log.debug("identifier type: view with id {}", identifier.getViewId()); final View view = viewService.findById(identifier.getDatabase(), identifier.getViewId()); identifier.setViewId(view.getId()); identifier.setQuery(view.getQuery()); identifier.setQueryNormalized(view.getQuery()); identifier.setQueryHash(view.getQueryHash()); } - case DATABASE -> log.debug("identifier type: database with id {}", identifier.getDatabase()); + case DATABASE -> log.debug("identifier type: database with id {}", identifier.getDatabase().getId()); case TABLE -> log.debug("identifier type: table with id {}", identifier.getTableId()); } /* save identifier in metadata database */ 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 d8850b5589..57ae996453 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 @@ -46,7 +46,6 @@ import at.tuwien.api.orcid.person.name.OrcidNameDto; import at.tuwien.api.orcid.person.name.OrcidValueDto; import at.tuwien.api.semantics.*; import at.tuwien.api.user.UserAttributesDto; -import at.tuwien.api.user.UserDto; import at.tuwien.api.user.*; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.entities.container.Container; @@ -99,12 +98,12 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <ul> * <li>Table 1 (Private Data, Private Schema)</li> * <li>Table 2 (Private Data, Public Schema)</li> - * <li>Table 3</li> - * <li>Table 4</li> + * <li>Table 3 (Private Data, Private Schema)</li> + * <li>Table 4 (Public Data, Private Schema)</li> * <li>Query 1</li> - * <li>View 1</li> - * <li>View 2</li> - * <li>View 3</li> + * <li>View 1 (Private Data, Private Schema)</li> + * <li>View 2 (Public Data, Public Schema)</li> + * <li>View 3 (Public Data, Private Schema)</li> * <li>Identifier 1 (Title=en, Description=en, type=database)</li> * <li>Identifier 2 (Title=en, Description=en, type=subset, queryId=1)</li> * <li>Identifier 3 (Title=en, Description=en, type=view, viewId=1)</li> @@ -113,22 +112,22 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <p> * Database 2 (Private Data, Public Schema, User 2) -> Container 1 * <ul> - * <li>Table 5</li> - * <li>Table 6</li> - * <li>Table 7</li> + * <li>Table 5 (Public Data, Public Schema)</li> + * <li>Table 6 (Public Data, Private Schema)</li> + * <li>Table 7 (Public Data, Public Schema)</li> * <li>Query 2</li> * <li>Query 6</li> - * <li>View 4</li> + * <li>View 4 (Public Data, Private Schema)</li> * <li>Identifier 5 (Title=de, Description=de)</li> * </ul> * <p> * Database 3 (Public Data, Private Schema, User 3) -> Container 1 * <ul> - * <li>Table 8</li> + * <li>Table 8 (Private Data, Private Schema)</li> * <li>Query 3</li> * <li>Query 4</li> * <li>Query 5</li> - * <li>View 5</li> + * <li>View 5 (Public Data, Public Schema)</li> * <li>Identifier 6 (Title=en, Description=en, Query=3)</li> * </ul> * <p> @@ -153,7 +152,7 @@ public abstract class BaseTest { public final static String RABBITMQ_IMAGE = "rabbitmq:3.13.7"; - public final static String KEYCLOAK_IMAGE = "quay.io/keycloak/keycloak:24.0"; + public final static String KEYCLOAK_IMAGE = "quay.io/keycloak/keycloak:26.0"; public final static String[] DEFAULT_SEMANTICS_HANDLING = new String[]{"default-semantics-handling", "create-semantic-unit", "execute-semantic-query", "table-semantic-analyse", "create-semantic-concept"}; @@ -166,7 +165,7 @@ public abstract class BaseTest { "update-semantic-unit", "create-ontology", "update-ontology"}; public final static String[] DEFAULT_CONTAINER_HANDLING = new String[]{"default-container-handling", - "create-container", "list-containers", "modify-container-state", "find-container"}; + "create-container", "list-containers", "modify-container-state"}; public final static String[] ESCALATED_CONTAINER_HANDLING = new String[]{"escalated-container-handling", "modify-foreign-container-state", "delete-container"}; @@ -217,7 +216,7 @@ public abstract class BaseTest { public final static String[] DEFAULT_DATA_STEWARD_ROLES = ArrayUtils.merge(List.of(new String[]{"default-data-steward-roles"}, ESCALATED_IDENTIFIER_HANDLING, DEFAULT_SEMANTICS_HANDLING, ESCALATED_SEMANTICS_HANDLING, DEFAULT_VIEW_HANDLING)); - public final static String[] DEFAULT_LOCAL_ADMIN_ROLES = new String[]{"admin"}; + public final static String[] DEFAULT_LOCAL_ADMIN_ROLES = new String[]{"system"}; public final static List<GrantedAuthorityDto> AUTHORITY_LOCAL_ADMIN_ROLES = Arrays.stream(DEFAULT_LOCAL_ADMIN_ROLES) .map(GrantedAuthorityDto::new) @@ -440,6 +439,7 @@ public abstract class BaseTest { public final static String USER_BROKER_PASSWORD = "guest"; public final static UUID USER_LOCAL_ADMIN_ID = UUID.fromString("a54dcb2e-a644-4e82-87e7-05a96413983d"); + public final static UUID USER_LOCAL_ADMIN_KEYCLOAK_ID = UUID.fromString("703c2ca0-8fc3-4c03-9bc5-4dae6b211e78"); public final static String USER_LOCAL_ADMIN_USERNAME = "admin"; @SuppressWarnings("java:S2068") public final static String USER_LOCAL_ADMIN_PASSWORD = "admin"; @@ -455,7 +455,7 @@ public abstract class BaseTest { .build(); public final static UserDetails USER_LOCAL_ADMIN_DETAILS = UserDetailsDto.builder() - .id(String.valueOf(USER_LOCAL_ADMIN_ID)) + .id(USER_LOCAL_ADMIN_ID.toString()) .username(USER_LOCAL_ADMIN_USERNAME) .password(USER_LOCAL_ADMIN_PASSWORD) .authorities(AUTHORITY_DEFAULT_LOCAL_ADMIN_AUTHORITIES) @@ -463,6 +463,7 @@ public abstract class BaseTest { public final static User USER_LOCAL = User.builder() .id(USER_LOCAL_ADMIN_ID) + .keycloakId(USER_LOCAL_ADMIN_KEYCLOAK_ID) .username(USER_LOCAL_ADMIN_USERNAME) .mariadbPassword(USER_LOCAL_ADMIN_MARIADB_PASSWORD) .theme(USER_LOCAL_ADMIN_THEME) @@ -2031,7 +2032,7 @@ public abstract class BaseTest { public final static String TABLE_6_INTERNALNAME = "names"; public final static Boolean TABLE_6_VERSIONED = true; public final static Boolean TABLE_6_IS_PUBLIC = true; - public final static Boolean TABLE_6_SCHEMA_PUBLIC = true; + public final static Boolean TABLE_6_SCHEMA_PUBLIC = false; public final static Boolean TABLE_6_PROCESSED_CONSTRAINTS = true; public final static String TABLE_6_DESCRIPTION = "Some names dataset"; public final static String TABLE_6_QUEUE_NAME = TABLE_6_INTERNALNAME; @@ -2150,9 +2151,8 @@ public abstract class BaseTest { public final static String TABLE_4_NAME = "Sensor 2"; public final static String TABLE_4_INTERNALNAME = "sensor_2"; public final static Boolean TABLE_4_VERSIONED = true; - public final static Boolean TABLE_4_IS_PUBLIC = false; + public final static Boolean TABLE_4_IS_PUBLIC = true; public final static Boolean TABLE_4_SCHEMA_PUBLIC = false; - public final static Boolean TABLE_4_PROCESSED_CONSTRAINTS = true; public final static String TABLE_4_DESCRIPTION = "Hello sensor"; public final static String TABLE_4_QUEUE_NAME = TABLE_4_INTERNALNAME; public final static String TABLE_4_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_4_ID; @@ -2330,7 +2330,6 @@ public abstract class BaseTest { public final static Boolean TABLE_8_VERSIONED = true; public final static Boolean TABLE_8_IS_PUBLIC = false; public final static Boolean TABLE_8_SCHEMA_PUBLIC = false; - public final static Boolean TABLE_8_PROCESSED_CONSTRAINTS = true; public final static String TABLE_8_DESCRIPTION = "Hello mfcc"; public final static String TABLE_8_QUEUE_NAME = TABLE_8_INTERNAL_NAME; public final static String TABLE_8_ROUTING_KEY = "dbrepo\\." + DATABASE_3_ID + "\\." + TABLE_8_ID; @@ -5357,7 +5356,7 @@ public abstract class BaseTest { public final static String VIEW_3_INTERNAL_NAME = "junit3"; public final static Long VIEW_3_CONTAINER_ID = CONTAINER_1_ID; public final static Long VIEW_3_DATABASE_ID = DATABASE_1_ID; - public final static Boolean VIEW_3_PUBLIC = false; + public final static Boolean VIEW_3_PUBLIC = true; public final static Boolean VIEW_3_SCHEMA_PUBLIC = false; public final static 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`"; public final static String VIEW_3_QUERY_HASH = "bbbaa56a5206b3dc3e6cf9301b0db9344eb6f19b100c7b88550ffb597a0bd255"; @@ -5519,7 +5518,7 @@ public abstract class BaseTest { public final static Long VIEW_4_TABLE_ID = TABLE_5_ID; public final static Table VIEW_4_TABLE = TABLE_5; public final static Boolean VIEW_4_PUBLIC = true; - public final static Boolean VIEW_4_SCHEMA_PUBLIC = true; + public final static Boolean VIEW_4_SCHEMA_PUBLIC = false; public final static String VIEW_4_QUERY = "SELECT `animal_name`, `hair`, `feathers`, `eggs`, `milk`, `airborne`, `aquatic`, `predator`, `backbone`, `breathes`, `venomous`, `fins`, `legs`, `tail`, `domestic`, `catsize`, `class_type` FROM `zoo` WHERE `class_type` = 1"; public final static String VIEW_4_QUERY_HASH = "3561cd0bb0b0e94d6f15ae602134252a5760d09d660a71a4fb015b6991c8ba0b"; -- GitLab From f70f705d54def9f6e07dcddd03cdf46c95c4c546 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 13:26:05 +0100 Subject: [PATCH 46/52] Fixed moar tests Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../tuwien/endpoint/ViewEndpointUnitTest.java | 32 +++++++++---------- .../endpoints/DatabaseEndpointUnitTest.java | 4 +-- .../main/java/at/tuwien/test/BaseTest.java | 4 +-- 3 files changed, 20 insertions(+), 20 deletions(-) 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 5dce498856..b003ebfb4f 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 @@ -330,17 +330,17 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { NotAllowedException, MetadataServiceException { /* mock */ - when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); doThrow(NotAllowedException.class) .when(credentialService) - .getAccess(DATABASE_1_ID, USER_1_ID); + .getAccess(DATABASE_1_ID, USER_4_ID); /* test */ assertThrows(NotAllowedException.class, () -> { - viewEndpoint.getData(DATABASE_1_ID, VIEW_3_ID, null, null, null, httpServletRequest, USER_1_PRINCIPAL); + viewEndpoint.getData(DATABASE_1_ID, VIEW_1_ID, null, null, null, httpServletRequest, USER_4_PRINCIPAL); }); } @@ -366,15 +366,15 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { NotAllowedException, MetadataServiceException { /* mock */ - when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) - .getAccess(DATABASE_1_ID, USER_3_ID); + .getAccess(DATABASE_1_ID, USER_4_ID); /* test */ assertThrows(NotAllowedException.class, () -> { - viewEndpoint.getData(DATABASE_1_ID, VIEW_3_ID, null, null, null, httpServletRequest, USER_3_PRINCIPAL); + viewEndpoint.getData(DATABASE_1_ID, VIEW_1_ID, null, null, null, httpServletRequest, USER_4_PRINCIPAL); }); } @@ -384,15 +384,15 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { NotAllowedException, MetadataServiceException { /* mock */ - when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) - .getAccess(DATABASE_1_ID, USER_3_ID); + .getAccess(DATABASE_1_ID, USER_4_ID); /* test */ assertThrows(NotAllowedException.class, () -> { - viewEndpoint.exportDataset(DATABASE_1_ID, VIEW_3_ID, null, USER_3_PRINCIPAL); + viewEndpoint.exportDataset(DATABASE_1_ID, VIEW_1_ID, null, USER_4_PRINCIPAL); }); } @@ -418,15 +418,15 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { NotAllowedException, MetadataServiceException { /* mock */ - when(credentialService.getView(DATABASE_1_ID, VIEW_3_ID)) - .thenReturn(VIEW_3_PRIVILEGED_DTO); + when(credentialService.getView(DATABASE_1_ID, VIEW_1_ID)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); doThrow(NotAllowedException.class) .when(credentialService) - .getAccess(DATABASE_1_ID, USER_1_ID); + .getAccess(DATABASE_1_ID, USER_4_ID); /* test */ assertThrows(NotAllowedException.class, () -> { - viewEndpoint.exportDataset(DATABASE_1_ID, VIEW_3_ID, null, USER_1_PRINCIPAL); + viewEndpoint.exportDataset(DATABASE_1_ID, VIEW_1_ID, null, USER_4_PRINCIPAL); }); } 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 bfe225b87c..47ec3e6b3a 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 @@ -570,8 +570,8 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* test */ final DatabaseDto database = findById_generic(DATABASE_1_ID, DATABASE_1, USER_LOCAL_ADMIN_PRINCIPAL); assertEquals(2, database.getTables().size()); - assertEquals(3, database.getViews().size()); - assertEquals(3, database.getAccesses().size()); + assertEquals(2, database.getViews().size()); + assertNotEquals(0, database.getAccesses().size()); } @Test 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 57ae996453..0f07af9af9 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 @@ -5034,8 +5034,8 @@ public abstract class BaseTest { public final static String VIEW_1_INTERNAL_NAME = "junit"; public final static Long VIEW_1_CONTAINER_ID = CONTAINER_1_ID; public final static Long VIEW_1_DATABASE_ID = DATABASE_1_ID; - public final static Boolean VIEW_1_PUBLIC = true; - public final static Boolean VIEW_1_SCHEMA_PUBLIC = true; + public final static Boolean VIEW_1_PUBLIC = false; + public final static Boolean VIEW_1_SCHEMA_PUBLIC = false; public final static String VIEW_1_QUERY = "select `location`, `lat`, `lng` from `weather_location`"; public final static String VIEW_1_QUERY_HASH = "dc81a6877c7c51a6a6f406e1fc2a255e44a0d49a20548596e0d583c3eb849c23"; -- GitLab From 75a39fca7ece27e3e67493100b846dcecad06053 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 14:02:00 +0100 Subject: [PATCH 47/52] RC7 Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 9d23d1350f..d12cc8ef01 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.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3rc7 persistence: enabled: true @@ -71,12 +71,12 @@ searchdb: analyseservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc7 metadataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc7 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.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3rc7 rabbitmq: consumer: username: admin @@ -106,16 +106,16 @@ dataservice: searchservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc7 init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc7 storageservice: enabled: true init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc7 uploadservice: enabled: true @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc6 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc7 public: api: client: https://s155.datalab.tuwien.ac.at -- GitLab From d3b90a12f9fca47675691142f0d2510f60a5aa67 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 14:38:44 +0100 Subject: [PATCH 48/52] RC8 Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 2 +- .../java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java | 2 +- dbrepo-ui/layouts/default.vue | 6 +++--- helm/dbrepo/templates/ui-secret.yaml | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index d12cc8ef01..63d94522bf 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc8 public: api: client: https://s155.datalab.tuwien.ac.at 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 47ec3e6b3a..fd91fb5655 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 @@ -569,7 +569,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* test */ final DatabaseDto database = findById_generic(DATABASE_1_ID, DATABASE_1, USER_LOCAL_ADMIN_PRINCIPAL); - assertEquals(2, database.getTables().size()); + assertEquals(4, database.getTables().size()); assertEquals(2, database.getViews().size()); assertNotEquals(0, database.getAccesses().size()); } diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 5df3b8cda3..813d416cff 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -100,8 +100,9 @@ class="mr-2" color="secondary" variant="flat" + :loading="loadingLogin" :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-login' : null" - @click="login()"> + @click="loadingLogin=true;login()"> {{ $t('navigation.login') }} </v-btn> <v-btn @@ -152,7 +153,6 @@ </template> <script setup> -import { ref } from 'vue' import { useCacheStore } from '@/stores/cache.js' const { loggedIn, user, login, logout } = useOidcAuth() @@ -160,7 +160,6 @@ const cacheStore = useCacheStore() cacheStore.setUser(loggedIn ? user.value?.userInfo : null) cacheStore.setRoles(loggedIn ? user.value?.claims?.realm_access?.roles : []) const runtimeConfig = useRuntimeConfig() -const config = ref(runtimeConfig) useServerHead({ title: runtimeConfig.public.title, meta: [ @@ -185,6 +184,7 @@ export default { model: null, query: null, loading: true, + loadingLogin: true, databaseError: null, accessError: null, searchResults: [], diff --git a/helm/dbrepo/templates/ui-secret.yaml b/helm/dbrepo/templates/ui-secret.yaml index 3afb602785..a84ac8f5ce 100644 --- a/helm/dbrepo/templates/ui-secret.yaml +++ b/helm/dbrepo/templates/ui-secret.yaml @@ -23,6 +23,7 @@ stringData: NUXT_PUBLIC_UPLOAD_CLIENT: "{{ .Values.ui.public.upload.client | default $uploadEndpoint }}" NUXT_PUBLIC_BROKER_CONNECTIONS: "{{ include "dbrepo.broker.connections" . }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL: "{{ .Values.gateway }}/realms/dbrepo/protocol/openid-connect/auth" + NUXT_OIDC_PROVIDERS_KEYCLOAK_BASE_URL: "{{ .Values.gateway }}/realms/dbrepo" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_ID: "{{ .Values.authservice.client.id }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET: "{{ .Values.authservice.client.secret }}" NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI: "{{ .Values.gateway }}" -- GitLab From da765ef7f58219da64ee94339b8f3da872e48d4a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 15:06:01 +0100 Subject: [PATCH 49/52] WIP rc9 Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .gitlab/agents/dev/values.yaml | 2 +- dbrepo-auth-service/dbrepo-realm.json | 2 +- dbrepo-ui/layouts/default.vue | 2 +- helm/dbrepo/templates/auth-configmap.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 63d94522bf..4cc98e3dc0 100644 --- a/.gitlab/agents/dev/values.yaml +++ b/.gitlab/agents/dev/values.yaml @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc8 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc9 public: api: client: https://s155.datalab.tuwien.ac.at diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index 7215166ca0..1c703b8375 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -2323,7 +2323,7 @@ "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, "smtpServer" : { }, - "loginTheme" : "keycloak", + "loginTheme" : "keycloak.v2", "accountTheme" : "", "adminTheme" : "", "emailTheme" : "", diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 813d416cff..3ac8e32f90 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -184,7 +184,7 @@ export default { model: null, query: null, loading: true, - loadingLogin: true, + loadingLogin: false, databaseError: null, accessError: null, searchResults: [], diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index e91e961b8c..28ad32d664 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -2334,7 +2334,7 @@ data: "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, "smtpServer" : { }, - "loginTheme" : "keycloak", + "loginTheme" : "keycloak.v2", "accountTheme" : "", "adminTheme" : "", "emailTheme" : "", -- GitLab From 0c4c35ce1d3e41bfb80e5d1c44c8b15edc861124 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 17:35:24 +0100 Subject: [PATCH 50/52] Fixed the view create bug Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../target/create-event-listener.jar | Bin 10140 -> 10139 bytes dbrepo-ui/components/TimeDrift.vue | 44 ------------------ dbrepo-ui/components/subset/Builder.vue | 31 +++++++----- dbrepo-ui/components/subset/Results.vue | 17 ------- dbrepo-ui/composables/database-service.ts | 21 --------- dbrepo-ui/composables/query-service.ts | 6 +-- dbrepo-ui/nuxt.config.ts | 6 +++ .../[database_id]/view/[view_id]/data.vue | 5 +- 8 files changed, 29 insertions(+), 101 deletions(-) delete mode 100644 dbrepo-ui/components/TimeDrift.vue diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index 76b1ad02357c308cc312c99ea8bf0e3c3b2e8b62..26cb91c37666c966f6382d35feaaf9f5da5c7f8c 100644 GIT binary patch delta 970 zcmbQ^Kigk8z?+#xgn@yBgP|bYHA*%wO}c2Juwwn`yu%6td!j$te_(c)Y*F?oda~TD z75tjDcdl>93&@c<cq{YYz9X5jrmJqrHMGi>wMD)=FiXhxqj<?Z6SH*XLP2-$c83)| zA5GY7{o=wV@8xF8oR6z1St^OGU1<{kQn&ujLaytZEUes?nQ&=@Jo0bTIx|yG=A9Iu zZtf2E>yoX{>rXUR-<fXbA9Z)foV8-T-`7}dFwH9C6>&HJy6%va?%%WJY=7M}mf1h~ zfAZ&^eP?gBWjrs|{Qi5d!BX)n?|7pay%;=`z1io*tX@(2;;HAnp2Z0zQqx3B3_ipr zCLZ8xpD)XK&90*Ejl;PG*D^1?f4`9L{9e;-wXeT3+lel0ubK0)p8w6_RX;av6chbg zx&GCks{!^)cs?)FZOO{od9-<z)D6By4$qap_8-{DJ?rq{%2b<$uH{;Lj-8v6VVd$% z<n)?3=Z-Dj*=FK6M}6|iJu{{X^KQ=RIq9Qbu<QGqRr=5CE-Rc=JY`kU@y^>@Uxnk> z1)-jv#pR%g;9_9lU;stL<V}n!O!?uHZ!qdH6@*XbV3G$>noMdSDv(JVMAb2wf~c)b z-XN7s%;!MVCFUNcg7D1=EOVJa^nbQb93c8L|1?36;%>#+AWB1N3MV|eCm&U^WGV=s zq%6a@WU{QXgnWLuYZL<#5Q4J>7~VRbo*bgAXbjQ~7iM5!V1{!*YJM{^FeH}f2Y53w zi7>-FHF<@yjEoEuSf-@3JTo;9UBLro873E|$%#zDJSZAvRb&_oCpW6dXrr2l>P&qU zC#;y<sA2~Sk%KBSj9(|;Q!xko%jY-CDm?}U1|0?l1}C@%28Jb#M<<)81}cF3_5V}z zZhs~QhHI=03`Qtwf>|aPu$WA~smcRZ7%=hHj{_VG41EF&3}Pq>Ke0{bXP1~PtHuKg zZf!Lgrf2+<3s}@A7pNI9&Y8SW%@rj6LQRILPH}P{ll0^VOk$JIDDpu)h{%w_9wFzF Z85kHgGB7X*qgWw5xj<cwZM_mm5CHh2L9PG* delta 1017 zcmbR3KgVA<z?+#xgn@yBgW-m;YZM1_=Z4~m!ix0=gPIKl_8K3yf5JYgL1FEk9NUcL zuY9)No4(<Ok7CKB)?53{mv$u|59IeWyE(m9KfjpYE&N5t{spDGOf9=zMc9hF9U?y6 zR80SVVR7R1u-uaVX{t)LN@;V~dGFKM{wK5jRQ&9ggNB!;hB@pLs=pSJeD2htN9&$m zxY%aBWp7wTU%kvu{kBWbJ%hKIrFTcZmeJ<RX;t0L%GJC(Ej+oo?cX!&<~n7O>Gn_l zpWGRzTf9y2*3Otyf9v#1p0boy_qsI*IRwo<)uen|^OcTO<s|jP2c+lzOl7p~sWFep zFnIhh-F?s2{yur@3C0<xbY#ErU-<D{Z|lo@ZGSt?x4c)}KjT9^|C`BKKlYfiiSkx1 zpY<p7vcZxspO<O3WJ&Kl+Po_IMqlFx&y{Wa4{ZEC>+j*pwXzExtF`tVikqKdxb_s+ zri@ufJf)6C3aWaV?Cn~-#-Wt+vc+6A;i)dmtFxo)Ex*rZ^Arm-yXU+mK8j5-?n1j* zeu~5%W>8FUF)(m2Fx)Vnyn#`b>ALac>x_C#H;gB<Gs%M}4JI`Z6~LqoqH38;LDUu| zZ;(nx=5rwGB6APZ4dc!6EOVJa^gp&w93c7=|1?36;x5J6AWB_n3MV|eCm&I=1PT6E zl3`prSw>kx;kvPF6ax|vg0lq}-a4LPocxekWO9ZwPd3O5xEuom12dchQuv3Ffg!O( zKfs%jNrV~ZGgOngP&CLgfi;wrmS?8sq3N4^Us;CHb@Cr&IgndrRAd;7CO4?aXyY?o zAI0>QlN(g*Kw)%1MTY4c(_}$rt;rm!JYe7Y{AO9D$H2g#!@$7c1lPsDu%z)A^W=xj zE|V)%c@#jt{r{<Xw?7jD!!=e01|t-OAuN;gSxhG1fGP}_c<aXj4hDuk0R{#!6osGJ zCiAgNOqNmO0r^BrO@`??|KxlY^~w2a28?qjFHmy@+q8S#gCvksK-d<=fO^Hr3)M^~ mpI799`W}&gg*`&fB{MKEY-C_y5Ju4?GdW*fjctPxNDu(oN==ji diff --git a/dbrepo-ui/components/TimeDrift.vue b/dbrepo-ui/components/TimeDrift.vue deleted file mode 100644 index 2f2555f9f8..0000000000 --- a/dbrepo-ui/components/TimeDrift.vue +++ /dev/null @@ -1,44 +0,0 @@ -<template> - <v-alert - v-cloak - v-if="timestamp && offSeconds > 3" - class="banner" - border="start" - type="warning"> - {{ $t('error.data.drift') + ' ' + offSeconds + 's' }} - </v-alert> -</template> - -<script> -import { formatTimestamp, timestampsToHumanDifference } from '@/utils' - -export default { - data () { - return { - timestamp: null - } - }, - computed: { - drift () { - return this.timestampsToHumanDifference(Date.now(), this.timestamp) - }, - offSeconds () { - if (!this.timestamp) { - return null - } - return (Date.now().valueOf() - Date.parse(this.timestamp)) / 1000 - } - }, - mounted() { - const databaseService = useDatabaseService() - databaseService.getServerTime() - .then((timestamp) => { - this.timestamp = timestamp - }) - }, - methods: { - formatTimestamp, - timestampsToHumanDifference - } -} -</script> diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index f19c595aad..f670700f2f 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -31,14 +31,12 @@ :text="$t('pages.subset.subpages.create.expert.text')" /> </v-tabs> </v-toolbar> - <TimeDrift /> <v-card rounded="0" variant="flat"> <v-card-text> <v-form ref="form" - v-model="valid" @submit.prevent> <v-row v-if="isView" @@ -304,7 +302,6 @@ </template> <script> -import TimeDrift from '@/components/TimeDrift.vue' import Raw from '@/components/subset/Raw.vue' import Results from '@/components/subset/Results.vue' import { useCacheStore } from '@/stores/cache.js' @@ -314,7 +311,6 @@ export default { components: { Raw, Results, - TimeDrift }, props: { mode: { @@ -468,7 +464,7 @@ export default { if (!this.table) { return } - this.fetchTableColumns(this.table.id) + this.fetchTableColumns(this.table?.id) } }, mounted () { @@ -545,13 +541,24 @@ export default { this.view.query = this.sql const viewService = useViewService() viewService.create(this.$route.params.database_id, this.view) - .then(async (view) => { - this.resultId = view.id - this.cacheStore.reloadDatabase() - const toast = useToastInstance() - toast.success(this.$t('success.view.create')) - await this.$router.push(`/database/${this.$route.params.database_id}/view/${view.id}/data`) - this.loadingQuery = false + .then((simpleView) => { + this.resultId = simpleView.id + viewService.findOne(this.$route.params.database_id, simpleView.id) + .then(async (view) => { + this.cacheStore.setView(view) + const toast = useToastInstance() + toast.success(this.$t('success.view.create')) + await this.$router.push(`/database/${this.$route.params.database_id}/view/${view.id}/data`) + this.loadingQuery = false + }) + .catch(({code}) => { + this.loadingQuery = false + const toast = useToastInstance() + if (typeof code !== 'string') { + return + } + toast.error(this.$t(code)) + }) }) .catch(({code}) => { this.loadingQuery = false diff --git a/dbrepo-ui/components/subset/Results.vue b/dbrepo-ui/components/subset/Results.vue index 3948667518..661c7d1a3d 100644 --- a/dbrepo-ui/components/subset/Results.vue +++ b/dbrepo-ui/components/subset/Results.vue @@ -80,23 +80,6 @@ export default { } }, methods: { - executeFirstTime (parent, sql, timestamp) { - this.loading++ - const payload = { - statement: sql, - timestamp - } - const queryService = useQueryService() - queryService.execute(this.$route.params.database_id, payload, this.options.page - 1, this.options.itemsPerPage) - .then((result) => { - this.mapResults(result) - parent.resultId = result.id - this.id = result.id - }) - .finally(() => { - this.loading-- - }) - }, reExecute (id) { if (id === null) { return diff --git a/dbrepo-ui/composables/database-service.ts b/dbrepo-ui/composables/database-service.ts index 7956f7b4df..f318e07305 100644 --- a/dbrepo-ui/composables/database-service.ts +++ b/dbrepo-ui/composables/database-service.ts @@ -66,23 +66,6 @@ export const useDatabaseService = (): any => { }); } - async function getServerTime(): Promise<Date> { - const axios = useAxiosInstance(); - console.debug('find server time'); - return new Promise<Date>((resolve, reject) => { - axios.head<Date>('/api/database') - .then((response) => { - const date: Date = new Date(response.headers['Date']) - console.info(`Found ${date} server time`); - resolve(date); - }) - .catch((error) => { - console.error('Failed to find server time', error); - reject(axiosErrorToApiError(error)); - }); - }); - } - async function findOne(id: number, rawError: boolean = false): Promise<DatabaseDto | null> { const axios = useAxiosInstance(); console.debug('find database with id', id); @@ -239,16 +222,12 @@ export const useDatabaseService = (): any => { refreshTablesMetadata, refreshViewsMetadata, findOne, - findPreviewImage, - findCount, - getServerTime, updateVisibility, updateImage, updateOwner, create, databaseToOwner, databaseToContact, - databaseToJsonLd, isOwner } } diff --git a/dbrepo-ui/composables/query-service.ts b/dbrepo-ui/composables/query-service.ts index 119915de27..e314993ecd 100644 --- a/dbrepo-ui/composables/query-service.ts +++ b/dbrepo-ui/composables/query-service.ts @@ -161,12 +161,12 @@ export const useQueryService = (): any => { } } sql += ` \`${clause.params[0]}\` ${clause.params[1]} ` - const filteredType = types.filter(t => t.value === filteredColumn[0].column_type) + const filteredType = types.filter(t => t.value === filteredColumn[0].type) if (filteredType.length === 0) { return { error: true, reason: 'exists', - column: filteredColumn[0].column_type, + column: filteredColumn[0].type, raw: null, formatted: null } @@ -175,7 +175,7 @@ export const useQueryService = (): any => { return { error: true, reason: 'build', - column: filteredColumn[0].column_type, + column: filteredColumn[0].type, raw: null, formatted: null } diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index 31e20b310d..b3da7bd98c 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -16,6 +16,12 @@ if (process.env.NODE_ENV === 'development') { } process.env.VERSION = 'bun-dev' process.env.NUXT_PUBLIC_API_SERVER = api + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_AUTHORIZATION_URL = api + '/realms/dbrepo/protocol/openid-connect/auth' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_REDIRECT_URI = api + ':3001' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_LOGOUT_URL = api + '/realms/dbrepo/protocol/openid-connect/logout' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_REDIRECT_URI = api + ':3001/auth/keycloak/callback' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_TOKEN_URL = api + '/realms/dbrepo/protocol/openid-connect/token' + process.env.NUXT_OIDC_PROVIDERS_KEYCLOAK_USER_INFO_URL = api + '/realms/dbrepo/protocol/openid-connect/userinfo' } /** 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 2b0936cba5..f732661f36 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 @@ -22,7 +22,6 @@ :loading="loadingData" @click="reload" /> </v-toolbar> - <TimeDrift /> <v-card tile> <QueryResults id="query-results" @@ -35,13 +34,11 @@ </template> <script> -import TimeDrift from '@/components/TimeDrift.vue' import QueryResults from '@/components/subset/Results.vue' export default { components: { - QueryResults, - TimeDrift + QueryResults }, data () { return { -- GitLab From 792919d33cd7c610af163ad85d4a644d4b6c6d4a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 17:37:02 +0100 Subject: [PATCH 51/52] Changed the version Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .docs/changelog.md | 2 +- .gitlab/agents/dev/values.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.docs/changelog.md b/.docs/changelog.md index 7268fd522c..efdb4dd291 100644 --- a/.docs/changelog.md +++ b/.docs/changelog.md @@ -2,7 +2,7 @@ author: Martin Weise --- -## v1.6.3 (2025-01-27) +## v1.6.3 (2025-02-05) [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.3) diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml index 4cc98e3dc0..5841a5e97b 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.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3 persistence: enabled: true @@ -71,12 +71,12 @@ searchdb: analyseservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3 metadataservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3 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.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3 rabbitmq: consumer: username: admin @@ -106,16 +106,16 @@ dataservice: searchservice: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3 init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3 storageservice: enabled: true init: image: - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3rc7 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3 uploadservice: enabled: true @@ -132,7 +132,7 @@ metricdb: ui: enabled: true image: - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3rc9 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3 public: api: client: https://s155.datalab.tuwien.ac.at -- GitLab From ff34c552086ea1bcc1d4d97d8338cda6de11e378 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 5 Feb 2025 18:43:19 +0100 Subject: [PATCH 52/52] Refactored the TimeDrift component Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- .../pages/database/[database_id]/table/[table_id]/data.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 efdc20609b..13ee3951c8 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 @@ -53,7 +53,6 @@ class="ml-2 mr-2" @click.stop="pick" /> </v-toolbar> - <TimeDrift /> <v-card v-if="error" variant="flat"> @@ -111,7 +110,6 @@ const { loggedIn } = useOidcAuth() </script> <script> import TableHistory from '@/components/table/TableHistory.vue' -import TimeDrift from '@/components/TimeDrift.vue' import TableToolbar from '@/components/table/TableToolbar.vue' import { formatTimestamp } from '@/utils' import { useCacheStore } from '@/stores/cache.js' @@ -125,8 +123,7 @@ export default { BlobDownload, EditTuple, TableHistory, - TableToolbar, - TimeDrift + TableToolbar }, data () { return { -- GitLab